Пентест для начинающих: Разведка

Некоторое время назад, хорошенько поиграв во всевозможные CTF, я решил податься в пентест, а это значит то, что теперь я буду писать тематические статьи-заметки на избитые темы из этой области. И начну, пожалуй, с OSINT в применении к веб-ресурсам. А точнее, речь пойдет о том, как и откуда взять информацию, если в некотором bug bounty или заказе на тестирование цель описана как:

В принципе, эта информация в том или ином виде изложена в многочисленных методологиях, так что вы вряд ли узнаете что-то новое, если проводили пентесты сколько-нибудь продолжительное время.

Итак, наша цель - найти возможные поддомены и IP-адреса (особенно актуально в случае использования Cloudflare и подобного), относящиеся к цели. В качестве ОС (чтобы не заморачиваться с установкой/сборкой утилит) можно использовать: Kali Linux, Parrot Security, BlackArch или какую-либо еще сборку под аудит. Также можно взять Debian или Ubuntu и подключить репозитории Kali (самостоятельно или с помощью katoolin). Начнем с поиска поддоменов.
Основные способы поиска - это:

1. Перебор поддоменов
По сути - обращение к DNS-серверу с именем поддомена в попытке получить его IP-адрес. Перебор обычно осуществляется по словарю. Можно проделать с помощью следующих утилит:
dnsmap

SubBrute

dnsrecon

recon-ng

nmap

Вышеперечисленные утилиты в общем и целом похожи, с точки зрения выполнения данной задачи, результаты могут отличаться в зависимости от состава идущих в комплекте словарей, обработки wildcard DNS-записей и некоторых других аспектов. Лучше всего самостоятельно собрать комбинированный список, отфильтровать дубликаты и пользоваться им. Для формирования могут пригодиться коллекции словарей отсюда: https://github.com/danielmiessler/SecLists.

2. Поисковые системы
Если ресурсы не закрыты для индексации поисковиками, то поиск в Yandex, Google, Bing (не забываем про DuckDuckGo, если у вас паранойя, а также про специализированные поисковики: Shodan и Сensys) по доменному имени может помочь в обнаружении поддоменов, а также административных панелей, резервных копий, документов и прочей полезной информации.
Искать можно вручную или используя recon-ng, помогут следующие модули:

3. SSL-сертификаты, WHOIS, DNS
SSL-сертификаты, используемые сервером, могут содержать информацию о других доменных именах, для которых действителен данный сертификат. Например, посмотрим информацию о сертификате для домена www.hackerone.com:

Мы видим, что сертификат действителен для следующих доменов:

Может быть полезно посмотреть историю выдачи сертификатов для искомого домена, например, здесь: crt.sh.
Перейдем к WHOIS. Основное применение, как мы видим в Wikipedia, - "...получение регистрационных данных о владельцах доменных имён, IP-адресов и автономных систем.". Это дает возможность получить информацию о принадлежности IP-адреса и его подсети к конкретному владельцу (некоторые компании выкупают диапазоны IP-адресов и об этом явно указано в информации, получаемой через WHOIS). Например, вот информация из WHOIS об одном из IP-адресов, относящихся к Ebay:

Мы видим, что диапазоном 66.211.160.0/21 владеет Ebay.

А использовав WHOIS для доменного имени, можно получить информацию о DNS-сервере для данного домена (на примере Hackerone):

Существует множество сервисов, которые позволяют искать по истории WHOIS, например: www.whoishistory.ru, www.domainhistory.net.
Перейдем к DNS. В DNS содержится множество записей различного вида, поэтому за полным описанием лучше обратиться к Wikipedia. Что же полезного в применении к нашей ситуации там содержится?
Во-первых, A и AAAA записи, содержащие IP-адреса для данного доменного имени, во-вторых, MX, SOA, SRV, NS записи, которые могут содержать информацию о дополнительных доменах, а также TXT, которая содержит произвольные данные, например, там размещаются так называемые SPF-записи. Пример SPF-записи для kaimi.io:

Получить содержимое какой-либо из записей можно с помощью стандартных утилит Linux:

AAAA - тип записи. Особых отличий в результате использования данных утилит не наблюдается. Не стоит забывать о таком типе запросов к DNS, как AXFR:

Это реальная возможность получить кучу полезной информации о доменах, которая редко работает, а если работает, то чаще в какой-то внутренней сети компании. Почему? Это довольно грубая ошибка при конфигурировании DNS-сервера.
Если у вас нет под рукой Linux, то можно воспользоваться онлайн сервисом: mxtoolbox.com. Как и в случае с WHOIS, существует множество сервисов, которые отслеживают изменения в DNS, например: whatmyip.co, viewdns.info, ptrarchive.com, dnstrails.com, dnshistory.org.

4. Всякое разное
Какие еще существуют варианты обнаружения доменов, IP-адресов? В случае с Cloudflare может пригодиться этот ресурс - www.crimeflare.com, также на форуме exploit.in мелькала услуга определения реального IP, которая выполняется каким-то альтернативными методами. Если веб-сайт обладает формой, где предполагается указать свой e-mail адрес, чтобы впоследствии получить на него письмо, то это тоже может помочь в виду возможного раскрытия IP в служебных заголовках. Ниже приведен пример письма, отправляемого при регистрации на forum.kaimi.io.

Самая первая строчка выдает реальный IP-адрес веб-сервера, на котором размещены блог и форум.
Иногда сайт содержит некоторую логику, которая предполагает совершение HTTP/DNS/каких-либо еще запросов к заданным сайтам (например, если требуется подтвердить владение сайтом путем размещения на нем файла или путем создания дополнительной записи в DNS, что впоследствии проверяется). Может помочь публично доступный скрипт, содержащий phpinfo или страница server-status, но это уже можно отнести к уязвимостям. И, наконец, не стоит забывать о банальном анализе HTML-кода, JS-скриптов и CSS-стилей, которые используются на ресурсе, вдруг где-то что-то полезное обнаружится. Вот и все на сегодня. Конечно, как и везде, существуют нюансы, ситуации, которые в данной статье не рассматриваются, но я надеюсь, что и эта информация окажется для кого-то полезной.

Пентест для начинающих: Разведка: 17 комментариев

  1. Наконец-то обновление в блоге ;-)

    В начале статьи ты сказал, что успел поучаствовать в CTF. Расскажи, пожалуйста, в каких именно соревнованиях принимал участие: в оффлайне посещал какие-то ивенты или на онлайн ресурсах?

    Ты скорее всего уже её прочёл, но весьма в тему будет книжка "Web Hacking 101: How to make money hacking ethically".

    1. Это какая то скрытая реклама блога того задрота который начитавшись лурка начал тупо косить под Kaimi и Dx?

  2. А можете подсказать с чего начать, чтобы шарить в пентестах, да и даже элементарно на CTF уметь что-то сделать. Кодить умею, но наткнувшись на этот сайт - я понял что я полное дно. Теперь надо наверстать упущенное.

  3. Спасибо, давно тут не был, помнишь меня может по айпишке)

    Незнаю почему но эта йоба %% часто помогает посмотреть какой вебсервер стоит + версию apache или nginx http://dnstrails.com/%%

    Под старые nginx есть много эксплойтов, в том числе и ddos и магическое проникновение

    Пиши еще

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *