ДАВАЙ ОБЩАТЬСЯ В "ИРКЕ"
Благодарность за помощь выражаю своему коллеге - @secur30nly
Чтобы обеспечить анонимную связь через протокол IRC необходимо выполнить ряд шагов.
Для начала поднимаем на облаке виртуальную машину (Debian):
cloud.yandex.ru - в качестве теста, можно использовать облако Яндекса.
В разделе Сервисы выбираем пункт Compute Cloud
Задаем параметры виртуальной машины как на скриншотах ниже:
Теперь необходимо сгенерировать пару ключей, и публичный ключик вставить в запрашиваемое поле:
ssh-keygen -t rsa
Теперь в директории .shh появилась пара ключей:
Открываем на просмотр публичный ключ и вставляем в запрашиваемое поле:
cat yandex_cloud_irc.pub
После запуска VM, подключаемся к ней по ssh, используя выданный адрес:
ssh root@71.48.14.22 -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="example@example.pon"> # 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