D2
Администратор
- Регистрация
- 19 Фев 2025
- Сообщения
- 4,380
- Реакции
- 0
Оглавление
Введение
Часть 0. Базовое программное обеспечение.
Часть 1. Сетевые интерфейсы
Часть 2. Настройка tor
Часть 3. Настройка редиректа трафика
Часть 4. Автоматизация
Часть 5. Как подрубиться к шлюзу с клиента
Часть 6. Заключение
Введение
Наверняка каждый из вас слышал про сборку Whonix. А также наверняка вас посещали мысли о том, что это потенциальный хонипот.
Вот и меня, пока я читал очередной тред в анонимности, посетила такая мысль. Ведь это действительно удобно создать инструмент для блэчеров и сидеть мониторить их. Но что нам мешает создать свой хуникс-гейт? По сути ничего.
Ведь всё что делает хуникс гейт так это берёт трафик с одного интерфейса и перенаправляет в тор через другой. Больше ничего волшебного по сути не происходит. В целом не сложно сообразить как это сделать, имея базовые знания в администрировании юникс систем.
Так давайте сделаем свой, чтобы не паранойить лишний раз.
Часть 0. Базовое программное обеспечение.
В качестве базы возьмем Debian 12. Давайте еще не будем разводить холивар, что дебиан в теории тоже может быть протрояненным (там же системудэ
) и что мы всё равно не смотрим его сорсы.
Просто скачайте дебиан 12 с офф сайта, проверьте хэш суммы и установить на виртуалку
Не ставьте никакое оконное окружение. Максимум - доставьте ssh. Оконное окружение нам не пригодится, так как эта система будет выступать в качестве роутера.
А написать пару команд для поднятия тора, я думаю Вы в силах.
Установили и запустили дебиан? - Отлично. Логинемся под рутом (так будет проще и быстрее, однако Вы можете проводить все манипуляции под отдельно созданным пользователем при установке, добавив его в группу судо).
Для начала обновите репы:
Поставим необходимый минимум:
Внесу некоторые комментарии по поводу необходимого минимума:
1) tor - сервис тора. Мы поднимем прокси на локалке и будем туда отправлять трафик
2) net-tools - мне просто в кайф писать ifconfig вместо ip a
3) iptables - пакет, дающий нам возможность внести сетевые правила. Он у нас и будет заниматься редиректом трафика.
4) vim - текстовый редактор. По желанию само собой. Можете nano использовать, можете vi, что удобнее.
Часть 1. Сетевые интерфейсы
Время выключать виртуалку и идти редактировать её хардварную часть.
Вы должны добавить еще два сетевых интерфейса и убрать тот, что был до этого. Один сетевой интерфейс мы будем давать клиентским тачкам. Это и будет нашей изолированной сетью. Другой интерфейс для выхода во внешний мир.
Лично я проворачиваю всё на линуксе и использую связку virt-manager, qemu, kvm. Настройка сетевых интерфейсов будет проходить именно на этом сетапе, но на других сетапах всё плюс-минус тоже самое.
Для начала запустим сети и добавим в автозапуск. # на хостовой машине
Код: Скопировать в буфер обмена
В гуи вирт-менеджера Edit -> Connection details -> Virtual Networks -> нажать на плюсик.
Ввести название, для примера myroute_tor-external. Mode: NAT. Forward: любой физ девайс.
IPv4 configuration:
network: 10.0.3.0/24
dhcpv4 снять галочку
Также нам нужен сетевой интерфейс для наших клиентских тачек.
myroute_tor-internal
Mode: Isolated
Все галочки снимаем.
Вот XML для проверки:
XML: Скопировать в буфер обмена
надо отредактировать до такого состояния.
Там где name у bridge (в xml) поставьте свой по порядку. После создания external сети, напишите ifconfig у себя на хостовой машине и найдите нужный интерфейс с нужной сетью, к нему прибавьте +1. Для удобства.
(сори, что на скрин попал кусок этой статьи, нет возможности перескринить)
Добавьте 2 нетворк интерфейса на гейтвей.
В настройках гейтвея на интерфейсе с external сетью отредактировать XML, если он у вас не совпал с моим. (на мак не обращайте внимание, он при запуске поставится)
Для интернал интерфейса аналогично.
Проверить сетевые интерфейсы можно через (на хостовой машине):
Добавили сетевые интерфейсы на роутер? Отлично. Запускаем шарманку. Всё также логинемся из под рута и проверяем сетевые интерфейсы. Это можно сделать через
Почему-то в ifconfige у меня не отображался интерфейс. Поэтому я тоже воспользуюсь
.
И так, вы можете видеть свои интерфейсы. Как вы можете заметить на нашем роутере нет интернета. А еще у наших интерфейсов нет ip адресов. А всё почему? потому что нет dhcp и нет настроек под наши интерфейсы. Надо настроить интерфейсы вручную.
Запишем имена наших интерфейсов - enp1s0, enp7s0. (у вас могут быть другие)
Открываем в текстовом редакторе /etc/network/interfaces
Редактируем следующим образом:
Код: Скопировать в буфер обмена
Вот скрин конфига сети:
Сохраняем, перезапускаем интерфейсы через
Если вы всё сделали правильно, то введя команду
Если нет интернета, то:
1)
2) tcpdump на vnet*. Например, у меня virbr4 это external. Для него brctl show показывает vnet27. sudo tcpdump -i vnet27. Анализируйте пакеты, правьте ошибки. Если оконфузились в конфиге, то смотрите на ARP пакеты, вы, вероятно, ошиблись в ипе.
Подведем итог первой части. На этом моменте у вас должа быть виртуалка, две виртуальные сети, на виртуалке (роутере) должен работать интернет.
Должны быть правильно сконфигурированы интерфейсы.
Часть 2. Настройка tor
В нулевой части мы поставили тор. Теперь надо его настроить)
Добавьте в /etc/tor/torrc
Код: Скопировать в буфер обмена
Спойлер: Про VirtualAddrNetwork из доки
Проведите дополнительную настройку, если она вам необходима. Например, уберите какие-то страны из выборки.
Если вас всё устраивает -
Конечно хотелось бы понять, за что отвечает каждый порт. Читайте дальше:
22 - ssh. У вас может и не быть, но мне просто удобнее через него администрировать с хостовой машины.
9050 - это дефолтный socks тора. Вы можете в него перенаправить трафик, но только socks. Он не подходит для нашей цели, потому что какое г от нас только не полетит)) Я не выключал его и он доступ только с локалки.
9040 - это transparent proxy. В него можно заливать трафик системы, но ваша система должна поддерживать прозрачные прокси. Винда и большинство дистрибутивов линукса поддерживает это.
53530 - порт для DNS. Тор будет проксировать DNS запросы. На клиенте в качестве DNS сервера указывать будем наш гейт. Т.е клиент будет отсылать запросы на 53 порт нашего гейта, а мы их будем направлять в 10.0.3.15:53530.
Часть 3. Настройка редиректа трафика
Первое, что необходимо сделать - включить редирект трафика с одного интерфейса на другой:
Добавьте эти строчки в файл /etc/sysctl.conf
Код: Скопировать в буфер обмена
Сохраните файл и введите команду:
Должны быть выведены эти строки.
Рекомендую сейчас поставить tcpdump на гейте.
Мы скоро начнем перенаправлять пакеты. Если что-то пойдет не так, то Вы можете посмотреть трафик
Команды для iptables:
Код: Скопировать в буфер обмена
На этом этапе гейт готов принимать пакеты на enp7s0 и направлять их в тор. Также умеет перенаправлять DNS запросы в тор. Уже можно подрубать клиента, но клиента подключать будем в 5 главе.
Часть 4. Автоматизация
Хорошо, мы получили рабочий шлюз. Но при перезапуске гейта многие настройки слетают.
Что нам надо сделать?
А что делать со вторым? Есть способ сохранения настроек iptables через
Но лично у меня iptables-restore почему-то не хотел грузить данные. Вероятно, я делал что-то не так.
Поэтому реализуем скриптик по этому пути: /root/iptables_rules.sh
chmod +x /root/iptables_rules.sh
Bash: Скопировать в буфер обмена
И создадим сервис для systemd.
Заходим в /etc/systemd/system
Создаем сервис iptables_rules.service с таким содержимым:
Код: Скопировать в буфер обмена
Запускаем и добавляем сервис в авторан:
Bash: Скопировать в буфер обмена
Ребутаем тачку и проверяем
Видим наши правила. Всё пашет, как надо.
Часть 5. Как подрубиться к шлюзу с клиента
В вирт-манагере добавляем сетевой интерфейс к машине. Сетевой интерфейс с isolated network. Т.е наш myroute_tor-internal. Запускаемся.
Надеюсь, что в качестве клиентской ОС вы используете что-то с гуи. Если без, то инструкции не будет
Я покажу на примере Debian 12 с XFCE.
Логинемся в юзверя, ищем программку Advanced Network Configuration. Она вроде как по умолчанию с крысой ставится.
Заходим в настройки нашего wired connection.
Там заходим в IPv4 Settings и делаем такие же настройки, как на картинке.
Не забудьте поставить в /etc/resolv.conf наш гейт в качестве DNS сервера.
Содержимое /etc/resolv.conf:
Код: Скопировать в буфер обмена
Для другие десктоп энвайрментов примерно также. Для винды тоже +- также. (если не получается сообразить, то поищите видосы на ютубе, о том как соединить хуникс и винду/кали. Процесс 1 в 1)
Если вы всё-таки используете клиентский линукс без гуи, то настройте руками через /etc/network/interfaces в соответствии с картинкой выше.
Часть 6. Заключение
Мы только что сделали аналог гейтвея whonix. Свой.
В целом это не очень сложный процесс был.
В догонку через iptables можете порезать весь трафик, который идет не в тор с самого гейта. Но я не особо много вижу в этом смысла, потому что тогда становится невозможным обновление ПО на самом гейте. (либо возможно, но через тор, что не очень быстро)
По большей степени статья адресована новичкам, которые не совсем догоняют, как устроен хуникс.
Просьба написать в тред, если Вы видите ошибке в моей статье.
Вместо тора кстати можно использовать любой другой транспарент прокси.
Удачи и до новых встречь.
Всем спасибо за внимание.
Специально для XSS.IS
От D3buG
Введение
Часть 0. Базовое программное обеспечение.
Часть 1. Сетевые интерфейсы
Часть 2. Настройка tor
Часть 3. Настройка редиректа трафика
Часть 4. Автоматизация
Часть 5. Как подрубиться к шлюзу с клиента
Часть 6. Заключение
Введение
Наверняка каждый из вас слышал про сборку Whonix. А также наверняка вас посещали мысли о том, что это потенциальный хонипот.
Вот и меня, пока я читал очередной тред в анонимности, посетила такая мысль. Ведь это действительно удобно создать инструмент для блэчеров и сидеть мониторить их. Но что нам мешает создать свой хуникс-гейт? По сути ничего.
Ведь всё что делает хуникс гейт так это берёт трафик с одного интерфейса и перенаправляет в тор через другой. Больше ничего волшебного по сути не происходит. В целом не сложно сообразить как это сделать, имея базовые знания в администрировании юникс систем.
Так давайте сделаем свой, чтобы не паранойить лишний раз.
Часть 0. Базовое программное обеспечение.
В качестве базы возьмем Debian 12. Давайте еще не будем разводить холивар, что дебиан в теории тоже может быть протрояненным (там же системудэ
Просто скачайте дебиан 12 с офф сайта, проверьте хэш суммы и установить на виртуалку
Не ставьте никакое оконное окружение. Максимум - доставьте ssh. Оконное окружение нам не пригодится, так как эта система будет выступать в качестве роутера.
А написать пару команд для поднятия тора, я думаю Вы в силах.
Установили и запустили дебиан? - Отлично. Логинемся под рутом (так будет проще и быстрее, однако Вы можете проводить все манипуляции под отдельно созданным пользователем при установке, добавив его в группу судо).
Для начала обновите репы:
apt update
Поставим необходимый минимум:
apt install tor net-tools iptables vim -y
Внесу некоторые комментарии по поводу необходимого минимума:
1) tor - сервис тора. Мы поднимем прокси на локалке и будем туда отправлять трафик
2) net-tools - мне просто в кайф писать ifconfig вместо ip a
3) iptables - пакет, дающий нам возможность внести сетевые правила. Он у нас и будет заниматься редиректом трафика.
4) vim - текстовый редактор. По желанию само собой. Можете nano использовать, можете vi, что удобнее.
Часть 1. Сетевые интерфейсы
Время выключать виртуалку и идти редактировать её хардварную часть.
Вы должны добавить еще два сетевых интерфейса и убрать тот, что был до этого. Один сетевой интерфейс мы будем давать клиентским тачкам. Это и будет нашей изолированной сетью. Другой интерфейс для выхода во внешний мир.
Лично я проворачиваю всё на линуксе и использую связку virt-manager, qemu, kvm. Настройка сетевых интерфейсов будет проходить именно на этом сетапе, но на других сетапах всё плюс-минус тоже самое.
Для начала запустим сети и добавим в автозапуск. # на хостовой машине
Код: Скопировать в буфер обмена
Код:
sudo virsh -c qemu:///system net-autostart default
sudo virsh -c qemu"///system net-start default
В гуи вирт-менеджера Edit -> Connection details -> Virtual Networks -> нажать на плюсик.
Ввести название, для примера myroute_tor-external. Mode: NAT. Forward: любой физ девайс.
IPv4 configuration:
network: 10.0.3.0/24
dhcpv4 снять галочку
Также нам нужен сетевой интерфейс для наших клиентских тачек.
myroute_tor-internal
Mode: Isolated
Все галочки снимаем.
Вот XML для проверки:
XML: Скопировать в буфер обмена
Код:
<network>
<name>myroute_tor-internal</name>
<bridge name="virbr5" stp="on" delay="0"/>
<domain name="myroute_tor-internal"/>
</network>
Там где name у bridge (в xml) поставьте свой по порядку. После создания external сети, напишите ifconfig у себя на хостовой машине и найдите нужный интерфейс с нужной сетью, к нему прибавьте +1. Для удобства.
(сори, что на скрин попал кусок этой статьи, нет возможности перескринить)
Добавьте 2 нетворк интерфейса на гейтвей.
В настройках гейтвея на интерфейсе с external сетью отредактировать XML, если он у вас не совпал с моим. (на мак не обращайте внимание, он при запуске поставится)
Для интернал интерфейса аналогично.
Проверить сетевые интерфейсы можно через (на хостовой машине):
sudo brctl show
Добавили сетевые интерфейсы на роутер? Отлично. Запускаем шарманку. Всё также логинемся из под рута и проверяем сетевые интерфейсы. Это можно сделать через
ifconfig
, либо, если вы не ставили net-tools, через ip a
.Почему-то в ifconfige у меня не отображался интерфейс. Поэтому я тоже воспользуюсь
ip a
И так, вы можете видеть свои интерфейсы. Как вы можете заметить на нашем роутере нет интернета. А еще у наших интерфейсов нет ip адресов. А всё почему? потому что нет dhcp и нет настроек под наши интерфейсы. Надо настроить интерфейсы вручную.
Запишем имена наших интерфейсов - enp1s0, enp7s0. (у вас могут быть другие)
Открываем в текстовом редакторе /etc/network/interfaces
Редактируем следующим образом:
Код: Скопировать в буфер обмена
Код:
# default
source /etc/network/interface.d/*
auto lo
iface lo inet loopback
######
# это интерфейс для коммуникаций с внешним миром. Он нам даёт интернетик
auto enp1s0 # включать при буте системы
iface enp1s0 inet static # статичная настройка сети. У нас нет dhcp
address 10.0.3.15
netmask 255.255.255.0
gateway 10.0.3.1
auto enps70 # это интерфейс для нашей изолированной сети.
iface enp7s0 inet static
address 10.152.152.10
netmask 255.255.192.0
Вот скрин конфига сети:
Сохраняем, перезапускаем интерфейсы через
systemctl restart networking
Если вы всё сделали правильно, то введя команду
ip a
, вы должны увидеть ipы на сетевых интерфейсах. Также должен появиться интернет.Если нет интернета, то:
1)
systemctl status networking
(исправьте ошибку, если есть. Вероятно, могли оконфузиться в конфиге)2) tcpdump на vnet*. Например, у меня virbr4 это external. Для него brctl show показывает vnet27. sudo tcpdump -i vnet27. Анализируйте пакеты, правьте ошибки. Если оконфузились в конфиге, то смотрите на ARP пакеты, вы, вероятно, ошиблись в ипе.
Подведем итог первой части. На этом моменте у вас должа быть виртуалка, две виртуальные сети, на виртуалке (роутере) должен работать интернет.
Должны быть правильно сконфигурированы интерфейсы.
Часть 2. Настройка tor
В нулевой части мы поставили тор. Теперь надо его настроить)
Добавьте в /etc/tor/torrc
Код: Скопировать в буфер обмена
Код:
VirtualAddrNetwork 10.192.0.0/10 # это не трогаем. Исходя из документации нужно ставить именно такую маску
AutomapHostsOnResolve 1
DNSPort 10.0.3.15:53530 # заменить ip если у вас другой
TransPort 10.0.3.15:9040 # заменить ip если у вас другой
Спойлер: Про VirtualAddrNetwork из доки
When providing proxy server service to a network of computers using a tool like dns-proxy-tor, change the IPv4 network to "10.192.0.0/10" or "172.16.0.0/12" and change the IPv6 network to "[FC00::]/7".
Нажмите, чтобы раскрыть...
Проведите дополнительную настройку, если она вам необходима. Например, уберите какие-то страны из выборки.
Если вас всё устраивает -
systemctl start tor
.systemctl status tor
должен показать, что всё ок.netstat -tulpn
должен показать примерно такое:Конечно хотелось бы понять, за что отвечает каждый порт. Читайте дальше:
22 - ssh. У вас может и не быть, но мне просто удобнее через него администрировать с хостовой машины.
9050 - это дефолтный socks тора. Вы можете в него перенаправить трафик, но только socks. Он не подходит для нашей цели, потому что какое г от нас только не полетит)) Я не выключал его и он доступ только с локалки.
9040 - это transparent proxy. В него можно заливать трафик системы, но ваша система должна поддерживать прозрачные прокси. Винда и большинство дистрибутивов линукса поддерживает это.
53530 - порт для DNS. Тор будет проксировать DNS запросы. На клиенте в качестве DNS сервера указывать будем наш гейт. Т.е клиент будет отсылать запросы на 53 порт нашего гейта, а мы их будем направлять в 10.0.3.15:53530.
Часть 3. Настройка редиректа трафика
Первое, что необходимо сделать - включить редирект трафика с одного интерфейса на другой:
Добавьте эти строчки в файл /etc/sysctl.conf
Код: Скопировать в буфер обмена
Код:
net.ipv4.ip_forward = 1
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.enp1s0.rp_filter = 0
net.ipv4.conf.enp7s0.rp_filter = 0
sysctl -p
Должны быть выведены эти строки.
Рекомендую сейчас поставить tcpdump на гейте.
Мы скоро начнем перенаправлять пакеты. Если что-то пойдет не так, то Вы можете посмотреть трафик
Команды для iptables:
Код: Скопировать в буфер обмена
Код:
iptables -P FORWARD ACCEPT
iptables -t nat -A PREROUTING -i enp7s0 -p tcp -j DNAT --to-destination 10.0.3.15:9040
iptables -t nat -A PREROUTING -i enp7s0 -p udp --dport 53 -j DNAT --to-destination 10.0.3.15:53530
На этом этапе гейт готов принимать пакеты на enp7s0 и направлять их в тор. Также умеет перенаправлять DNS запросы в тор. Уже можно подрубать клиента, но клиента подключать будем в 5 главе.
Часть 4. Автоматизация
Хорошо, мы получили рабочий шлюз. Но при перезапуске гейта многие настройки слетают.
Что нам надо сделать?
- Включить службу тора в авторан
- Подтянуть настройки iptables
systemctl enable tor
.А что делать со вторым? Есть способ сохранения настроек iptables через
iptables-save
и загрузки через iptables-restore
.Но лично у меня iptables-restore почему-то не хотел грузить данные. Вероятно, я делал что-то не так.
Поэтому реализуем скриптик по этому пути: /root/iptables_rules.sh
chmod +x /root/iptables_rules.sh
Bash: Скопировать в буфер обмена
Код:
#!/bin/bash
iptables -P FORWARD ACCEPT
iptables -t nat -A PREROUTING -i enp7s0 -p tcp -j DNAT --to-destination 10.0.3.15:9040
iptables -t nat -A PREROUTING -i enp7s0 -p udp --dport 53 -j DNAT --to-destination 10.0.3.15:53530
И создадим сервис для systemd.
Заходим в /etc/systemd/system
Создаем сервис iptables_rules.service с таким содержимым:
Код: Скопировать в буфер обмена
Код:
[Unit]
Description=Autorun iptables
[Service]
ExecStart=/root/iptables_rules.sh
[Install]
WantedBy=multi-user.target
Запускаем и добавляем сервис в авторан:
Bash: Скопировать в буфер обмена
Код:
systemctl start iptables_rules
systemctl enable iptables_rules
Ребутаем тачку и проверяем
iptables -t nat -S
Видим наши правила. Всё пашет, как надо.
Часть 5. Как подрубиться к шлюзу с клиента
В вирт-манагере добавляем сетевой интерфейс к машине. Сетевой интерфейс с isolated network. Т.е наш myroute_tor-internal. Запускаемся.
Надеюсь, что в качестве клиентской ОС вы используете что-то с гуи. Если без, то инструкции не будет
Я покажу на примере Debian 12 с XFCE.
Логинемся в юзверя, ищем программку Advanced Network Configuration. Она вроде как по умолчанию с крысой ставится.
Заходим в настройки нашего wired connection.
Там заходим в IPv4 Settings и делаем такие же настройки, как на картинке.
Не забудьте поставить в /etc/resolv.conf наш гейт в качестве DNS сервера.
Содержимое /etc/resolv.conf:
Код: Скопировать в буфер обмена
nameserver 10.152.152.10
Для другие десктоп энвайрментов примерно также. Для винды тоже +- также. (если не получается сообразить, то поищите видосы на ютубе, о том как соединить хуникс и винду/кали. Процесс 1 в 1)
Если вы всё-таки используете клиентский линукс без гуи, то настройте руками через /etc/network/interfaces в соответствии с картинкой выше.
Часть 6. Заключение
Мы только что сделали аналог гейтвея whonix. Свой.
В целом это не очень сложный процесс был.
В догонку через iptables можете порезать весь трафик, который идет не в тор с самого гейта. Но я не особо много вижу в этом смысла, потому что тогда становится невозможным обновление ПО на самом гейте. (либо возможно, но через тор, что не очень быстро)
По большей степени статья адресована новичкам, которые не совсем догоняют, как устроен хуникс.
Просьба написать в тред, если Вы видите ошибке в моей статье.
Вместо тора кстати можно использовать любой другой транспарент прокси.
Удачи и до новых встречь.
Всем спасибо за внимание.
Специально для XSS.IS
От D3buG