OSINT или разведка по открытым источникам
Поиск по открытым источникам — это методология сбора и анализа данных, находящихся в открытом доступе, для получения дополнительной информации о цели.
В данной статье расскажем о том, какими методами и средствами можно собирать информацию из открытых источников об организации, покажем примеры такой информации и расскажем о максимально большом количестве утилит и методов, которые могуть помочь увеличить покрытие.
Надеемся, что статья будет полезна как пентестерам и охотникам за ошибками для увеличения области аудита, так и стороне защиты (blue team, application security и т.д.) для защиты инфраструктуры своей организации.
Дисклеймер
В рамках статьи, понятия OSINT, open-source intelligence, recon, reconnaissance, рекогносцировка и поиск по открытым источникам будут синонимами.
В статье приведены только бесплатные программы, с открытым исходным кодом и программы с пробным периодом.
С чего все начинается
Самым первым этапом проведения пентеста (после заключения договора) является выделение области тестирования и сбор информации о цели. В зависимости от специфики конкретного пентеста количество изначальных сведений может отличаться, однако, предполагается, что на данном этапе мы знаем:
Название организации.
Род деятельности организации.
Доменное имя организации.
Что можно получить благодаря поиску в интернете?
Из одного домена сделать множество доменов и поддоменов.
Найти новые точки входа.
Найти интересные пути в веб-приложениях и API.
Получить информацию об используемом ПО, аппаратных компонентах и используемых языках программирования.
Найти учетные записи, которые могут быть активными в целевых веб-приложениях.
Найти уязвимости.
OSINT workflow\mindmap
Казалось бы, что пользоваться поисковыми системами умеет каждый, но при этом множество исследователей пишут огромные статьи и майндмапы как они эффективно ищут в интернете. Например, по ссылке доступна подборка таких майндмапов. Подборке уже несколько лет, но она все еще остается актуальной.
Стоит заметить, что осинт это циклический процесс: если мы находим какую-либо информацию, например, новый IP адрес или доменное имя, то для них надо проделать все те же шаги, которые мы прошли, чтоб их найти.
OSINT Framework
Самый популярный майндмап для поиска по открытым источникам это OSINT Framework.
Его прелесть в том, что он вобрал в себя всевозможные сайты, утилиты и базы данных, которые могут быть полезны при реконе. На любой ваш вопрос по осинту, скорее всего, в нем будет ответ.
Единственный минус в том, что он сделан для стран наподобие США, и он не учитывает, что в России своя специфика.
Активная и пассивная разведка
Рекон подразделяется на 2 этапа: пассивная и активная разведка.
Пассивная разведка
Во время пассивной разведки вы никак не взаимодействуете с вашей целью. Вы не отправляете ей пакеты со своего компьютера, вы не резолвите доменные имена на серверах цели, вы не пингуете ее айпишники, вы не заходите на ее веб-приложения, и даже двери офиса не трогаете.
Примеры данного этапа разведки:
Поиск в поисковых системах типа Google и "хакерских" поисковых системах, просмотр баз данных с утечками, анализ вакансий на HH и linkedin, извлечение метаданных из публично доступных файлов и т.д.
Активная разведка
Взаимодействие с инфраструктурой организации: скан портов, перебор директорий, запуск "шумных" сканеров (Acunetix, Burp Pro Active Scanner и т.д.), фаззинг параметров, резолвинг большого количества доменных имен на серверах цели и т.д.
Такие действия создают много логов в SIEM-системах, триггеров в SOC и могут даже положить несколько серверов.
В данной статье будет затронута только тема пассивной разведки.
Начинаем разведывать
Давайте для начала вспомним про самые популярные записи DNS, которые могут быть нам полезны:
А запись — соответствие домена IPv4-адресу.
AAAA запись — соответствие домена IPv6-адресу.
CNAME — Canonical name — используется для того, чтобы один домен мог указывать на другое имя домена.
MX — Mail Exchange — адрес почтового сервера.
TXT — большая текстовая строка длиной 65535 байт. Используется для публичных ключей, SPF, и другой информации.
NS — Name Server — указание на сервер резолвинга доменных имен.
SOA — Start of Authority — информация об администраторе домена. Используется при делегировании домена. В записи содержится Name Server, ответственное лицо и таймстемпы, относящиеся к срокам делегирования.
PTR — Pointer — содержит IP-адрес, который указывает на домен при reverse DNS lookup (обратном резолвинге).
Доменные имена
Самое первое и простое что мы можем сделать — это порезолвить доменные имена. Для этого есть десятки утилит, как терминальных так и доступных онлайн.
Неполный список утилит и сервисов, которые могут разрезовлить доменное имя:
Selfhosted:
Nslookup (linux\windows nslookup yandex.ru).
Ping (linux\windows ping yandex.ru).
Traceroute (linux traceroute ya.ru \ windows tracert ya.ru).
Dig (linux dig @8.8.8.8 yandex.ru ANY).
Host (linux host yandex.ru).
getent (linux getent hosts yandex.ru).
resolveip (linux resolveip -s yandex.ru).
Resolve-DnsName (windows Resolve-DnsName -Name yandex.ru).
Online:
Пример результата работы веб-приложения
dns.google.com — резолвинг доменного имени yandex.ru
https://www.dnsqueries.com/en/dns_lookup.php
Пример результата работы веб-приложения
dnsqueries.com — резолвинг доменного имени yandex.ru
https://whatismyipaddress.com/hostname-ip
Пример результата работы веб-приложения
whatismyipaddress.com — резолвинг доменного имени yandex.ru
https://dnschecker.org/all-dns-records-of-domain.php
Пример результата работы веб-приложения
dnschecker.org — резолвинг доменного имени yandex.ru
https://check-host.net/check-dns
Пример результата работы веб-приложения
check-host.net — резолвинг доменного имени yandex.ru
Пример результата работы веб-приложения
bgp.he.net — резолвинг доменного имени yandex.ru
Что это нам дает?
Помимо соответствия IP-адрес—домен мы можем узнать, например, DNS-серверы, с помощью утилиты nslookup, а также можем получить все DNS-записи, например, командой dig.
Имея IP-адреса веб-приложений мы можем начать смотреть соседние IP-адреса в подсетях, перебирать виртуальные хосты и изучать владельцев этих IP-адресов.
DNS-серверы нам могут в дальнейшем помочь при активной разведке для перебора поддоменов и проведения различных атак.
Whois
Whois — протокол, основная цель которого заключается в получении регистрационных данных о владельцах доменных имён, IP-адресах и автономных систем (ASN).
Изначально целью появления системы Whois было дать возможность системным администраторам искать контактную информацию других администраторов серверов по IP-адресам и доменным именам.
Неполный список утилит и сервисов, которые могут показать содержимое Whois:
Whois (windows\linux whois yandex.ru и whois 77.88.55.77)
Пример результата работы веб-приложения
whois.ru — получение записи whois для доменного имени yandex.ru
https://dnschecker.org/ip-whois-lookup.php
Пример результата работы веб-приложения
dnschecker.org — получение записи whois для IP-адреса 5.255.255.55
Пример результата работы веб-приложения
bgp.he.net — получение записи whois для IP-адреса 77.88.55.77
Что это нам дает?
Из вывода Whois можно получить email-адреса владельцев и администраторов, адреса DNS-серевров, подсети и ASN.
Whois history
Существуют сервисы периодически собирающие и агрегирующие записи Whois. Благодаря таким сервисам можно поностальгировать и получить использующиеся ранее почты, хостинги, DNS-серверы и целые подсети:
Сервис заброшен, расширенный поиск не работает, но все еще можно получить историю по имени домена в зонах .ru и .рф (пока не вылезет капча)
Пример результата работы веб-приложения
whoishistory.ru — получение истории записей whois для доменного имени vkontakte.ru
https://tools.whoisxmlapi.com/whois-history-search
Пример результата работы веб-приложения
tools.whoisxmlapi.com — получение истории записей whois для доменного имени vkontakte.ru
Reverse Whois
Тогда как Whois выдает сведения по доменым именам или IP-адресам, обратный Whois позволяет искать по всей информации, которая есть в выводе обычных Whois, например, по email-адресам, по именам владельцев, по организациям и т.д.
Таким образом можно расширить скоуп найдя новые email-адреса, хостинги, DNS-серверы, подсети, доменные имена и поддомены.
Неполный список сервисов, которые могут искать по содержимому Whois:
Пример результата работы веб-приложения
reversewhois.io — поиск по записям whois для email-адреса noc@vk.com
https://viewdns.info/reversewhois
Пример результата работы веб-приложения
viewdns.info — поиск по записям whois для email-адреса noc@vk.com
Что это нам дает?
Поиск по содержиму Whois позволяет находить забытые администраторами веб-приложения и сервисы, особенно, если использовать его вместе в поиском по истории Whois.
Также можно обнаружить:
Email-адреса.
Хостинг-провайдеров.
DNS-серверы.
Подсети.
Домены и поддомены.
SPF и DMARC
SPF и DMARC нужны для отправки и приема почты, а в частности для того чтобы злоумышленники от вашего имени не отправляли письма.
SPF — это подпись, содержащая информацию о серверах, которые могут отправлять письма. В SPF используются свои правила и синтаксис. В том числе, в ней содержатся IP-адреса и доменные имена.
DMARC — это политика, которая показывает как обращаться с письмами, которые пришли не с доменов указанных в SPF.
Неполный список утилит для поиска и анализа SPF и DMARC:
SPF:
https://mxtoolbox.com/spf.aspx
Пример результата работы веб-приложения
mxtoolbox.com — поиск SPF-записей для доменного имени yandex.ru
https://www.dmarcanalyzer.com/spf/checker/
Пример результата работы веб-приложения
dmarcanalyzer.com — поиск SPF-записей для доменного имени yandex.ru
https://dmarcian.com/spf-survey/
Пример результата работы веб-приложения
dmarcian.com — поиск SPF-записей для доменного имени yandex.ru
DMARC:
https://mxtoolbox.com/DMARC.aspx
Пример результата работы веб-приложения
mxtoolbox.com — поиск DMARC-записей для доменного имени yandex.ru
https://dmarcian.com/dmarc-inspector/
Пример результата работы веб-приложения
dmarcian.com — поиск DMARC-записей для доменного имени yandex.ru
Для анализа SPF также есть selfhosted утилита, которая извлекает поддомены из SPF записей https://github.com/0xbharath/assets-from-spf.
Пример запуска и результат работы утилиты
python assets_from_spf.py spacex.com
IP и подсети
Reverse DNS lookup
Обратный резолв DNS-адресов — поиск по PTR записям DNS. Если администратор добавил такую запись, то по IP-адресу можно будет узнать, какие доменные адреса на него указывают.
Неполный список сервисов, которые могут провести Reverse DNS lookup:
https://check-host.net/check-dns
Пример результата работы веб-приложения
check-host.net — проведение Reverse DNS lookup для IP-адреса 77.88.55.77
https://dnschecker.org/ip-to-hostname.php
Пример результата работы веб-приложения
dnschecker.org — проведение Reverse DNS lookup для IP-адреса 77.88.55.77
https://mxtoolbox.com/ReverseLookup.aspx
Пример результата работы веб-приложения
mxtoolbox.com — проведение Reverse DNS lookup для IP-адреса 77.88.55.77
https://dnschecker.org/reverse-dns.php
Пример результата работы веб-приложения
dnschecker.org — проведение Reverse DNS lookup для IP-адреса 77.88.55.77
Что это нам дает?
В приложениях часто используется роутинг на основании имени хоста (vhosts), поэтому зная только IP-адрес, мы попадем на страницу ошибки веб-сервера, а с помощью Reverse DNS lookup можно получить имя хоста и добраться к самому веб-приложению.
DNS history
История DNS записей домена. Существуют сервисы, которые запоминают записи DNS, и показывают их историю.
Сервис https://viewdns.info/iphistory, запоминает только A записи доменов и дату привязки.
Пример результата работы веб-приложения
А сервис https://securitytrails.com/, помимо А записи, позволяет искать также по АААА, MX, NS, SOA и TXT записям.
Пример результата работы веб-приложения
Что это нам дает?
Это позволяет расширить область аудита, узнав новые IP-адреса, а также получить:
DNS-серверы.
Доменные имена.
Почтовые серверы.
Если узнать IP-адреса, которые использовались ранее, тогда можно даже обойти Web Application Firewall. Поиск старых IP-адресов, например, один из методов обхода защиты Cloudflare.
Помимо приведенных выше веб-сервисов можно также воспользоваться selfhosted решениями:
https://github.com/MrH0wl/Cloudmare
Пример запуска и результат выполнения утилиты
Перед первым запуском изменить ключи от API сервисов в файле data/apis/api.conf.
python3 сloudmare.py -u yandex.ru
Поиск утилитой сloudmare.py IP-адресов, ранее указовывших на доменное имя yandex.ru
https://github.com/m0rtem/CloudFail (проект сейчас мертв, но, надеемся, что скоро его оживят)
ASN lookup
ASN (autonomous system number) — номер автономной системы.
Интернет состоит из локальных сетей, каждая из которых имеет подсети и свои политики маршрутизации, и которые соединяются с другими локальными сетями. Одна такая локальная сеть, это одна автономная система и у нее есть уникальный номер — ASN. Эти номера используются в BGP-маршрутизации.
По номеру AS можно посмотреть IP-адреса и подсети, которые в ней содержатся. Если это большая компания, типа Яндекса, или университетов, то можно предположить что вся AS принадлежит этой компании, и большая ее часть, может войти в область аудита. Также в выводе можно обнаружить почтовые адреса и другую информацию о компании.
Неполный список сервисов, которые имеют возможность поиска по ASN:
Пример результата работы веб-приложения
bgp.he.net — анализ AS с номером 13238
Пример результата работы веб-приложения
ipinfo.io — анализ AS с номером 13238
https://viewdns.info/asnlookup/
Пример результата работы веб-приложения
viewdns.info — анализ AS с номером 13238
Поисковые системы
Как гуглить?
Вы каждый день пользуетесь поисковиками типа Google или Яндекс, но, наверное, не все подозревают, что умеет этот самый Google.
Используя немного магии поиска можно получить множество полезной информации.
Что можно получить из поисковой системы?
Поддомены.
Диапазоны IP-адресов.
Информацию об утечках учетных данных.
Комментарии в исходном коде.
Веб-страницы для разработчиков (например dev.*).
Файлы и страницы, содержащие секреты и пароли.
Карты веб-сайтов.
Закэшированные страницы.
Потенциально опасные файлы.
URL-адреса и пути, которые могут являться точками входа.
Другие ресурсы, связанные с организацией.
Как искать?
Для поиска нужно использовать специальные операторы. Например, список операторов для Google:
“” – точное совпадение.
– исключить из поиска.
Логические операторы: &, ||.
Site:itmo.ru – поиск в пределах сайта.
cache:itmo.ru – возвращает кэш сайта.
filetype:txt – только txt файлы.
related:itmo.ru – сайты связанные с искомым.
inurl:test – в URL встречается слово test.
intitle:test – в Title встречается слово test.
intext:test – в тексте встречается слово test.
В других поисковых системах список операторов может отличаться.
По продвинутому использованию поисковиков существует множество статей, поэтому не будем углубляться в эту тему:
https://www.exploit-db.com/google-hacking-database — подборка готовых полезных нагрузок для поиска Google.
https://habr.com/ru/post/437618/ — полный список операторов поиска Google.
https://yandex.ru/support/search/query-language/search-operators.html — документация по поиску в Яндекс.
https://www.tutorialspoint.com/google_hacking_tests.htm — однокнопочное решение для поиска: вводите домен, нажимаете на нужную кнопку и получаете вывод Google.
Пример результата работы веб-приложения
tutorialspoint.com — использование дорка intitle:index.of для доменного имени yandex.ru
Поисковые системы для хакеров
Помимо поиска в обычных поисковых системах типа Google можно искать в специальных "хакерских" поисковых системах. Примеры таких поисковиков:
Эти сервисы постоянно сканируют весь интернет, и заполняют свои базы ответами серверов.
Все приведенные выше сервисы имеют платные функции, но без покупки подписки можно получить ограниченный вывод, ограниченную функциональность или ограниченное количество запросов в месяц.
Shodan
Сервис позволяет искать по IP-адресам, портам и содержимому ответов сервера. Это может позволить найти новые поддомены, а также то, что не смог найти Nmap.
Для поиска используется свой синтаксис, с которым можно ознакомиться по ссылке https://help.shodan.io/the-basics/search-query-fundamentals.
Censys
Censys этот тот же самый Shodan, но более новый и с приятным интерфейсом.
Опять же используется свой синтаксис, с которым можно ознакомиться по ссылке: https://search.censys.io/search/language.
Binaryedge
Еще более новая разработка это сервис BinaryEdge.
Помимо тех же функций, которые имеются и в Shodan и в Censys, данный сервис еще умеет искать поддомены, email-адреса в утечках данных, умеет искать изображения, связанные с доменом, и в этих картинках умеет искать по тексту.
В сервисе есть еще несколько различных функций, но они уже недоступны в бесплатных и пробных версиях.
Документация с примерами доступна по ссылке: https://docs.binaryedge.io/search/.
Метаданные
Каждый раз, когда вы создаете или редактируете файл, в нем остается множество метаданных. Когда вы загружаете этот файл в интернет, зачастую метаданные сохраняются. Так как поисковые системы индексируют файлы, вы можете найти их, например, в google используя оператор поиска file.
Существуют уже готовые решения, которые позволяют ввести домен, выбрать интересующие расширения файлов и ожидать результатов:
https://github.com/laramies/metagoofil
Пример запуска и результат выполнения утилиты
python metagoofil.py -d yandex.ru -t doc,pdf -o yandex -f output -n 100 -l 100
Поск метаданных с помощью утилиты metagoofil.py для доменного имени yandex.ru
https://github.com/ElevenPaths/FOCA
Пример запуска и результат выполнения утилиты
Поск метаданных с помощью утилиты FOCA для доменного имени yandex.ru Результаты поиска и анализа метаданных для доменного имени yandex.ru
Что нам это дает?
Email-адреса
ФИО сотрудников
Используемое ПО
Используемые операционные системы
IP-адреса
Поддомены
Системы контроля версий
Системы контроля версий (github, gitlab и т.д.) также обладают возможностями расширенного поиска. У них свой синтаксис и свои "дорки".
Что нам это дает?
Пароли и секреты.
Части кода приложений.
Несколько полезных ссылок для поиска по коду:
https://publicwww.com/ — ищет по фронтенд-коду веб-сайтов. Документация по синтаксису https://publicwww.com/syntax.html.
Пример результата работы веб-приложения
publicwww.com — поиск веб-сайтов использующих CMS Joomla
https://searchcode.com/ — ищет по опубликованному исходному коду в публичных системах контроля версий.
Пример результата работы веб-приложения
searchcode.com — поиск слова yandex в файлах secrets.yml в нескольких системах контроля версий
https://github.com/techgaun/github-dorks — полезная информация по операторам поиска на github.
Также есть несколько selfhosted сервисов для поиска секретов на github:
https://github.com/eth0izzle/shhgit
Пример запуска и результат выполнения утилиты
Основная прелесть утилиты в том, что она постоянно производит сканирование репозиториев, и как только появляются секреты в коммитах, оперативно вам об этом сообщает.
Со стандартными настройками утилита будет сканировать все системы контроля версий в поисках заданных сигнатур в файле config.yaml. Для эффективного поиска данных по заданной цели рекомендуется писать свои сигнатуры.
shhgit --config-path path_to_config
Запуск утилиты shhgit для поиска секретов на github.com Для демонстрации можно попробовать указать в параметре search-query интересующую строку, например:
shhgit --config-path path_to_config --search-query yandex
Запуск утилиты sshgit для поиска строки yandex на github.ru Также можно указать локальные репозитории для поиска секретов.
shhgit --config-path path_to_config --local path_to_repository
Запуск утилиты sshgit для поиска секретов в репозиториях, расположенных на файловой системе
https://github.com/michenriksen/gitrob
Сведения об установке, пример запуска и результат выполнения утилиты
При установке могут возникнуть проблемы.
Рекомендуется воспользоваться таким способом установки:
git clone https://github.com/michenriksen/gitrob.git
cd gitrob
go mod init github.com/michenriksen/gitrob
go mod download github.com/elazarl/go-bindata-assetfs
go get github.com/michenriksen/gitrob/core
rm Gopkg*
go build .
Для работы нужно экспортировать токен доступа в переменную среды:
export GITROB_ACCESS_TOKEN=deadbeefdeadbeefdeadbeefdeadbeefdeadbeef
Запуск:
./gitrob организация_или_имя_пользователя
Запуск утилиты gitrob для поиска секретов в репозиториях организации Результаты доступны как в терминале, так и в веб-версии.
Веб-версия утилиты gitrob, содержащая результатаы анализа репозиториев
https://github.com/zricethezav/gitleaks
Утилита ищет секреты в репозиториях на файловой системе.
Пример запуска и результат выполнения утилиты
Запуск производится в директории целевого реозитория:
gitleaks detect -v
Запуск утилиты gitleaks для поиска секретов в репозитории на файловой системе
Также, если мы нашли никнеймы и email-адреса сотрудников, мы можем поискать их аккаунты в различных системах контроля версий, и посмотреть, что они коммитят. Потенциально возможно найти в личных репозиториях сотрудников части кода приложений компании-цели.
Также, стоит заметить, что нужно анализировать не только последнюю версию исходного кода в ветке master, но и предыдущие коммиты. Сотрудник может закоммитить критичные данные в систему контроля версий, понять, что он "накосячил" и удалить их следующим коммитом. Не удалив сам коммит из истории.
Что еще можно получить из систем контроля версий?
Gitlab имеет возможность перечисления пользователей по URL-адресам вида: https://gitlab.com/api/v4/users/1, где 1 это порядковый номер пользователя. В selfhosted версиях gitlab такая уязвимость тоже присутствует.
Помимо ссылок на социальные сети, из вывода API Gitlab можно получить захэшированное значение почты пользователя в параметре avatar_url. Если мы знаем, например, имя домена и ФИО пользователя, то восстановить исходное значение не составит труда, ведь для хэширования используется md5.
Также в системах контроля версий существуеют возможность получения публичных ssh и gpg ключей. Получить их можно по URL-адресам следующего вида:
https://github.com/<username>.keys
https://github.com/<username>.gpg
https://bitbucket.org/api/1.0/users/<username>/ssh-keys
https://gitlab.com/<username>.keys
Subdomain enumeration
Subdomain enumeration — в дословном переводе означает перечисление поддоменов, а смысл у словосочетания примерно следующий: «использовать все известные методы для получения как можно большего числа поддоменов».
Для получения списка поддоменов существуют онлайн базы, а также утилиты, которые требуется запускать локально, после чего они будут делать запросы в различные онлайн сервисы и поисковые системы.
Неполный список сервисов и утилит, которые могут показать список поддоменов для домена:
Online сервисы:
https://hackertarget.com/find-dns-host-records/
Пример результата работы веб-приложения
hackertarget.com — поиск поддоменов для доменного имени yandex.ru
Пример результата работы веб-приложения
securitytrails.com — поиск поддоменов для доменного имени yandex.ru
Как получить поддомены с помощью Cloudflare
У сервиса есть довольно интересная функциональность, учитывая то, что Cloudflare создан для защиты от атак.
Если зарегистрироваться с бесплатным аккаунтом в Cloudflare, то можно будет начать добавлять свой сайт в сервис, причем неважно, привязан он к какому-нибудь аккаунту или нет.
На первом шаге вводим доменное имя цели, а на следующем шаге, Cloudflare нам предоставляет известные ему поддомены с их A записями. Вероятно, это создано для того, чтобы вы привязали как можно больше поддоменов к сервису для защиты от атак, но для разведчика, эта функциональность позволяет получить несколько новых поддоменов и IP-адресов.
cloudflare.com — поиск поддоменов для доменного имени yandex.ru
По имени домена утилита выводит поддомены, IP-адреса, MX и TXT записи, открытые порты и версии программного обеспечения, DNS-серверы. Также утилита строит красивый граф.
Пример результата работы веб-приложения
dnsdumpster.com — поиск поддоменов для доменного имени yandex.ru dnsdumpster.com — граф основанный на данных доменного имени yandex.ru
Пример результата работы веб-приложения
threatminer.org — поиск поддоменов для доменного имени yandex.ru
https://spyse.com/tools/subdomain-finder
Пример результата работы веб-приложения
spyse.com — поиск поддоменов для доменного имени yandex.ru
Selfhosted:
https://github.com/aboul3la/Sublist3r
Утилита для поиска поддоменов в открытых источниках. Также может перебирать поддомены по словарю, с помощью утилиты subbrute.
Пример запуска и результат выполнения утилиты
Пример запуска:
python3 sublist3r.py -d yandex.ru
Запуск утилиты sublister для поиска поддоменов для доменного имени yandex.ru
https://github.com/projectdiscovery/subfinder
Очередная утилита для пассивного поиска поддоменов.
Пример запуска и результат выполнения утилиты
Для лучшего вывода рекомендуется в конфигурационном файле добавить API ключи сервисов (рекомендуется использовать как минимум SecurityTrails, GitHub, Shodan и VirusTotal).
Пример запуска:
subfinder -d yandex.ru
Запуск утилиты subfinder для поиска поддоменов для доменного имени yandex.ru Результат поиска поддоменов для доменного имени yandex.ru утилитой subfinder
https://github.com/OWASP/Amass
Утилита, как и Sublist3r, ищет информацию о доменах в открытых источниках. Однако, использует гораздо большее число источников, в том числе требующие API-ключи.
Пример запуска и результат выполнения утилиты
Предварительно рекомендуется создать конфигурационный файл с API-ключами сервисов (рекомендуется использовать как минимум SecurityTrails, GitHub, Shodan и VirusTotal).
Пример запуска:
./amass enum --config amass_config.ini -d yandex.ru
Запуск утилиты amass для поиска поддоменов для доменного имени yandex.ru
https://github.com/blechschmidt/massdns
Очень быстрая утилита для резола доменов с достаточно большим количеством ошибок. Позволяет разрезолвить миллион доменных имен за минуту.
Пример запуска и результат выполнения утилиты
Рекомендуется запускать на серверах с широким каналом, а не на домашних ПК.
Пример запуска:
sed 's/$/.domain.com/g' /dicts/dns/subdomains.txt | ./bin/massdns -r lists/resolvers.txt -s 20000 -o S -t A -w subdomains_domain.com
Процесс резолвинга поддоменов утилитой massdns Результат резолвинга поддоменов утилитой massdns для домена yandex.ru Словари можно найти, например, в репозитории https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS или на сайте https://wordlists.assetnote.io/.
Список резолверов можно найти в репозитории https://raw.githubusercontent.com/janmasarik/resolvers/master/resolvers.txt.
https://github.com/projectdiscovery/shuffledns
Обертка для massdns. Его преимущество заключается в том, что данная утилита удаляет из вывода поддомены, если слишком большое количество доменов указывает на один IP-адрес, тем самым повышая качество вывода.
Пример запуска и результат выполнения утилиты
Запускается похожим образом:
sed 's/$/.yandex.ru/g' /dicts/dns/subdomains.txt | /root/go/bin/shuffledns -t 10000 -d yandex.ru -massdns massdns/bin/massdns -r list/resolvers.txt -o output.txt
Резолвинг поддоменов утилитой massdns для домена yandex.ru
Подробнее, об указанных выше утилитах, а также десятках других утилит, можно прочитать в статье: https://pentester.land/cheatsheets/2018/11/14/subdomains-enumeration-cheatsheet.html.
SSL\TLS сертификаты
Получение новых поддоменов из сертификатов
Для шифрования трафика у веб-приложения должен быть сертификат, по которому браузер пользователя сможет определить, что этот сайт надежен.
Google решил, что протокол https недостаточно надежный, и создал свой проект по мониторингу и проверке сертификатов https://transparencyreport.google.com/https/certificates
Этот сервис предназначен не для тестирования на проникновение или разведки, но так как сертификаты выпускаются как для доменов, так и для поддоменов, а иногда один сертификат даже включает в себя множество доменов и поддоменов, сервис Google может дать нам довольно много информации.
Также есть еще как минимум два онлайн сервиса с подобной функциональностью:
https://spyse.com/tools/ssl-lookup
Пример результата работы веб-приложения
spyse.com — поиск сертификатов для доменного имени yandex.ru и его поддоменов
Пример результата работы веб-приложения
crt.sh — поиск сертификатов для доменного имени yandex.ru и его поддоменов
Cуществует один self-hosted сервис https://github.com/lanrat/certgraph.
Пример запуска и результат выполнения утилиты
certgraph yandex.ru
Для построения графов нужно запустить утилиту с ключом "json" и скопировать вывод на веб-страницу.
certgraph -json yandex.ru
certgraph --serve 127.0.0.1:8080
SSL\TLS scan
Сертификаты также можно провалидировать. Для этого есть онлайн сервисы, которые за нас отправляют запросы на серверы нашей цели.
Из вывода этих сервисов мы можем опять же получить поддомены, которые есть в сертификате, а также эти сервисы могут найти уязвимости в используемой криптографии или протоколах.
Еще эти сервисы выводят http-ответы серверов, в которых может находиться версия сервера или используемого ПО.
Неполный список сервисов, которые могут просканировать сертификаты.
https://www.cyphercraft.io/tls
Пример результата работы веб-приложения
cyphercraft.io — анализ конфигурации SSL\TLS веб-сервера для доменного имени yandex.ru
https://ssltools.digicert.com/checker/views/checkInstallation.jsp
Пример результата работы веб-приложения
ssltools.digicert.com — анализ конфигурации SSL\TLS веб-сервера для доменного имени yandex.ru
https://decoder.link/sslchecker
Пример результата работы веб-приложения
decoder.link — анализ конфигурации SSL\TLS веб-сервера для доменного имени yandex.ru
https://www.immuniweb.com/ssl/
Пример результата работы веб-приложения
immuniweb.com — анализ конфигурации SSL\TLS веб-сервера для доменного имени yandex.ru
https://www.ssllabs.com/ssltest
Пример результата работы веб-приложения
ssllabs.com — анализ конфигурации SSL\TLS веб-сервера для доменного имени yandex.ru
Что это нам дает?
Новые поддомены
Уязвимости криптографии
Версия используемого ПО на сервере
Credentials stuffing
Credentials stuffing — это атака, при которой атакующий находит почты пользователей и ищет пароли от них в базах утечек, а затем пытается вставить их во все возможные формы входа целевой системы.
Сама атака уже не относится к пассивной разведке, но сбор паролей и email-адресов - это тема данной статьи.
Пароли можно поискать в следующих сервисах:
https://haveibeenpwned.com/ — самый популярный сервис поиска утечек email-адресов.
Пример результата работы веб-приложения
haveibeenpwned.com — поиск утечек учетных данных для email-адреса noc@vk.com
https://krevetk0.medium.com/credential-stuffing-in-bug-bounty-hunting-7168dc1d3153 — статья исследователя, в которой он рассказывает, как он неоднократно эксплуатировал данную уязвимость в bugbounty.
https://psbdmp.cc/ — сервис, который автоматически находит строки, похожие на пароли в файлах, размещенных на веб-сайте pastebin.com
Пример результата работы веб-приложения
psbdmp.cc — автоматизированный поиск секретов в сервисе pastebin.com
Collection #1 — сборник практически всех утечек, которые попадали в интернет.
Поиск email-адресов
Для проведения атак credential stuffing для социальной инженерии и других атак, необходимо иметь список email-адресов и/или юзернеймов пользователей. Также по email-адресам можно делать поиск reverse Whois.
Нам известно два сервиса, которые собирают email-адреса:
https://hunter.io/search — помимо адресов, показывает еще и страницы, где он их нашел.
Пример результата работы веб-приложения
hunter.io — поиск email-адресов для доменного имени vk.com
Пример результата работы веб-приложения
snov.io — поиск email-адресов для доменного имени vk.com
Также, существует утилита, позволяющая провалидировать почтовые адреса https://github.com/reacherhq/check-if-email-exists. Причем она работает без отправки писем на адреса цели. Можно не хостить ее у себя, а воспользоваться веб-версией от разработчиков, с ограничением на количество запросов https://reacher.email/.
Пример общения с веб-версией
curl -X POST https://api.reacher.email/v0/check_email -L -H 'content-type: application/json' -H 'authorization: <токен получаемый после регистарции>' -d '{"to_email": "api@vk.com"}' | python -m json.tool
Email-адреса также можно получать из метаданных файлов и парсить из социальных сетей.
Linkedin\hh.ru\\career
На сайтах типа linkedin и hh, а также на сайтах компаний, на эндпоинтах \career или \job, можно найти вакансии, в которых зачастую присутствует полезная информация.
В своих резюме и на Linkedin, пользователи часто указывают кем и где они работают, и часто в описаниях своей работы пишут, чем они конкретно занимаются, например, "поднимал почтовый сервер под названием таким-то", или пишут, что они "переписывали легаси-код с такой-то платформы, но не упели за время своей работы".
Существуют специализированные парсеры соцсетей, например для Linkedin есть минимум 2 парсера:
https://github.com/vysecurity/LinkedInt
Пример запуска и результат выполнения утилиты
Поиск сведений о сотрудниках компании yandex с помощью утилиты LinkedInt
https://github.com/joeyism/linkedin_scraper — библиотека на python для продвинутых пользователей, для упрощения парсинга linkedin.
Используя эти сервисы, можно получить фамилии и имена сотрудников с их аватарами. По аватарам можно найти другие соцсети сотрудников и попробовать найти что-то полезное, но поиск людей, это тематика для другой статьи.
Если мы знаем формат почты (например имя.фамилия@домен или первая_буква_имени.фамилия@домен), то мы можем из полученных ранее данных составить список почт сотрудников.
Что нам это дает?
Email-адреса
Стеки технологий и используемое ПО
Никнеймы сотрудников
Информация о сотрудниках для соц. инжнерении
Личные соцсети сотрудников
Misc
В данном разделе собраны подходы, которые не удалось объединить более общими тематиками.
Co-hosting
Анализ co-hosting-а позволяет смотреть кто хостится у этих же провайдеров. Это не принесет полезной информации, если хостинг является, например, hostinger или digital ocean, однако, если компания достаточно большая, у которой есть свои подсети и AS, то мы можем найти доменные имена, расположенные в этих подсетях, которые с большой вероятностью относятся к нашей цели.
Для этого можно воспользоваться сервисом https://securitytrails.com/.
Пример результата работы веб-приложения
Из этой информации мы можем получить новые поддомены и домены.
Threat Hunting
Вы наверняка знаете что есть сервис VirusTotal, в который можно загрузить подозрительный сэмпл файл и он проверит его на наличие в базах антивирусного ПО, а также можно ему передать ссылку и он также проверит ее на вредоносность. Нам для разведки интересно то, что он еще умеет проверять доменные имена по базам.
На примере домена raidforums.com, VirusTotal показал множество файлов, которые кто-то загружал для проверки, несколько поддоменов, вывел содержимое Whois, показал IP-адреса и сертификаты. И еще построил граф.
К сожалению, в бесплатной версии мы не можем скачать файлы, которые были загружены в сервис, но это может дать нам подсказку, что можно искать в Google.
Существует несколько сервисов с аналогичной функциональностью, например https://www.threatcrowd.org/. Он может все тоже самое, что и VirusTotal, но у них могут быть разные сведения о доменах.
У этих сервисов также есть платные функции, возможно с их помощью можно получить еще больше информации.
Wayback machine
Wayback machine — проект по сохранению всего интернета, который периодически делает снапшоты популярных сайтов.
Помимо того что можно посмотреть как выглядели сайты в прошлом, и поискать флаги в CTF соревнованиях , также можно найти, например, снапшот критичных файлов, которые администраторы уже удалили, либо снапшот веб-приложения, в коде страницы которого была оставлена какая-нибудь полезная информация для атакующего. Также в снапшотах можно увидеть ошибки и стектрейсы приложений, которые могут помочь развить атаку.
Существует утилита, которая извлекает URL-адреса, сохраненные в Wayback Machine: https://github.com/tomnomnom/waybackurls.
Тендеры и закупки
При публикации тендеров, заказчики прикладывают к заявке технические задания с описанием требований к исполнителям. Из технического задания можно получить дополнительную информацию о используемом в компании ПО и оборудовании.
Также можно извлечь метаданные из приложенных файлов и получить ФИО сотрудников и версию ПО для обработки документов.
Website fingerprinting
Используя специальные сервисы, не заходя на целевой веб-сайт, мы можем посмотреть версии ПО которые там используются, а также CMS системы, на которых работает веб-сайт, если они есть.
Для этого можно воспользоваться следующими сервисами:
Пример результата работы веб-приложения
wappalyzer.com — список используемых технологий для веб-приложения расположенного на доменном имени yandex.ru
Пример результата работы веб-приложения
whatcms.org — список потенциально используемых CMS для веб-приложения с доменным именем yandex.ru
Такие сервисы парсят заголовки HTTP-ответов, чтобы получать версии ПО, а также смотрят на содержимое страниц для профилирования.
BugBounty
Далеко не все компании имеют публичную платформу вознаграждений за поиск ошибок, но для больших и крупных это становится одной из лучших практик ИБ.
Что мы оттуда можем достать?
Расширить область аудита доменами и поддоменами из раздела Scope.
Изучить сданные отчеты и узнать используемое в компании ПО и примеры уязвимостей, которые уже сдавали в программу.
Где искать информацию?
Платформы BugBounty:
Пример результата работы веб-приложения
hackerone.com — область аудита компании mail.ru
https://www.openbugbounty.org/
Пример результата работы веб-приложения
openbugbounty.org — список отчетов о уязвимостях для доменного имени yandex.ru
Информацию о BugBounty конкретной организации также можно найти по в файле /.well-known/security.txt, в котором обычно публикуется информация о программе и том куда можно писать о найденных уязвимостях. Подробнее о проекте можно прочитать по ссылке https://securitytxt.org/.
Также существует веб-приложение, которое агрегирует уязвимости с HackerOne, с удобным поиском и фильтрами: http://h1.nobbd.de/.
Wi-Fi анализ
https://wigle.net/ — сервис, который собирает Wi-Fi точки доступа по всему миру.
Сервис не позволяет просто на карте кликать на точки доступа, однако он позволяет искать по, например, SSID (имя точки доступа). А также он поддерживает регулярные выражения: "%" — ноль или более любых символов и "_" — один любой символ.
Эту информацию можно использовать для атак типа Rogue access point и атак социальной инженерии.
MAC address lookup
В рамках пассивной разведки, маловероятно, что вы получите MAC-адреса устройств вашей цели. Однако, если вам как-то удалось их заполучить, то имея только MAС-адрес можно идентифицировать сетевое устройство.
MAC-адрес можно разделить на 6 октетов, где первые 3 принадлежат компании-производителю сетевого устройства, а вторые 3 октета являются идентификатором самого устройства.
Используя специальные сервисы и читщиты производителей, можно попробовать узнать не только производителя, но и название самого устройства:
Пример результата работы веб-приложения
Script Kiddy way
Искать информацию руками долго и утомительно, зато надежно. Однако хакеры придумали комбайны, которые все сделают за вас. Этих комбайнов десятки, если не сотни, вот несколько примеров:
В чем отличие от ручного поиска?
Их преимущество в том, что освобождают человека от рутинных задач.
А недостатки заключаются в следующем:
Длительная первоначальная конфигурация.
Длительное время работы.
Необходимость (желательность) предоставления API-ключей от различных сервисов (балансы которых они быстро опустошат).
Большое количество ошибок как первого так и второго рода (множество лишней информации и отвергнутая нужная информация)
Если вы знаете еще интересные способы поиска информации в интернете, то пишите об этом в комментариях!