dnstwist - это инструмент на основе Python, который может помочь вам увидеть, какие проблемы могут возникнуть у пользователей при попытке ввести ваше доменное имя. Он может находить похожие на вид домены, которые злоумышленники могут использовать для атаки на вас. Он также может обнаруживать опечатки, фишинговые атаки, мошенничество и корпоративный шпионаж.
Это очень полезно в качестве дополнительного источника целевой информации об угрозах.
Идея довольно проста: dnstwist принимает ваше доменное имя в качестве начального числа, генерирует список потенциальных фишинговых доменов, а затем проверяет, зарегистрированы ли они. Кроме того, он может проверить, можно ли использовать почтовый сервер из записи MX для перехвата неверно направленных корпоративных сообщений электронной почты, и может генерировать нечеткие хэши веб-страниц, чтобы определить, являются ли они действующими фишинговыми сайтами.
Примечание: Наряду с длиной домена значительно увеличивается количество вариантов, генерируемых алгоритмами, и, следовательно, количество DNS-запросов, необходимых для их проверки. Например, чтобы проверить все варианты для google.com, вам нужно будет отправить более 300 тысяч запросов. Для домена facebook.com это число превышает 5 миллионов. Насколько легко угадать, это требует много ресурсов и, самое главное, еще больше времени. Для более длинных доменов проверка всего невозможна. По этой причине этот инструмент генерирует и проверяет домены, очень близкие к оригиналу. Теоретически это самые привлекательные домены с точки зрения злоумышленника. Однако знайте, что фантазия агрессоров безгранична.
Функции:
- Широкий спектр эффективных алгоритмов фаззинга предметной области
- Доменные имена Unicode (IDN)
- Многопоточное распределение заданий
- Запросы к записям A, AAAA, NS и MX
- Оценивает сходство веб-страниц с помощью нечетких хешей, чтобы найти живые фишинговые сайты
- Проверяет, можно ли использовать MX-хост (почтовый сервер) для перехвата неправильно перенаправленных сообщений электронной почты.
- Дополнительные варианты домена с использованием файлов словарей
- Информация о местоположении GeoIP
- Захватывает баннеры служб HTTP и SMTP
- Поиск в WHOIS для даты создания и изменения
- Вывод в формате CSV и JSON
Требования:
- Linux
$ sudo apt-get install python-dnspython python-geoip python-whois \
python-requests python-ssdeep python-cffi
В качестве альтернативы вы можете использовать инструменты Python. Это можно сделать в виртуальной среде, чтобы избежать конфликтов с другими установками. Однако вам все равно понадобится пара библиотек, установленных на системном уровне.
Код:
$ sudo apt-get install libgeoip-dev libffi-dev
$ BUILD_LIB = 1 pip install -r requirements.txt
- OSX
$ brew install dnstwist
Это установит dnstwist.py только как dnstwist вместе со всеми требованиями, упомянутыми выше. Использование такое же, вы можете просто опустить расширение файла, и двоичный файл будет добавлен в PATH.
- Докер
Код:
$ docker pull elceef / dnstwist
$ docker run elceef / dnstwist example.com
Как использовать dnstwist
Для начала рекомендуется ввести в качестве аргумента только доменное имя. Инструмент пропустит его через свои алгоритмы фаззинга и сгенерирует список потенциальных фишинговых доменов со следующими записями DNS: A, AAAA, NS и MX.
$ dnstwist.py example.com
Обычно сгенерированный список доменов состоит из более сотни строк - особенно для более длинных доменных имен. В таких случаях может быть целесообразно отображать только зарегистрированные (разрешаемые) с помощью аргумента --registered.
$ dnstwist.py --registered example.com
Ручная проверка каждого доменного имени с точки зрения обслуживания фишингового сайта может занять много времени. Чтобы решить эту проблему, dnstwist использует так называемые нечеткие хэши (кусочные хэши, запускаемые контекстом). Нечеткое хеширование - это концепция, которая включает в себя возможность сравнения двух входных данных (в данном случае кода HTML) и определения фундаментального уровня сходства. Эту уникальную функцию dnstwist можно включить с помощью аргумента --ssdeep. Для каждого сгенерированного домена dnstwist будет извлекать контент с отвечающего HTTP-сервера (после возможных перенаправлений) и сравнивать его нечеткий хэш с хешем исходного (начального) домена. Уровень сходства будет выражен в процентах. Имейте в виду, что получение 100% соответствия для динамически генерируемой веб-страницы маловероятно, но каждое уведомление следует тщательно проверять независимо от процентного уровня.
$ dnstwist.py --ssdeep example.com
В некоторых случаях фишинговые сайты обслуживаются с определенного URL-адреса. Если вы предоставите полный или частичный URL-адрес в качестве аргумента, dnstwist проанализирует его и применит для каждого сгенерированного варианта доменного имени. Эта возможность, очевидно, полезна только в сочетании с функцией нечеткого хеширования.
Код:
$ dnstwist.py --ssdeep https://example.com/owa/
$ dnstwist.py --ssdeep example.com/crm/login
Очень часто злоумышленники устанавливают приманки для электронной почты на фишинговых доменах и ждут получения сообщений с ошибками. В этом сценарии злоумышленники настроят свой сервер для очистки всей электронной почты, адресованной этому домену, независимо от пользователя, которому она была отправлена. Другая функция dnstwist позволяет выполнить простой тест на каждом почтовом сервере (объявленном через MX-запись DNS), чтобы проверить, какой из них можно использовать для таких враждебных намерений. Подозрительные серверы будут отмечены строкой SPYING-MX.
Помните о возможных ложных срабатываниях. Некоторые почтовые серверы только делают вид, что принимают неправильно адресованные электронные письма, но затем отбрасывают эти сообщения. Этот метод используется для предотвращения атаки сбора каталога.
$ dnstwist.py --mxcheck example.com
Не всегда доменные имена, сгенерированные алгоритмами фаззинга, достаточны. Чтобы сгенерировать еще больше вариантов доменного имени, загрузите в dnstwist файл словаря. Включены некоторые образцы словарей со списком наиболее часто используемых слов в целевых фишинговых кампаниях. Не стесняйтесь адаптировать его под свои нужды.
$ dnstwist.py - словари, словари / english.dict example.com
Помимо красивого и красочного вывода текстового терминала по умолчанию, инструмент предоставляет два хорошо известных и легко анализируемых формата вывода: CSV и JSON. Используйте его для обмена данными.
Код:
$ dnstwist.py --csv example.com> out.csv
$ dnstwist.py --json example.com> out.json
$ dnstwist.py --geoip example.com
Конечно, все функции, предлагаемые dnstwist, вместе с краткими описаниями всегда под рукой:
$ dnstwist.py --help