ДАВАЙ ОБЩАТЬСЯ В "ИРКЕ"
Благодарность за помощь выражаю своему коллеге - @secur30nly
Чтобы обеспечить анонимную связь через протокол IRC необходимо выполнить ряд шагов.
Для начала поднимаем на облаке виртуальную машину (Debian):
cloud.yandex.ru - в качестве теста, можно использовать облако Яндекса.
В разделе Сервисы выбираем пункт Compute Cloud
Задаем параметры виртуальной машины как на скриншотах ниже:
Теперь необходимо сгенерировать пару ключей, и публичный ключик вставить в запрашиваемое поле:
ssh-keygen -t rsa
Теперь в директории .shh появилась пара ключей:
Открываем на просмотр публичный ключ и вставляем в запрашиваемое поле:
cat yandex_cloud_irc.pub
После запуска VM, подключаемся к ней по ssh, используя выданный адрес:
ssh [email protected] -i yandex_cloud_irc
Обновляем ОС на виртуальной машине, которая должна быть поднята на облаке:
sudo apt update
Далее на этой же машине разворачиваем серверную часть ПО, которое будет позволять общаться клиентам:
sudo apt-get install inspircd
Устанавливаем фаервол и даем доступы на порты подключения для администрирования и использования сервиса обмена сообщениями:
sudo apt install ufw ufw allow 22/tcp ufw allow <irc server port>/tcp ufw enable
Настраиваем SSL чтобы пересылаемые сообщения не были в открытом виде показаны при сниффинге трафика:
Устанавливаем несколько необходимых зависимостей:
sudo apt install gnutls-bin libcurl3-gnutls libneon27-gnutls
Создаем папку ssl по пути - /etc/inspircd/ssl
Теперь в этой папке генерируем приватный ключ для СА:
openssl genrsa 2048 > ca-key.pem
Генерируем Х509 сертификат для СА:
openssl req -new -x509 -nodes -days 365000 \\ -key ca-key.pem \\ -out ca-cert.pem
Создаем сертификат и ключ для сервера и для этого мы должны сгенерировать закрытый ключ и запрос на сертификат:
openssl req -newkey rsa:2048 -nodes -days 365000 \\ -keyout server-key.pem \\ -out server-req.pem
Далее сгенерировать сертификат X509 для сервера:
openssl x509 -req -days 365000 -set_serial 01 \\ -in server-req.pem \\ -out server-cert.pem \\ -CA ca-cert.pem \\ -CAkey ca-key.pem
Генерируем DHParams - это некий секретный ключ, который генерируется в системе для криптографических целей:
openssl dhparam -out dhparams.pem 2048
Устанавливаем полные привилегии на файлы в папке ssl:
chmod 777 ssl/*
Добавляем пул параметров в конфигурационный файл - /etc/inspircd/inspircd.conf:
<bind address="0.0.0.0" port="63238" type="clients" ssl="gnutls"> <gnutls cafile="/etc/inspircd/ssl/ca-cert.pem" certfile="/etc/inspircd/ssl/server-cert.pem" dhfile="/etc/inspircd/ssl/dhparams.pem" keyfile="/etc/inspircd/ssl/server-key.pem" priority="SECURE192:-VERS-SSL3.0"> <module name="m_ssl_gnutls.so">
Изначальный файл конфигурации, где я подсветил изменненные поля комментарием "# changed place":
# This is just a more or less working example configuration file, please # customize it for your needs! # # Once more: Please see the examples in /usr/share/doc/inspircd/examples/ <server name="irc.local" description="Local IRC Server" network="Localnet"> **<admin name="Mister X" # changed place nick="X" # changed place email="[email protected]"> # changed place <bind address="0.0.0.0" port="63238" type="clients">** # changed place <power diepass="3456" restartpass="7890" pause="2"> # changed place <connect allow="*" timeout="60" # changed place flood="20" threshold="1" pingfreq="1200" sendq="262144" recvq="8192" localmax="3" globalmax="3"> <class name="Shutdown" commands="DIE RESTART REHASH LOADMODULE UNLOADMODULE RELOAD"> <class name="ServerLink" commands="CONNECT SQUIT RCONNECT MKPASSWD MKSHA256"> <class name="BanControl" commands="KILL GLINE KLINE ZLINE QLINE ELINE"> <class name="OperChat" commands="WALLOPS GLOBOPS SETIDLE SPYLIST SPYNAMES"> <class name="HostCloak" commands="SETHOST SETIDENT SETNAME CHGHOST CHGIDENT"> <type name="NetAdmin" classes="OperChat BanControl HostCloak Shutdown ServerLink" host="netadmin.omega.org.za"> <type name="GlobalOp" classes="OperChat BanControl HostCloak ServerLink" host="ircop.omega.org.za"> <type name="Helper" classes="HostCloak" host="helper.omega.org.za"> **<type name="PON" # changed place classes="OperChat BanControl HostCloak ServerLink" host="trash">** **<oper name="root" password="Ivp99tPdP7" # changed place host="*@localhost" type="NetAdmin"> <oper name="egor" # changed place password="uCII6RLf8" # changed place host="*@*" # changed place type="PON"> # changed place <oper name="ruslan" # changed place password="8IIsIMIC" # changed place host="*@*" # changed place type="PON">** # changed place <files motd="/etc/inspircd/inspircd.motd" rules="/etc/inspircd/inspircd.rules"> <channels users="20" opers="60"> **<dns server="8.8.8.8" timeout="5">** # changed place <pid file="/var/run/inspircd/inspircd.pid"> <options prefixquit="Quit: " noservices="no" qaprefixes="no" deprotectself="no" deprotectothers="no" flatlinks="no" hideulines="no" syntaxhints="no" cyclehosts="yes" ircumsgprefix="no" announcets="yes" disablehmac="no" hostintopic="yes" quietbursts="yes" pingwarning="15" allowhalfop="yes" exemptchanops=""> <security hidewhois="" userstats="Pu" customversion="" hidesplits="no" hidebans="no" operspywhois="no" hidemodes="eI" maxtargets="20"> <performance nouserdns="no" maxwho="128" softlimit="1024" somaxconn="128" netbuffersize="10240"> <whowas groupsize="30" maxgroups="100000" maxkeep="3d"> <timesync enable="no" master="no"> <badnick nick="ChanServ" reason="Reserved For Services"> <badnick nick="NickServ" reason="Reserved For Services"> <badnick nick="OperServ" reason="Reserved For Services"> <badnick nick="MemoServ" reason="Reserved For Services">
systemctl restart inspircd.service
Теперь на клиентской машине устанавливаем и запускаем любое приложение для irc, например weechat:
Первым делом добавляем алиас серверу для простоты обращения:
/server add <alias name> <server address>/<server port> -ssl
Попутно отключаем верификацию сертификатов:
/set irc.server.<alias server name>.ssl_verify off
Подключаемся к серверу командой:
/connect <alias name>
Подключаемся под пользователем из файла с конфигурацией:
/oper user pass
Создаем канал для общения или этой же командой заходим в него:
/join #new_chat (or existing chat)
Начинаем обмениваться сообщениями и проверяем трафик, который теперь пошифрован:
Еще больше интересных статей в моем ТГ канале: https://t.me/pro_pentest