
DNSChef - DNS-прокси для тестировщиков на проникновение и аналитиков вредоносного ПО
| | version 0.4 | | / _|
| | __ ___ | | __| |
/ ` | ' / |/ | ' \ / _ \ |
| (| | | | _ \ (| | | | __/ |
_,|| ||/_|| ||___||
Д О К У М Е Н Т А Ц И Я
DNSChef — это высоконастраиваемый DNS-прокси для специалистов по тестированию на проникновение и аналитиков вредоносного ПО. DNS-прокси (также известный как «Fake DNS») — это инструмент, используемый, среди прочего, для анализа сетевого трафика приложений. Например, DNS-прокси можно использовать для подмены запросов к «badguy.com», чтобы они указывали на локальную машину для завершения или перехвата, а не на реальный хост где-то в Интернете.
Существует множество DNS-прокси. Большинство из них просто направляют все DNS-запросы на один IP-адрес или реализуют лишь примитивную фильтрацию. DNSChef был разработан в рамках тестирования на проникновение, когда возникла потребность в более настраиваемой системе. В результате DNSChef является кроссплатформенным приложением, способным подделывать ответы на основе включающих и исключающих списков доменов, поддерживать несколько типов DNS-записей, сопоставлять домены с подстановочными знаками, проксировать истинные ответы для доменов, не попавших под критерии, определять внешние конфигурационные файлы, поддерживать IPv6 и многие другие функции. Ниже вы найдете подробное описание каждой из функций и предлагаемые варианты использования.
Использование DNS-прокси рекомендуется в ситуациях, когда невозможно заставить приложение напрямую использовать другой прокси-сервер. Например, некоторые мобильные приложения полностью игнорируют настройки HTTP-прокси операционной системы. В таких случаях использование DNS-прокси-сервера, такого как DNSChef, позволит вам обмануть это приложение, заставив его перенаправлять соединения на нужный адрес.
Прежде чем вы сможете начать использовать DNSChef, необходимо настроить вашу машину на использование DNS-сервера имен с запущенным на нем инструментом. У вас есть несколько вариантов в зависимости от используемой операционной системы:
Linux — Отредактируйте /etc/resolv.conf, добавив строку в самое начало с хостом анализа трафика (например, добавьте "nameserver 127.0.0.1", если вы работаете локально). В качестве альтернативы вы можете добавить адрес DNS-сервера с помощью таких инструментов, как Network Manager. В Network Manager откройте настройки IPv4, выберите Automatic (DHCP) addresses only или Manual в раскрывающемся списке Method и отредактируйте текстовое поле DNS Servers, указав IP-адрес, на котором запущен DNSChef.
Windows — Выберите Network Connections (Сетевые подключения) в Панели управления. Затем выберите одно из подключений (например, «Подключение по локальной сети»), щелкните по нему правой кнопкой мыши и выберите «Свойства». В появившемся диалоговом окне выберите Internet Protocol (TCP/IP) и нажмите «Свойства». Наконец, выберите переключатель Use the following DNS server addresses (Использовать следующие адреса DNS-серверов) и введите IP-адрес, на котором запущен DNSChef. Например, если вы работаете локально, введите 127.0.0.1.
OS X — Откройте System Preferences (Системные настройки) и щелкните по значку Network (Сеть). Выберите активный интерфейс и заполните поле DNS Server (DNS-сервер). Если вы используете Airport, вам нужно нажать кнопку Advanced... (Дополнительно) и отредактировать DNS-серверы оттуда. В качестве альтернативы вы можете отредактировать /etc/resolv.conf и добавить поддельный сервер имен в самое начало (например, "nameserver 127.0.0.1").
iOS — Откройте Settings (Настройки) и выберите General (Основные). Затем выберите Wi-Fi и нажмите на синюю стрелку справа от активной точки доступа из списка. Отредактируйте запись DNS, указав хост, на котором запущен DNSChef. Убедитесь, что вы отключили сотовый интерфейс (если доступно).
Android — Откройте Settings (Настройки) и выберите Wireless and network (Беспроводные сети и сети). Нажмите на Wi-Fi settings (Настройки Wi-Fi) и выберите Advanced (Дополнительно) после нажатия кнопки Options (Параметры) на телефоне. Включите флажок Use static IP (Использовать статический IP) и настройте пользовательский DNS-сервер.
Если у вас нет возможности вручную изменить настройки DNS на устройстве, у вас все равно есть несколько вариантов, включающих такие методы, как ARP Spoofing, Rogue DHCP и другие творческие подходы.
Наконец, вам необходимо настроить поддельный сервис, на который DNSChef будет направлять все запросы. Например, если вы пытаетесь перехватить веб-трафик, вам необходимо либо поднять отдельный веб-сервер, работающий на порту 80, либо настроить веб-прокси (например, Burp) для перехвата трафика. DNSChef будет направлять запросы на ваш хост прокси/сервера с правильно настроенными сервисами.
DNSChef — это кроссплатформенное приложение, разработанное на Python, которое должно работать на большинстве платформ, где установлен интерпретатор Python. Вы можете использовать прилагаемый исполняемый файл dnschef.exe для запуска на хостах Windows без установки интерпретатора Python. Это руководство будет сфокусировано на средах Unix, однако все приведенные ниже примеры были протестированы и работают в Windows.
Давайте попробуем DNSChef в его самой базовой функции мониторинга. Выполните следующую команду от root (требуется для запуска сервера на порту 53):
# ./dnschef.py
_ _ __
| | version 0.2 | | / _|
__| |_ __ ___ ___| |__ ___| |_
/ _` | '_ \/ __|/ __| '_ \ / _ \ _|
| (_| | | | \__ \ (__| | | | __/ |
\__,_|_| |_|___/\___|_| |_|\___|_|
[email protected]
[*] DNSChef started on interface: 127.0.0.1
[*] Using the following nameservers: 8.8.8.8
[*] No parameters were specified. Running in full proxy mode
Без каких-либо параметров DNSChef будет работать в режиме полного прокси. Это означает, что все запросы будут просто перенаправляться вышестоящему DNS-серверу (по умолчанию 8.8.8.8) и возвращаться обратно запрашивающему хосту. Например, давайте запросим запись «A» для домена и посмотрим результаты:
$ host -t A thesprawl.org
thesprawl.org has address 108.59.3.64
DNSChef выведет следующую строку журнала, показывающую время, исходный IP-адрес, тип запрошенной записи и, что наиболее важно, какое имя было запрошено:
[23:54:03] 127.0.0.1: proxying the response of type 'A' for thesprawl.org
Этот режим полезен для простого мониторинга приложений, когда вам нужно выяснить, какие домены оно использует для связи.
DNSChef имеет полную поддержку IPv6, которая активируется с помощью флагов -6 или --ipv6*. Он работает точно так же, как и режим IPv4, за исключением того, что интерфейс прослушивания по умолчанию переключается на ::1, а DNS-сервер по умолчанию переключается на 2001:4860:4860::8888. Вот пример вывода:
# ./dnschef.py -6
_ _ __
| | version 0.2 | | / _|
__| |_ __ ___ ___| |__ ___| |_
/ _` | '_ \/ __|/ __| '_ \ / _ \ _|
| (_| | | | \__ \ (__| | | | __/ |
\__,_|_| |_|___/\___|_| |_|\___|_|
[email protected]
[*] Using IPv6 mode.
[*] DNSChef started on interface: ::1
[*] Using the following nameservers: 2001:4860:4860::8888
[*] No parameters were specified. Running in full proxy mode
[00:35:44] ::1: proxying the response of type 'A' for thesprawl.org
[00:35:44] ::1: proxying the response of type 'AAAA' for thesprawl.org
[00:35:44] ::1: proxying the response of type 'MX' for thesprawl.org