Инструментарий Кали Линукс: сбор информации или как найти поддомены интересующего хоста?
Как получить список поддоменов нужного сайта? В Кали Линукс для этого есть немалое количество инструментов, которые помогут раздобыть нужную информацию по всем фронтам. Чаще всего – это очень простые скрипты, где для описания работы каждого отдельной статьи не требуется. Так что, возможно, рассмотрим их вкупе с другими, обобщая разведывательный инструментарий Кали, который направлен с целью найти поддомены хостов. Специальными сервисами я пользоваться пока нарочито не буду, это пойдёт отдельной статьёй, однако для полноты потенциала кое-что я всё-таки предложу вам скачать со стороны. Начинаем с утилиты Fierce из состава Кали Линукс.
Что такое поддомен?
Если кто-то подзабыл, напомню структуру и компоненты URL, которые встречают нас в адресной строке. Так, на примере моего блога:
где:
- тип используемого протокола
- поддомен (субдомен, доменное имя с префиксом)
- домен высшего уровня (суффикс адреса)
- доменное имя (домен)
- имя хоста (хост)
На рисунке – главный адрес блога Компьютер76. Но если я захочу создать отдельный сайт на базе существующего блога, но обладающий другими характеристиками (скажем, для техподдержки или для разделения блога на компьютерную и мобильную версии), мне достаточно будет создать свой поддомен, у которого имя будет:
http://techhelp.computer76.ru
Как найти поддомены ресурса?
Поддомен, несмотря ни на что, это всё-таки тот же ресурс, но вид сбоку. И редко случается удача, когда уязвимость интересующего ресурса обнаруживается на поверхности. Работа с конкретным (единичным) адресом всегда требует излишней вкрадчивости и аккуратности, которая не всегда окупается. Потому о конкретном домене лучше узнать побольше: а вдруг администрация “профукала” какой-то из созданных поддоменов, который благодаря дырявости станет плацдармом для справедливого наказания владельцев ресурса? Начинаем с поиска субдоменов.
Далее. В каждой из утилит я буду приводить общие примеры для поиска поддоменов популярных ресурсов. Однако, если вы собираетесь найти поддомены для конкретной цели, не работайте из-под root .
Используем Fierce.
Интересный представитель доменных сканеров, но среди прочих обладает более продвинутым набором инструментов. Например, как только сканер обнаруживает реальный IP адрес, он включает обратный поиск с целью обнаружить пространство близлежащих IP адресов “вверх-вниз”. С этим брутфорс сканирование не справляется. Ну, или не всегда. А такая методика может помочь найти поддомены сайта более корректно. Для начала знакомимся со справкой ( я помогу с переводом, выдаю “как есть”):
fierce -h
Options:
-connect попытается установить HTTP соединения с любым из не RFC1918 (непубличным) адресов. Ответ будет содержать заголовки, но, если у компании множество целей, это может занять время. Против крупной компании с развитой сетевой инфраструктурой флаг применять не стоит, если у вас нет в распоряжении много свободного времени (на это могут уйти часы\дни). Внутри заданного файла текст “Host:\n” будет заменён на заданный хост. Применение:
perl fierce.pl -dns example.com -connect headers.txt
-delay время в секундах на ожидание между запросами.
-dns домен, который будет сканироваться.
-dnsfile использовать DNS серверы в текстовом файле (по одному в линию) для обратных просмотров (брут форс).
-dnsserver использовать конкретный DNS сервер для обратного просмотра (вероятно, это должен быть DNS сервер самой цели). Fierce по умолчанию
использует ваш DNS сервер для первоначального запроса по ресурсной записи DNS о сервере, хранящем эталонную информацию о домене, а затем использует DNS сервер жертвы для дополнительных запросов.
-file файл, куда вы запишите логи.
-fulloutput вместе с флагом -connect выведет на экран всё содержимое ответа сервера, а не только заголовки HTTP.
-help справка.
-nopattern не стоит использовать схему поиска, если вы решили отсканировать сеть на предмет ближайших к вам хостов. Вместо этого сделайте общий дамп. Это громковато, однако для поиска остальных доменов, используемых спамерами может быть полезно. К тому же число ложных срабатываний сильно возрастёт, особенно это касается крупных доменов.
-range сканирует внтренний диапазон IP адресов (должен присутствовать флаг -dnsserver). Однако, это лежит за пределами стандартной схемы поиска и просто выдаст всё, что сможет обнаружить. Применение:
perl fierce.pl -range 111.222.333.0-255 -dnsserver ns1.example.co
-search поиск по списку. Когда Fierce попытается отработать домен по обе стороны пространства IP адресов, она может “захватить” сервера в пределах других доменов, которые принадлежат той же компании. Если обеспечить Fierce списком с разделителем в виде точки, она сообщит обо всём, что обнаружит. Это очень полезно в случае, когда корпоративные сервера имеют другие названия, отличные от публичного сайта. Применение:
perl fierce.pl -dns examplecompany.com -search corpcompany,blahcompany
Отметьте, что применение этого флага может значительно расширить количество обнаруженных хостов, продолжая поиск, обнаружив дополнительные сервера. Чем больше, тем лучше.
-suppress без вывода в терминале (используется с флагом -file).
-tcptimeout установка особого промежутка на запрос (по умолчанию 10 сек.). Возможно, придётся увеличить время, если DNS сервер, к которому вы обращаетесь, медленно отвечает на запросы или у вас наблюдаются потери пакетов по естественным причинам.
-threads установка числа потоков сканирования(по умолчанию один).
-traverse установка числа IP адресов сверху и внизу диапазона, для какого-бы то ни обнаруженного в процессе сканирования. По умолчанию это 5 вверх и вниз. Сканирование с этим флагом не будет проводиться в других С-блоках IP диапазона.
-version выводит номер версии.
-wide сканирует весь С класс после обнаружения и сравнения имён хостов в этом С классе. Это генерирует большее количество трафика, однако раскрывая более подробностей.
-wordlist использует отдельный словарь (с одним словом в строке). Применение:
perl fierce.pl -dns examplecompany.com -wordlist dictionary.txt
Если с флагами скрипта в общих чертах ознакомились, переходим к практике. Как видите по описанию, некоторые из них громковаты, если работать напрямую в сетях, которые о вашем тестировании ничего не знают.
Как найти поддомены с помощью Fierce: пояснения
Начинаем с команды:
fierce -dns сайт.ру -threads 10
Флаг -threads немного ускорит процесс, запуская сканирование в 10 потоков одновременно. Первое, что Fierce делает, это обнаруживает имена серверов целевого домена. Затем проверяет присутствие зоны переноса. Если не получается, сканер проверяет наличие опции WildCard DNS (перенаправление запросов к несуществующим поддоменам на реально существующий). Если что-то себя проявляет, подключается скрипт на исполнение брутфорс против домена на основе прошитого в Fierce словаря. После работы скрипт выдаст в терминале список поддоменов с подсетями, которые можно будет работать другими сканерами, типа Nmap. Сразу рекомендуется обзавестись собственным словарём и указать на него с помощью ключа -wordlist: результаты сканирования после смены словаря могут порадовать. Флаг -connect, использованный в команде, заставит Fierce соединиться с обнаруженными онлайн поддоменами в попытке получить HTTP заголовки в виде ответа. А здесь можно получить дополнительную информацию, например, версию сервера, если в кармане наизготовку взяты пара действенных эксплойтов.
В заключении приведу несколько простейших команд, взятых с описания в одном из неофициальных репозиториев с последней версией Fierce :
fierce --domain google.com --subdomains accounts admin ads
Зондирует IP адреса рядом с обнаруженными доменами с целью найти смежные блоки с флагом –traverse:
fierce --domain facebook.com --subdomains admin --traverse 10
Ограничивает зондирование близлежащих IP до конкретных доменов с флагом –search:
fierce --domain facebook.com --subdomains admin --search fb.com fb.net
пытается установить соединение по протоколу HTTP с доменами, обнаруженными флагом –connect:
fierce --domain stackoverflow.com --subdomains mail --connect
Меняет скорость сканирования на его ширину флагом –wide, с помощью чего ищет близлежащие домены по всем IP адресам в пределах уже обнаруженного домена:
fierce --domain facebook.com --wide
Наличие зон переноса доменных имён сегодня редкость, однако с помощью ресурса zonetransfer.me можно присмотреться, как эти зоны работают, если придётся с ними столкнуться:
fierce --domain zonetransfer.me
Сохранит результаты сканирования в файл:
fierce --domain zonetransfer.me > результаты.txt
Внутренние сети часто имеют огромные блоки смежных IP, закреплённых за кем-то. Можно проверить и их:
fierce --dns-servers 10.0.0.1 --range 10.0.0.0/24
Успехов.