Как добиться 100% анонимности на главной странице whoer.net
Содержание:
obfsproxy
Важно! Версии.
Чуть подробнее:
- —data-dir statepath — каталог для размещения временных данных. Необходим, если obfsproxy работает не в managed режиме.
-
transport — выбирает метод обфускации трафика и режим его передачи. Нас интересуют следующие транспорты:
- scramblesuit — сравнительно новый метод, который мы и будем использовать.
- dummy — отладочный метод, при котором трафик передаётся как есть, без обфускации.
-
mode — выбирает режим работы прокси. Нас интересуют следующие режимы:
- server — принимает клиентские соединения, деобфусцирует и перенаправляет на адрес destination. Этот режим пригодится на стороне сервера.
- client — прозрачное проксирование: принимает данные, обфусцирует и отправляет серверу по адресу destination. То, что мы будем использовать на клиентской стороне.
- socks — имитация socks-прокси.
Разница между режимами client и socks в том, что в первом случае адрес удаленного хоста, к которому пытается подключиться целевое приложение, должен быть заменен на адрес opbfsproxy-клиента, тогда как во втором случае целевое приложение использует obfsproxy как SOCKS-прокси. Для наших целей подойдёт и client.
- —dest destination — для сервера: задаёт пару адрес-порт, куда будут перенаправляться деобфусцированные соединения. Для клиента: задаёт адрес obfsproxy сервера.
- —password BASE32PASS — задание ключа(pre-shared key) для метода scramblesuit. Ключ должен быть строкой длиной не менее 20 символов, закодированной в base32, и совпадать на клиенте и на сервере. Подходящий ключ можно сгенерировать так:
- —password-file filepath — альтернативный метод задания ключа для метода scramblesuit, на случай если вы не хотите писать pre-shared key в открытом виде.
-
log_options включает в себя следующие ключи:
- —log-file path — задает расположение журнала.
- —log-min-severity level — События какого уровня (debug, info, warning, error) записывать.
- —no-safe-logging — по умолчанию obfsproxy вырезает адреса из лога, но данный ключ позволяет изменить это поведение.
- —no-log — отключает ведение журнала совсем (по умолчанию).
Архитектура проекта
Исходя из требований, мы приступили к разработке. В нашем представлении утилита состоит из 3 частей: клиент на внутренней машине, DNS-сервер и небольшой прокси между приложением пентестера и DNS-сервером.
Для начала мы решили пробросить туннель через TXT-записи.
Принцип работы довольно прост:
- Пентестер запускает DNS-сервер.
- Пентестер (или пользователь, через социальную инженерию) запускает клиента на внутренней машине. На клиенте присутствуют такие параметры, как имя клиента и домен, а также есть возможность прямого указания IP-адреса DNS-сервера.
- Пентестер (из внешней сети) запускает прокси, где указывает IP-адрес DNS-сервера, а также порт, куда стучаться, IP-цели (например ssh во внутренней сети, где сидит клиент) и, соответственно, порт цели. Также необходим ID клиента, который можно получить, добавив ключ .
- Пентестер запускает интересующее его приложение, указывая порт прокси на localhost.
Предыстория
Всё началось во время внутреннего пентеста одного банка. В холле находился общедоступный компьютер, используемый для печати документов, справок и прочих бумаг. Наша цель: получить наибольшую выгоду от машины, которая была под управлением системы Windows 7, на борту имела “Антивирус Касперского” и разрешала заходить только на определенные страницы (но при этом была возможность резолва DNS имен).
Проведя первичный анализ и получив дополнительные данные из тачки, мы выработали несколько векторов атаки. Пути с эксплуатацией машины при помощи бинарных программ были сразу убраны в сторону, так как “великий и ужасный” “Касперский” при обнаружении исполняемого файла сразу же его тёр. Однако нам удалось получить возможность запускать скрипты от имени локального администратора, после чего одной из идей стала как раз возможность создания DNS-туннеля.
Поискав возможные способы, мы нашли клиент на PowerShell для dnscat2 (о нем мы писали ранее). Но в итоге максимум, что нам удавалось произвести, это установить соединение на небольшое время, после чего клиент падал.
Это нас, мягко говоря, сильно расстроило, так как в данной ситуации наличие интерпретируемого клиента было просто необходимо. Собственно, это и стало одной из причин разработки своего инструмента для DNS-туннелирования.
Блокируем PING на одиночном компьютере
Для блокирования всех PING пакетов с компьютера и на него нам необходимо создать полититку IPSec, которая будет блокировать весь ICMP трафик. Для начала проверьте отвечает ли ваш компьютер на ICMP запросы:
Для настройки одиночного компьютера нам необходимо выполнить следующие шаги:
Сконфигурируем
список IP Filter Lists и Filter Actions
- Откройте окно MMC (Start > Run > MMC).
- Добавьте оснастку IP Security and Policy Management.
- Выберите какой компьютер будет управляться этой политикой – в нашем случае это локальный компьтер. Нажмите Close, потом нажмитеOk.
- Правой кнопкой нажмите на IP Security Policies в левой половине консоле MMC. Выберите Manage IP Filter Lists and Filter Actions.
- Вам не нужно настраивать или создавать IP фильтр для ICMP (протокол в котором работает PING), так как такой фильтр уже существует по умолчанию – All ICMP Traffic.
Однако вы можете сконфигурировать сколь угодно сложный IP фильтр, к примеру запретить пинговать ваш компьютер со всех IP, кроме нескольких определенных. В одной из следующих статей посвященных IPSec мы подробно рассмотрим создание IP фильтров, следите за обновлениями.
- В окне Manage IP Filter Lists and Filter actions просмотрите ваши фильтры и если все в порядке нажмите на вкладку Manage Filter Actions. Теперь нам нужно добавить действие для фильтра, которое будет блокировать определенный трафик, нажмем Add.
- В первом окне приветствия нажимаем Next.
- В поле Filter Action Name вводим Block и нажимаем Next.
- В Filter Action General Options выбираем Block, после чего жмем Next.
- Вернитесь в окно Manage IP Filter Lists and Filter actions и просмотрите ваши фильтры и если все в порядке, нажмите Close. Вы можете добавить фильтры и действия для фильтров в любое время.
Следующим шагом будет конфигурирование политики IPSec и её применение.
Конфигурируем политику IPSe
- В той же MMC консоле нажмите правой кнопкой по IP Security Policies и выберите Create IP Security Policy.
- Пропустите приветствие мастера нажав Next.
- В поле IP Security Policy Name введите соответствующее случаю имя, например “Block PING”. Нажмите Next
- В окне Запросов безопасного соединения сними галочку с чекбокса Active the Default Response Rule. НажмитеNext
- Отметьте чекбокс изменить свойства и нажмите Finish.
- Нам нужно добавить IP фильтры и действия фильтров в новую политику IPSec. В окне новый политике IPSec нажмите Add
- Нажмите Next.
- В окне Tunnel Endpoint убедитесь что выбрано значение по умолчанию и нажмите Next.
Научиться настройке MikroTik можно на онлайн курсе
по оборудованию этого производителя. Автор курса является сертифицированным тренером MikroTik. Подробней Вы можете прочитать в конце статьи.
Статья отвечает на вопрос насколько опасно блокировать ICMP трафик.
Парсер Хабра: Чек-лист проверки анонимности сёрфинга
Главная идея — определить, скрывается пользователь во время сёрфинга в сети или нет, и по возможности узнать его реальный IP адрес. Есть несколько интересных фишек, которые в принципе я нигде не встречал (двусторонний пинг, сопоставление пар DNS leak/ISP).
Хотелось иметь под рукой этакий чек-лист, который бы отвечал, «палишься» ты или нет? На данный момент список состоит из 12 методов проверки, о которых ниже и пойдет речь, в том числе о том, как на них не попасться, но сначала о самом простом по порядку.
Заголовки HTTP proxy
Убедитесь, что прокси сервер если и пишет что-то в заголовки указанные ниже, то хотя бы не ваш адрес:
HTTP_VIA, HTTP_X_FORWARDED_FOR, HTTP_FORWARDED_FOR, HTTP_X_FORWARDED, HTTP_FORWARDED, HTTP_CLIENT_IP, HTTP_FORWARDED_FOR_IP, VIA, X_FORWARDED_FOR, FORWARDED_FOR, X_FORWARDED, FORWARDED, CLIENT_IP, FORWARDED_FOR_IP, HTTP_PROXY_CONNECTION
Открытые порты HTTP proxy
Самые интересные порты 3128, 1080, 8123. Если их не использовать, то вполне можно избежать необоснованных подозрений в использовании 3proxy, SOCKS 5 или Polipo.
Открытые порты web proxy
Отдается веб страничка? Отлично! На данный момент мы умеем определять PHProxy, CGIProxy, Cohula и Glype.
Нестандартные порты с авторизацией закрывают вопрос.
Разница во временных зонах (браузера и IP)
Разница есть? Значит пользователь наверняка скрывается.
Для России точной базы latitude и longtitude для регионов нет, а так как временных зон много, то в конечном результате эти адреса мы не учитываем. С Европейскими странами всё наоборот, очень хорошо они палятся.
При переключении на VPN нужно не забывать переводить системное время, менять время в браузере, либо работать с русскими прокси.
Режим браузера Turbo
Как правило такие сервисы ещё и сливают ваш реальный адрес в заголовках. Как на средство анонимизации, рассчитывать на сжатие трафика не следует.
Утечка IP через Flash
Запустив специального демона, который логгирует все входящие соединения с ключами-метками, можно многое узнать. Лучший способ не раскрывать свой адрес — не использовать Adobe Flash вообще, или отключать в настройках браузера.
Определение туннеля (двусторонний пинг)
Конечно маршруты туда и обратно могут различаться, или веб сервер чуть притомозит, но в целом точность получается довольно хорошая.
Единственный способ защититься — запретить ICMP трафик к своему VPN серверу.
Утечка DNS
Следующим шагом собрали статистику на несколько миллионов пользователей, кто и какой DNS использует. Сделали привязку к провайдерам, отбросили публичные DNS и получили список пар DNS/ISP.
Теперь совсем не сложно узнать, если пользователь представился абонентом одной сети, а использует DNS совсем от другой.
Частично проблему решает использование публичных DNS сервисов, если это можно назвать решением.
Утечка через ВКонтакте
Подробнее можно посмотреть документацию здесь vk.com/dev/openapi. Кнопка «Выход» после каждой сессии в общем то решает вопрос, но лучшая рекомендация — не входить 🙂
Спасибо за внимание!
This entry passed through the Full-Text RSS service — if this is your content and you’re reading it on someone else’s site, please read the FAQ at http://ift.tt/jcXqJW.
WireGuard
Самый новый и неизведанный протокол VPN — WireGuard. Позиционируется разработчиками как замена IPsec и OpenVPN для большинства случаев их использования, будучи при этом более безопасным, более производительным и простым в использовании.
Все IP-пакеты, приходящие на WireGuard интерфейс, инкапсулируются в UDP и безопасно доставляются другим пирам. WireGuard использует современную криптографию:
- Curve25519 для обмена ключами,
- ChaCha20 для шифрования,
- Poly1305 для аутентификации данных,
- SipHash для ключей хеш-таблицы,
- BLAKE2 для хеширования.
Код WireGuard выглядит куда скромнее и проще, чем код OpenVPN, в результате чего его проще исследовать на уязвимости (4 тысячи строк кода против нескольких сотен тысяч). Также многие отмечают, что его гораздо легче развернуть и настроить.
Результаты тестов производительности можно увидеть на официальном сайте (как не сложно догадаться, они хороши). Стоит отметить, что лучшие результаты WireGuard покажет на Linux системах, т.к. там он реализован в виде модуля ядра.
Совсем недавно был представлен WireGuard 1.0.0, который отметил собой поставку компонентов WireGuard в основном составе ядра Linux 5.6. Включенный в состав ядра Linux код прошел дополнительный аудит безопасности, выполненный независимой фирмой, который не выявил каких-либо проблем. Для многих это отличные новости, но сможет ли WireGuard стать достойной заменой IPsec и OpenVPN покажет время и независимые исследования безопасности.
Мы постарались охарактеризовать самые популярные VPN протоколы, надеемся, обзор был для вас полезен. В качестве резюме приводим сравнительную таблицу, где еще раз обозначены важные, на наш взгляд, показатели.
| PPTP | SSTP | L2TP/IPsec | IKEv2/IPsec | OpenVPN | WireGuard | |
|---|---|---|---|---|---|---|
| Компания-разработчик | Microsoft | Microsoft | L2TP — совместная разработка Cisco и Microsoft, IPsec — The Internet Engineering Task Force | IKEv2 — совместная разработка Cisco и Microsoft, IPsec — The Internet Engineering Task Force | OpenVPN Technologies | Jason A. Donenfeld |
| Лицензия | Proprietary | Proprietary | Proprietary | Proprietary, но существуют реализации протокола с открытым исходным кодом | GNU GPL | GNU GPL |
| Развертывание | Windows, macOS, iOS, некоторое время GNU/Linux. Работает “из коробки”, не требуя установки дополнительного ПО | Windows. Работает “из коробки”, не требуя установки дополнительного ПО | Windows,Mac OS X, Linux, iOS, Android. Многие ОС (включая Windows 2000/XP +, Mac OS 10.3+) имеют встроенную поддержку, нет необходимости ставить дополнительное ПО | Windows 7+, macOS 10.11+ и большинство мобильных ОС имеют встроенную поддержку | Windows, Mac OS, GNU/Linux, Apple iOS, Android и маршрутизаторы. Необходима установка специализированного ПО, поддерживающего работу с данным протоколом | Windows, Mac OS, GNU/Linux, Apple iOS, Android. Установить сам WireGuard, а затем настроить по руководству |
| Шифрование | Использует Microsoft Point-to-Point Encryption (MPPE), который реализует RSA RC4 с максимум 128-битными сеансовыми ключами | SSL (шифруются все части, кроме TCP- и SSL-заголовков) | 3DES или AES | Реализует большое количество криптографических алгоритмов, включая AES, Blowfish, Camellia | Использует библиотеку OpenSSL (реализует большинство популярных криптографических стандартов) | Обмен ключами по 1-RTT, Curve25519 для ECDH, RFC7539 для ChaCha20 и Poly1305 для аутентификационного шифрования, и BLAKE2s для хеширования |
| Порты | TCP-порт 1723 | TCP-порт 443 | UDP-порт 500 для первонач. обмена ключами и UDP-порт 1701 для начальной конфигурации L2TP, UDP-порт 5500 для обхода NAT | UDP-порт 500 для первоначального обмена ключами, а UDP-порт 4500 — для обхода NAT | Любой UDP- или TCP-порт | Любой UDP-порт |
| Недостатки безопасности | Обладает серьезными уязвимостями. MSCHAP-v2 уязвим для атаки по словарю, а алгоритм RC4 подвергается атаке Bit-flipping | Серьезных недостатков безопасности не было выявлено | 3DES уязвим для Meet-in-the-middle и Sweet32, но AES не имеет известных уязвимостей. Однако есть мнение, что стандарт IPsec скомпрометирован АНБ США | Не удалось найти информации об имеющихся недостатках безопасности, кроме инцидента с утечкой докладов АНБ касательно IPsec | Серьезных недостатков безопасности не было выявлено | Серьезных недостатков безопасности не было выявлено |
Материал подготовлен совместно с veneramuholovka
Как разрешить или отключить и запретить ответ пинг на Windows
ZoneAlarm Free Firewall
Для ZoneAlarm Free Firewall в программном обеспечении есть только две зоны: Public и Trusted. Зоны в ZoneAlarm выбираются автоматически в зависимости от профиля сетевого расположения в Windows. Например, если вы выбрали «Домашняя сеть» в качестве сетевого расположения для подключения к Wi-Fi, ZoneAlarm автоматически устанавливает зону как «Trusted» и наоборот.
Если ваш компьютер отвечает на запросы ping, отключить ответ ping так же просто, как изменить зону с Trusted на Public ZoneAlarm. Запустите ZoneAlarm, перейдите на вкладку FIREWALL и нажмите View Zones в Basic Firewall.

На вкладке View Zones выберите сеть, к которой вы подключены, и нажмите кнопку Edit . Нажмите на выпадающее меню для зоны и выберите Public .

Если вы хотите снова включить пинг-ответ, установите для зоны сети значение «Trusted».
Emsisoft Online Armor Free
Emsisoft Online Armor Free автоматически отключит пинг-ответ, и у вас не будет способа настроить правила брандмауэра для повторного включения пинга. В отличие от платной версии, где вы можете переключиться в расширенный режим для настройки правил ICMP, бесплатная версия не позволяет переключаться в расширенный режим, а только в стандартный режим. Так что, если вы используете бесплатную версию Online Armor, то вы можете временно отключить защиту Брандмауэра, щелкнув правой кнопкой мыши значок Online Armor в трее и выбрать Брандмауэр, чтобы снять флажок.
Comodo Free Firewall
Comodo автоматически решает, следует ли разрешать или запрещать пинг в зависимости от зоны сети, которую вы выбрали для подключенной сети.


Если вы выбрали Home или Work, то пинг разрешен. Однако зона сети Public Place блокирует все пинг-запросы. Если вы выбрали Public Place и хотите включить запросы ping, вы можете вручную настроить глобальные правила, чтобы разрешить ping вместо блокировки.
Щелкните правой кнопкой мыши значок Comodo Firewall, расположенный в области уведомлений, и выберите Advanced View. Снова щелкните правой кнопкой мыши значок Comodo Firewall в трее, перейдите в Firewall и выберите « Настройки» . Разверните Настройки безопасности > Брандмауэр и выберите Глобальные правила . Дважды щелкните правило, которое гласит: «Block ICMPv4 In From MAC Any To MAC Any Where ICMP Message Is ECHO REQUEST”», и измените действие с «Блокировать на Разрешить» . Нажмите кнопку ОК, чтобы закрыть окно правил брандмауэра, и снова нажмите кнопку ОК, чтобы сохранить изменения.

Кроме того, вы также можете временно отключить брандмауэр на панели задач, чтобы разрешить ответы Ping. Не выходите и не завершайте программу, потому что брандмауэр все еще будет активен, даже если значок в области уведомлений не отображается в области уведомлений.
С другой стороны, если вы находитесь в зоне домашней или рабочей сети, где разрешены запросы ping, и вы хотите отключить ответы ping, вам просто нужно переместить правило брандмауэра, расположенное внизу, которое блокирует все эхо-запросы ICMP вплоть до верхний, так чтобы он переопределил первых два правила, которые разрешают все входящие и исходящие запросы.

Как отключить и запретить ответ пинг в Брандмауэр Windows 10
На самом деле нет необходимости полагаться на стороннее программное обеспечение брандмауэра для включения или отключения пинг-ответов, поскольку для этого можно настроить брандмауэр Windows.
- Нажмите клавишу WIN, и в поиске введите WINDOWS FIREWALL и запустите.
- Нажмите на Дополнительные параметры, расположенные на левой боковой панели.
- Нажмите на «Правила для входящих подключений» на левой панели.
- Нажмите « Действие в строке справаи выберите « Создать правило» .
- Нажмите на Настраиваемое и нажмите далее.
- Убедитесь, что выбран вариант «Все программы», и нажмите «Далее».
- Щелкните раскрывающееся меню «Тип протокола», выберите ICMPv4 и нажмите «Далее».
- Убедитесь, что выбран « юбой IP-адрес», и нажмите «Далее».
- Если вы хотите включить ping при подключении к общедоступной сети, выберите «Разрешить подключение». Если вы хотите заблокировать пинг, даже если вы подключены к домашней сети, выберите опцию «Блокировать соединение» и нажмите «Далее».
- Вы можете оставить все флажки для профилей и нажать Далее.
- Дайте этому новому правилу любое имя, которое вам нравится и нажмите готово. Вновь созданное правило брандмауэра вступит в силу немедленно, не требуя перезагрузки.
Как добиться 100% анонимности на главной странице Whoer.net

Если вы читаете эту статью, значит у вас есть желание добиться 100% анонимности в сети. Нас часто спрашивают, как добиться заветных Ваша анонимность: 100% на whoer.net. Покажем на примере, что нужно делать, чтобы обеспечить 100% анонимность в сети.
Дано: компьютер с операционной системой Windows 10, Mozilla Firefox 59.0.2.
Цель: 100% анонимности на whoer.net
Организуем VPN подключение
VPN подключение позволит нам скрыть свой IP адрес, DNS и, как следствие, фактическое расположение.
Переходим по предложению приобрести Whoer VPN.
Запускаем скачанный файл. В появившемся окне выбираем необходимый язык. В нашем случае – русский.
Жмем кнопку «ОК». В окне приветствия жмем кнопку «Далее».
Принимаем условия лицензионного соглашения. Выбираем папку для установки и жмем кнопку «Установить».
Ставим галочку «Всегда доверять программному обеспечению «OpenVPN Technologies, Inc.» и жмем «Установить».
Жмем «Готово».
При этом значок клиента Whoer VPN появится в системном трее (подробнее о том, что такое системный трей и где он находится можно прочитать тут).
Щелкаем правой кнопкой мыши по значку Whoer VPN и выбираем «Показать Whoer».
Переходим в закладку «Настройки» и производим настройки, например, как на скриншоте.
WhoerVPN запущен. Можно двигаться дальше.
Оценка исходного уровня анонимности
Заходим на whoer.net, видим такую картину. Анонимность всего 64%. Чтобы узнать почему уровень анонимности такой низкий, щелкнем по Ваша анонимность: 64%.
Открылся список замечаний по анонимности и безопасности и рекомендации по устранению этих замечаний. Именно с ними и будем работать.
DoNotTrack В вашем браузере не включен запрет на отслеживание
Открываем настройки браузера, выбираем Приватность и защита. Находим защиту от отслеживания и выбрать Использовать защиту от отслеживания для блокировки известных трекеров ВСЕГДА, Передавать сайтам сигнал “Не отслеживать”, означающий, чтобы вы не хотите быть отслеживаемыми ВСЕГДА.
Заходим на whoer.net, замечания DoNotTrack больше нет. Анонимность, по-прежнему, 64%.
Разное системное время
Это замечание означает, что часовой пояс и время на вашем компьютере отличаются от времени расположения сервера VPN. В нашем случае это Нидерланды. Чтобы определить какой часовой пояс и какое время нам необходимо установить, воспользуемся сервисом whoer.net.
Теперь, когда нам известно, какой часовой пояс и время соответствует местоположению, соответствующему IP, можем изменить системное время и часовой пояс. Щелкните по часа в правом нижнем углу экрана и выберите «Изменение настроек даты и времени». Установите часовой пояс и время, соответствующие местонахождению сервера. Подробнее о том, как это сделать можно прочитать тут.
Заходим на whoer.net. Анонимность уже 70%. Смотрим параметры времени.
Замечания Разное системное время больше нет. Осталось только одно замечание.
Отличие языка
Это замечание означает, что язык операционной системы и браузера, отличается от языка страны местоположения. Посмотрим какой язык показывает сервис проверки whoer.net. Чтобы понять какой именно язык необходимо установить, определитесь к какому серверу VPN будет производиться подключение. Все тарифы включают сервера в 16 странах. В бесплатной версии это Нидерланды.
Для устранения этого замечания перейдем в настройки браузера, откроем дополнительные настройки и добавим язык местоположения. Чтобы определить какой язык необходимо установить, можно задать запрос в интернете, например, язык Нидерланды. Википедия подсказала нам, что в Нидерландах нидерландский (голландский) язык.
Находим настройки языка, жмем кнопку «Выбрать».
В открывшемся окне щелкаем «Выберите язык, чтобы его добавить…».
Нидерландского языка в списке нет. Находим голландский. Удаляем русский язык, для этого выбираем язык из списка и жмем «Удалить». Нажимаем кнопку «ОК». Закрываем окно настроек.
Заходим на whoer.net. Ура! Замечаний нет.
Итак, всего в несколько шагов мы добились 100% анонимности, используя бесплатный клиент Whoer VPN, браузер Mozilla Firefox 59.0.2 в Windows 10. Если вы используете другие операционные системы или браузеры, вы можете воспользоваться инструкциями на whoer.net для настройки именно вашей операционной системы и браузера.
DNS-сервер
DNS-сервер для туннелирования был написан на Python3 с использованием библиотеки dnslib, которая позволяет легко создать свой DNS-резолвер, унаследовавшись от объекта dnslib.ProxyResolver и переопределив метод resolve().
Великолепный dnslib позволяет создать свой ProxyDNS очень быстро:
В resolve() мы определим реакции на DNS-запросы со стороны клиента: регистрацию, запрос новых записей, обратную передачу данных и удаление пользователя.
Информацию о пользователях храним в базе данных SQLite, буфер обмена данными находится в оперативной памяти и имеет следующую структуру, в которой ключом является номер клиента:
Для помещения данных от пентестера в буфер мы написали небольшой “приемник”, который запущен в отдельном потоке. Он ловит соединения от пентестера и выполняет маршрутизацию: какому клиенту отправлять запросы.
Пользователю перед запуском сервера необходимо задать всего лишь один параметр: DOMAIN_NAME — имя домена, с которым будет работать сервер.
Нумерация типов ICMP
Протокол межсетевых управляющих сообщений (ICMP) содержит много сообщений, которые идентифицируются полем «тип».
| Тип | Наименование | Спецификация |
|---|---|---|
| Echo Reply | ||
| 1 | Unassigned | |
| 2 | Unassigned | |
| 3 | Destination Unreachable | |
| 4 | Source Quench (Deprecated) | |
| 5 | Redirect | |
| 6 | Alternate Host Address (Deprecated) | |
| 7 | Unassigned | |
| 8 | Echo | |
| 9 | Router Advertisement | |
| 10 | Router Solicitation | |
| 11 | Time Exceeded | |
| 12 | Parameter Problem | |
| 13 | Timestamp | |
| 14 | Timestamp Reply | |
| 15 | Information Request (Deprecated) | |
| 16 | Information Reply (Deprecated) | |
| 17 | Address Mask Request (Deprecated) | |
| 18 | Address Mask Reply (Deprecated) | |
| 19 | Reserved (for Security) | Solo |
| 20-29 | Reserved (for Robustness Experiment) | ZSu |
| 30 | Traceroute (Deprecated) | |
| 31 | Datagram Conversion Error (Deprecated) | |
| 32 | Mobile Host Redirect (Deprecated) | David_Johnson |
| 33 | IPv6 Where-Are-You (Deprecated) | |
| 34 | IPv6 I-Am-Here (Deprecated) | |
| 35 | Mobile Registration Request (Deprecated) | |
| 36 | Mobile Registration Reply (Deprecated) | |
| 37 | Domain Name Request (Deprecated) | |
| 38 | Domain Name Reply (Deprecated) | |
| 39 | SKIP (Deprecated) | |
| 40 | Photuris | |
| 41 | ICMP messages utilized by experimental mobility protocols such as Seamoby | |
| 42 | Extended Echo Request | |
| 43 | Extended Echo Reply | |
| 44-252 | Unassigned | |
| 253 | RFC3692-style Experiment 1 | |
| 254 | RFC3692-style Experiment 2 | |
| 255 | Reserved |
Proxy:
Прокси для пентестера представляет из себя небольшой прокси сервер на python3.
В параметрах нужно указать IP DNS-сервера, порт, куда коннектиться на сервере, опция —clients возвращает список зарегистрированных клиентов, , , — id клиента, с которым мы будем работать (видно после исполнения ), — таймаут для отправки сообщений от приложения.
При запуске с параметром , прокси посылает серверу запрос в формате .
В случае, когда мы начинаем работу, при подключении посылаем сообщение в формате для сброса предыдущего подключения. После мы посылаем информацию о нашей цели:
Далее, при отправке сообщений к клиенту, мы отправляем байты в формате , а приложению пересылаем просто сырые байты.
Также прокси поддерживает режим SOCKS5.
Настройка OpenVPN
Важно
Режим socksДля работы в режиме socks настраиваем OpenVPN немножко по-другому:
Учитывая необходимость заменять адрес OpenVPN-сервера на адрес obfsproxy-сервера, я не вижу особой пользы от режима прокси — приложения, в которых адреса подключения зашиты намертво, так все равно не запроксируешь.
openvpn-gui для Windows
—connectconfigXXXXXX_pre.batXXXXXX
- window title — заголовок окна, необходим.
- %USERPROFILE%\Desktop\Tor Browser\Tor\PluggableTransports\obfsproxy.exe — путь к исполняемому файлу obfsproxy. По умолчанию Tor Browser ставится на рабочий стол, хотя это и не обязательно.
- %TEMP%\obfs-openvpn — путь для размещения файлов состояния obfsproxy.
- obfsproxy.key — путь к файлу с ключом, если вы его используете.
- 1.2.3.4:81 — адрес, который слушает серверная часть obfsproxy.
- 127.0.0.1:81 — адрес, который будет слушать клиентская часть.
Протокол общения
Рассмотрим довольно простой протокол общения сервера с клиентом.
Регистрация
При запуске клиента, он регистрируется на сервере, запрашивая TXT-запись через поддомен следующего формата:
0 — ключ регистрации — для избежания кеширования записей DNS — имя, заданное клиенту при запуске — ex.: xakep.ru
В случае успешной регистрации, клиент в TXT-ответе получает сообщение об успехе, а также присвоенный ему id, который он дальше будет использовать.
Основной цикл
После регистрации клиент начинает опрашивать сервер о наличии новых данных в формате
В случае наличия новых данных, в TXT-ответе он получает их в формате
, иначе, приходит .
Цикл загрузки данных
Клиент в цикле проверяет, пришли ли данные от нашего . В случае, если ответ есть, мы считываем, из того, что пришло, буфер размером N Кб, разбиваем его на блоки длинной и шлем данные поблочно в формате:
В случае успеха передачи блока получаем OK с некоторыми данными о переданном блоке, в случае завершения передачи буфера получаем .
Необходима фрагментация пакета (IPv4) / Пакет слишком большой (IPv6)
IPv4 – (Type3, Code4)
IPv6 – (Type2, Code0)
Данные компоненты протокола ICMP очень важны, так как являются важным компонентом в Path MTU Discovery (PMTUD), который является неотъемлемой частью протокола TCP. Позволяет двум хостам корректировать значение максимального размера сегмента TCP (MSS) до значения, которое будет соответствовать наименьшему MTU по пути связей между двумя адресатами. Если на пути следования пакетов будет узел с меньшим Maximum Transmission Unit, чем у отправителя или получателя, и у них не будет средств для обнаружения данной коллизии, то трафик будет незаметно отбрасывается. И вы не будете понимать что происходит с каналом связи; другими словами, «для вас наступят веселые деньки».
Что вам для этого потребуется
- Доверять Cloudflare. На самом деле это очень важный пункт, поскольку в описываемой реализации все ваши DNS-запросы обрабатываются сервисом Cloudflare. Если вы ему не доверяете — вам придется внедрить другое решение (и это немногим сложнее, чем описанное, но целью этой статьи не является).
- Иметь возможность поддерживать в домашней сети постоянно работающий сервер с Linux, который будет обслуживать DNS-запросы ваших устройств. Требование Pi-Hole — от 512M оперативной памяти (впрочем, работу с меньшим объемом сам не проверял). Если ваш роутер или NAS умеют виртуальные машины — это прекрасный вариант, если на полке где-то завалялась Raspberry Pi или другой микрокомпьютер на ARM — не менее хорошо, если на антресолях в коридоре жужжит виртуальная ферма на ESXi — то что я вам рассказываю, вы и сами всё знаете. Если у вас ничего из этого нет — самые младшие решения, типа Orange Pi Zero, на вторичном рынке можно найти за единицы сотен рублей либо привезти из Али за плюс-минус те же деньги. Но выбор платформы сильно выходит за рамки этой статьи, поэтому считаем, что у вас что-то есть. Впрочем, вопросы на этот счет можно задавать в комментариях.
- Вы должны иметь представление о использовании Linux и сетевых технологиях. Или хотя бы хотеть получить такое представление. Поскольку объять необъятное в этот раз я не готов, некоторые непонятные для вас моменты вам придется изучить самостоятельно. Впрочем, на конкретные вопросы, конечно же, отвечу в комментариях и вряд ли окажусь единственным отвечающим, так что не стесняйтесь спрашивать.
Echo запрос и and Echo ответ
IPv4 – Echo запрос (Type8, Code0) и Echo ответ (Type0, Code0)
IPv6 – Echo запрос (Type128, Code0) and Echo ответ (Type129, Code0)
Мы все хорошо знаем, что ping, — один из первых инструментов для поиска и устранения неполадок. Да, если вы включите на своем оборудование обработку ICMP-пакетов, то это значит, что ваш хост теперь доступен для обнаружения, но разве ваш уже не слушает порт 80, и не отправляет ответы на клиентские запросы? Конечно, заблокируйте ещё и эти запросы, если вы действительно хотите, чтобы на границе сети была ваша DMZ. Но блокируя ICMP трафик внутри вашей сети, не усилите защиту, напротив получите систему с излишне сложным процессом поиска и устранения неполадок («Проверьте пожалуйста отзывается ли шлюз на сетевые запросы?», «Нет, но это меня ничуть не расстраивает, потому что мне это ничего не скажет! »).
Помните, также можете разрешить прохождение запросов в определенном направлении; например, настроить оборудование так, чтобы Echo запросы из вашей сети проходили в сеть Интернет и Echo ответы из Интернета в вашу сеть, но не наоборот.