Утилиты для разведки
Hack Proof
Поиск поддоменов
Каждый поддомен — это потенциальная цель, так что их поиск — один из первых шагов при разведке. В больших компаниях, вроде IBM или Microsoft, используются десятки тысяч поддоменов, и все их нужно поддерживать в актуальном состоянии, своевременно ставить обновления софта и фиксить баги. Как показывает практика, о некоторых поддоменах просто забывают или ставят заглушки, хотя весь контент при этом остается доступен. Критические уязвимости, вроде RCE, SSTI, SSRF или XXE, чаще всего обнаруживают на поддоменах. Чем больше ты их найдешь, тем шире будет поверхность атаки. Существует очень много инструментов для их поиска, поэтому рассмотрим только те, которые прошли проверку в "боевых" условиях и показали себя эффективными.
Chaos
Начнём с простого, автоматизированный поиск (подойдёт для экономии времени). Утилита Chaos собирает информацию обо всех публичных программах, находящихся на известных багбаунти‑платформах, вроде Bugcrowd, HackerOne, Intigrity.
Список постоянно обновляется, так что вы всегда будете видеть актуальную информацию.
Поиск и сортировка по программам реализованы очень удобно. Например, можно посмотреть только те программы, которые предлагают вознаграждение за найденные уязвимости или имеют много поддоменов, или отследить новые программы. В отличие от большинства сайтов, связанных с разведкой, он бесплатный. Почему бы не узнать их поддномены для своих черных дел?
- Вот, например, поддомены uber.com:
Вводим:
chaos -d uber.com -silent
Получаем поддомены:
restaurants.uber.com
testcdn.uber.com
approvalservice.uber.com
zoom-logs.uber.com
eastwood.uber.com
meh.uber.com
webview.uber.com
kiosk-api.uber.com
...
recon.dev
Еще один сайт, который поможет собрать много полезной информации о поддоменах. В отличие от Chaos, бесплатно recon.dev показывает только первые 20 результатов поиска. За остальные придется заплатить, однако цена за полученный набор данных небольшая.
subfinder
Subfinder считается потомком sublist3r — утилита тоже собирает информацию о поддоменах, используя множество пассивных онлайновых источников, таких как Baidu, Bing, Censys. Для некоторых источников потребуется внести ключи от API в файл конфигурации ($HOME/.config/subfinder/config.yaml).
Subfinder имеет удобную модульную архитектуру и написан на Go, так что очень быстро работает.
Для примера посмотрим на поддомены одного из сайтов:
Словари
Перед тем, как начинать разведку, стоит скачать хорошие словари. От выбора хорошего словаря зависит многое: чем больше будет собрано скрытых параметров, поддоменов, директорий и файлов, тем выше шанс обнаружить какую‑нибудь уязвимость в безопасности.
В интернете можно найти огромное количество словарей, но не все они эффективны.
fuzz.txt
Начинаю обычно с fuzz.txt, который содержит список потенциально опасных файлов и директорий. Словарь практически каждый месяц дополняется новыми словами. Проходится быстро, а за счет этого можно скорее начать ковырять находки и параллельно поставить перебирать другие, более объемные списки. Словарь содержит 4842 слова, но обычно, именно он отлично подходит для первоначального исследования веб‑приложения.
SecLists
SecLists — это целая коллекция словарей, которые очень пригодятся не только в багбаунти, но и при пентесте. Словари включают в себя юзернеймы, пароли, параметры URL, поддомены, веб‑шеллы и многое другое.
Assetnote Wordlists
Ещё однна подборка словарей для обнаружения разного рода контента и поддоменов. Словари генерируются 28-го числа каждого месяца с помощью commonspeak2 и GitHub Actions.
Помимо автоматически сгенерированных подборок, на сайте также есть словари, созданные вручную, с помощью Google BigQuery.
Самостоятельная генерация
Часто приходится генерировать собственные словари. Написать скрипт, конечно, не составит труда, но зачем так всё усложнять ?
Есть много инструментов для генерации словарей, но из опыта советую использовать Pydictor. Тулза предлагает большой набор функций, благодаря которым можно создать идеальный словарь практически для любой ситуации. Помимо этого, Pydictor умеет сравнивать файлы, подсчитывать частоту слов и объединять несколько словарей в один.
Разберем пример. Предположим, мы знаем, что пароль — модифицированная версия слова Password и может содержать:
- вместо
азнак@; - вместо
о0; - в конце от одного до трех чисел.
Генерируется такой словарь с помощью следующей команды:
./pydictor.py --conf '[P[a,@]{1,1}<none>ssw[o,0]{1,1}<none>rd[0-9]{1,3}<none>' --output /home/kali/Desktop/pydict
Здесь <none> означает, что утилите не нужно делать никаких дополнительных действий с подстановочной комбинацией.
В конце Pydictor выводит краткую сводку по процессу генерации.
Сканеры портов
Пройтись по всем портам в поисках интересного — увлекательное дело. При этом не стоит забывать, что даже внешне безобидные порты могут скрывать что‑то не вполне ожидаемое. Например, находил HTTP-сервис на 22-м порте: туда даже браузером зайти нельзя, только через curl или wget.
Если скоуп не особенно большой, то для скана подойдет Nmap, который точно не нуждается в представлении. Но что делать, если хостов очень много? Несмотря на то что Nmap — мощный инструмент, у него есть существенный недостаток — он медленный. Альтернатива, но не конкурент — masscan: он быстрый, но не настолько функциональный, как Nmap. Чтобы сканирование портов было действительно быстрым и эффективным, можно использовать оба сканера вместе.
MassMap
MassMap позволяет просканировать большое количество IP-адресов со скоростью masscan и тщательностью Nmap. MassMap написан на Bash, так что для его использования не придется ничего компилировать.
Перед началом сканирования скрипт проверит наличие всего необходимого для работы, а при отсутствии чего‑либо — автоматически установит того, чего не хватает.
Алгоритм прост: сначала с помощью masscan сканируются все 65 535 TCP-портов по переданному списку IP-адресов. После этого Nmap проходится по найденным открытым портам (в том числе с использованием скриптов), выдавая уже расширенную информацию по каждому. Результат можно сохранить в удобочитаемом формате.
Так как скрипт — это фактически обертка над сканерами, то можно изменить любые параметры, добавить какие‑то свои тулзы, в общем, творить и улучшать!