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

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

Надеемся, что статья будет полезна как пентестерам и охотникам за ошибками для увеличения области аудита, так и стороне защиты (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 (обратном резолвинге).

Пример некоторых DNS записей
Пример некоторых DNS записей

Доменные имена

Самое первое и простое что мы можем сделать — это порезолвить доменные имена. Для этого есть десятки утилит, как терминальных так и доступных онлайн.

Неполный список утилит и сервисов, которые могут разрезовлить доменное имя:

Selfhosted:

Вывод различных утилит для резолва доменных имен
Вывод различных утилит для резолва доменных имен

Online:

  • https://dns.google.com

    Пример результата работы веб-приложения
    dns.google.com — резолвинг доменного имени yandex.ru
    dns.google.com — резолвинг доменного имени yandex.ru
  • https://check-host.net/check-dns

    Пример результата работы веб-приложения
    check-host.net — резолвинг доменного имени yandex.ru
    check-host.net — резолвинг доменного имени yandex.ru
  • https://bgp.he.net/

    Пример результата работы веб-приложения
    bgp.he.net — резолвинг доменного имени yandex.ru
    bgp.he.net — резолвинг доменного имени yandex.ru

Что это нам дает?

Помимо соответствия IP-адрес—домен мы можем узнать, например, DNS-серверы, с помощью утилиты nslookup, а также можем получить все DNS-записи, например, командой dig.

Получение NS Записей доменного имени yandex.ru утилитой nslookup
Получение NS Записей доменного имени yandex.ru утилитой nslookup
Получение всех записей для доменного имени yandex.ru утилитой dig
Получение всех записей для доменного имени yandex.ru утилитой dig

Имея IP-адреса веб-приложений мы можем начать смотреть соседние IP-адреса в подсетях, перебирать виртуальные хосты и изучать владельцев этих IP-адресов.

DNS-серверы нам могут в дальнейшем помочь при активной разведке для перебора поддоменов и проведения различных атак.

Whois

Whois — протокол, основная цель которого заключается в получении регистрационных данных о владельцах доменных имён, IP-адресах и автономных систем (ASN).

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

Неполный список утилит и сервисов, которые могут разрезовлить доменное имя:

  • Whois (windows\linux whois yandex.ru и whois 77.88.55.77)

  • https://whois.ru/

    Пример результата работы веб-приложения
    whois.ru — получение записи whois для доменного имени yandex.ru
    whois.ru — получение записи whois для доменного имени yandex.ru
  • https://dnschecker.org/ip-whois-lookup.php

    Пример результата работы веб-приложения
    dnschecker.org — получение записи whois для IP-адреса 5.255.255.55
    dnschecker.org — получение записи whois для IP-адреса 5.255.255.55
  • https://bgp.he.net/

    Пример результата работы веб-приложения
    bgp.he.net — получение записи whois для IP-адреса 77.88.55.77
    bgp.he.net — получение записи whois для IP-адреса 77.88.55.77

Что это нам дает?

Из вывода Whois можно получить email-адреса владельцев и администраторов, адреса DNS-серевров, подсети и ASN.

Вывод утилиты whois для доменного имени yandex.ru
Вывод утилиты whois для доменного имени yandex.ru
Вывод утилиты whois для IP-адреса 77.88.55.77
Вывод утилиты whois для IP-адреса 77.88.55.77

Whois history

Существуют сервисы периодически собирающие и агрегирующие записи Whois. Благодаря таким сервисам можно поностальгировать и получить использующиеся ранее почты, хостинги, DNS-серверы и целые подсети:

  • http://whoishistory.ru/

    Сервис заброшен, расширенный поиск не работает, но все еще можно получить историю по имени домена в зонах .ru и .рф (пока не вылезет капча)

    Пример результата работы веб-приложения
    whoishistory.ru — получение истории записей whois для доменного имени vkontakte.ru
    whoishistory.ru — получение истории записей whois для доменного имени vkontakte.ru
  • https://tools.whoisxmlapi.com/whois-history-search

    Пример результата работы веб-приложения
    tools.whoisxmlapi.com — получение истории записей whois для доменного имени vkontakte.ru
    tools.whoisxmlapi.com — получение истории записей whois для доменного имени vkontakte.ru

Reverse Whois

Тогда как Whois выдает сведения по доменым именам или IP-адресам, обратный Whois позволяет искать по всей информации, которая есть в выводе обычных Whois, например, по email-адресам, по именам владельцев, по организациям и т.д.

Таким образом можно расширить скоуп найдя новые email-адреса, хостинги, DNS-серверы, подсети, доменные имена и поддомены.

Неполный список сервисов, которые могут искать по содержимому Whois:

  • https://www.reversewhois.io/

    Пример результата работы веб-приложения
    reversewhois.io — поиск по записям whois для email-адреса noc@vk.com
    reversewhois.io — поиск по записям whois для email-адреса noc@vk.com
  • https://viewdns.info/reversewhois

    Пример результата работы веб-приложения
    viewdns.info — поиск по записям whois для email-адреса noc@vk.com
    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
    mxtoolbox.com — поиск SPF-записей для доменного имени yandex.ru
  • https://www.dmarcanalyzer.com/spf/checker/

    Пример результата работы веб-приложения
    dmarcanalyzer.com — поиск SPF-записей для доменного имени yandex.ru
    dmarcanalyzer.com — поиск SPF-записей для доменного имени yandex.ru
  • https://dmarcian.com/spf-survey/

    Пример результата работы веб-приложения
    dmarcian.com — поиск SPF-записей для доменного имени yandex.ru
    dmarcian.com — поиск SPF-записей для доменного имени yandex.ru

DMARC:

  • https://mxtoolbox.com/DMARC.aspx

    Пример результата работы веб-приложения
    mxtoolbox.com — поиск DMARC-записей для доменного имени yandex.ru
    mxtoolbox.com — поиск DMARC-записей для доменного имени yandex.ru
  • https://dmarcian.com/dmarc-inspector/

    Пример результата работы веб-приложения
    dmarcian.com — поиск DMARC-записей для доменного имени yandex.ru
    dmarcian.com — поиск DMARC-записей для доменного имени yandex.ru

Для анализа SPF также есть selfhosted утилита, которая извлекает поддомены из SPF записей https://github.com/0xbharath/assets-from-spf.

Пример запуска и результат работы утилиты

python assets_from_spf.py spacex.com

Анализ содержимого SPF-записи доменного имени spacex.com утилитой assets_from_spf
Анализ содержимого SPF-записи доменного имени spacex.com утилитой assets_from_spf

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
    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
    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
    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
    dnschecker.org — проведение Reverse DNS lookup для IP-адреса 77.88.55.77

Что это нам дает?

В приложениях часто используется роутинг на основании имени хоста (vhosts), поэтому зная только IP-адрес, мы попадем на страницу ошибки веб-сервера, а с помощью Reverse DNS lookup можно получить имя хоста и добраться к самому веб-приложению.

DNS history

История DNS записей домена. Существуют сервисы, которые запоминают записи DNS, и показывают их историю.

Сервис https://viewdns.info/iphistory, запоминает только A записи доменов и дату привязки.

Пример результата работы веб-приложения
viewdns.info — история A записей доменного имени semrush.ru
viewdns.info — история A записей доменного имени semrush.ru

А сервис https://securitytrails.com/, помимо А записи, позволяет искать также по АААА, MX, NS, SOA и TXT записям.

Пример результата работы веб-приложения
securitytrails.com — история DNS записей доменного имени yandex.ru
securitytrails.com — история DNS записей доменного имени yandex.ru

Что это нам дает?

Это позволяет расширить область аудита, узнав новые 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
    Поиск утилитой сloudmare.py IP-адресов, ранее указовывших на доменное имя yandex.ru

ASN lookup

ASN (autonomous system number) — номер автономной системы.

Интернет состоит из локальных сетей, каждая из которых имеет подсети и свои политики маршрутизации, и которые соединяются с другими локальными сетями. Одна такая локальная сеть, это одна автономная система и у нее есть уникальный номер — ASN. Эти номера используются в BGP-маршрутизации.

По номеру AS можно посмотреть IP-адреса и подсети, которые в ней содержатся. Если это большая компания, типа Яндекса, или университетов, то можно предположить что вся AS принадлежит этой компании, и большая ее часть, может войти в область аудита. Также в выводе можно обнаружить почтовые адреса и другую информацию о компании.

Неполный список сервисов, которые имеют возможность поиска по ASN:

  • https://bgp.he.net/

    Пример результата работы веб-приложения
    bgp.he.net — анализ AS с номером 13238
    bgp.he.net — анализ AS с номером 13238
  • https://ipinfo.io/

    Пример результата работы веб-приложения
    ipinfo.io — анализ AS с номером 13238
    ipinfo.io — анализ AS с номером 13238
  • https://viewdns.info/asnlookup/

    Пример результата работы веб-приложения
    viewdns.info — анализ AS с номером 13238
    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.

В других поисковых системах список операторов может отличаться.

По продвинутому использованию поисковиков существует множество статей, поэтому не будем углубляться в эту тему:

Поисковые системы для хакеров

Помимо поиска в обычных поисковых системах типа Google можно искать в специальных "хакерских" поисковых системах. Примеры таких поисковиков:

Эти сервисы постоянно сканируют весь интернет, и заполняют свои базы ответами серверов.

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

Shodan

shodan.io — поиск серверов SQ-WEBCAM
shodan.io — поиск серверов SQ-WEBCAM

Сервис позволяет искать по IP-адресам, портам и содержимому ответов сервера. Это может позволить найти новые поддомены, а также то, что не смог найти Nmap.

Для поиска используется свой синтаксис, с которым можно ознакомиться по ссылке https://help.shodan.io/the-basics/search-query-fundamentals.

Censys

censys.io — поиск FTP-серверов в России со словом yandex в теле ответа
censys.io — поиск FTP-серверов в России со словом yandex в теле ответа

Censys этот тот же самый Shodan, но более новый и с приятным интерфейсом.

Опять же используется свой синтаксис, с которым можно ознакомиться по ссылке: https://search.censys.io/search/language.

Binaryedge

Еще более новая разработка это сервис BinaryEdge.

binaryedge.io — поиск поддоменов для доменного имени yandex.ru
binaryedge.io — поиск поддоменов для доменного имени yandex.ru

Помимо тех же функций, которые имеются и в Shodan и в Censys, данный сервис еще умеет искать поддомены, email-адреса в утечках данных, умеет искать изображения, связанные с доменом, и в этих картинках умеет искать по тексту.

binaryedge.io — поиск по изображениям для доменного имени yandex.ru
binaryedge.io — поиск по изображениям для доменного имени yandex.ru

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

Документация с примерами доступна по ссылке: 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
    Поск метаданных с помощью утилиты metagoofil.py для доменного имени yandex.ru
  • https://github.com/ElevenPaths/FOCA

    Пример запуска и результат выполнения утилиты
    Поск метаданных с помощью утилиты FOCA для доменного имени yandex.ru
    Поск метаданных с помощью утилиты FOCA для доменного имени yandex.ru
    Результаты поиска и анализа метаданных для доменного имени yandex.ru
    Результаты поиска и анализа метаданных для доменного имени yandex.ru

Что нам это дает?

  • Email-адреса

  • ФИО сотрудников

  • Используемое ПО

  • Используемые операционные системы

  • IP-адреса

  • Поддомены

Системы контроля версий

Системы контроля версий (github, gitlab и т.д.) также обладают возможностями расширенного поиска. У них свой синтаксис и свои "дорки".

Поиск слова password в файлах secrets.yml в системе контроля версий github.com
Поиск слова password в файлах secrets.yml в системе контроля версий github.com

Что нам это дает?

  • Пароли и секреты.

  • Части кода приложений.

Несколько полезных ссылок для поиска по коду:

  • https://publicwww.com/ — ищет по фронтенд-коду веб-сайтов. Документация по синтаксису https://publicwww.com/syntax.html.

    Пример результата работы веб-приложения
    publicwww.com — поиск веб-сайтов использующих CMS Joomla
    publicwww.com — поиск веб-сайтов использующих CMS Joomla
  • https://searchcode.com/ — ищет по опубликованному исходному коду в публичных системах контроля версий.

    Пример результата работы веб-приложения
    searchcode.com — поиск слова yandex в файлах secrets.yml в нескольких системах контроля версий
    searchcode.com — поиск слова yandex в файлах secrets.yml в нескольких системах контроля версий

Также есть несколько selfhosted сервисов для поиска секретов на github:

  • https://github.com/eth0izzle/shhgit

    Пример запуска и результат выполнения утилиты

    Основная прелесть утилиты в том, что она постоянно производит сканирование репозиториев, и как только появляются секреты в коммитах, оперативно вам об этом сообщает.

    Со стандартными настройками утилита будет сканировать все системы контроля версий в поисках заданных сигнатур в файле config.yaml. Для эффективного поиска данных по заданной цели рекомендуется писать свои сигнатуры.

    shhgit --config-path path_to_config

    Запуск утилиты shhgit для поиска секретов на github.com
    Запуск утилиты shhgit для поиска секретов на github.com

    Для демонстрации можно попробовать указать в параметре search-query интересующую строку, например:

    shhgit --config-path path_to_config --search-query yandex

    Запуск утилиты sshgit для поиска строки yandex на github.ru
    Запуск утилиты sshgit для поиска строки yandex на github.ru

    Также можно указать локальные репозитории для поиска секретов.

    shhgit --config-path path_to_config --local path_to_repository

    Запуск утилиты sshgit для поиска секретов в репозиториях, расположенных на файловой системе
    Запуск утилиты sshgit для поиска секретов в репозиториях, расположенных на файловой системе
  • https://github.com/michenriksen/gitrob

    Сведения об установке, пример запуска и результат выполнения утилиты

    При установке могут возникнуть проблемы.

    Рекомендуется воспользоваться таким способом установки:

    1. git clone https://github.com/michenriksen/gitrob.git

    2. cd gitrob

    3. go mod init github.com/michenriksen/gitrob

    4. go mod download github.com/elazarl/go-bindata-assetfs

    5. go get github.com/michenriksen/gitrob/core

    6. rm Gopkg*

    7. go build .

    Для работы нужно экспортировать токен доступа в переменную среды:

    export GITROB_ACCESS_TOKEN=deadbeefdeadbeefdeadbeefdeadbeefdeadbeef

    Запуск:

    ./gitrob организация_или_имя_пользователя

    Запуск утилиты gitrob для поиска секретов в репозиториях организации
    Запуск утилиты gitrob для поиска секретов в репозиториях организации

    Результаты доступны как в терминале, так и в веб-версии.

    Веб-версия утилиты gitrob, содержащая результатаы анализа репозиториев
    Веб-версия утилиты gitrob, содержащая результатаы анализа репозиториев
  • https://github.com/zricethezav/gitleaks

    Утилита ищет секреты в репозиториях на файловой системе.

    Пример запуска и результат выполнения утилиты

    Запуск производится в директории целевого реозитория:

    gitleaks detect -v

    Запуск утилиты gitleaks для поиска секретов в репозитории на файловой системе
    Запуск утилиты gitleaks для поиска секретов в репозитории на файловой системе

Также, если мы нашли никнеймы и email-адреса сотрудников, мы можем поискать их аккаунты в различных системах контроля версий, и посмотреть, что они коммитят. Потенциально возможно найти в личных репозиториях сотрудников части кода приложений компании-цели.

Также, стоит заметить, что нужно анализировать не только последнюю версию исходного кода в ветке master, но и предыдущие коммиты. Сотрудник может закоммитить критичные данные в систему контроля версий, понять, что он "накосячил" и удалить их следующим коммитом. Не удалив сам коммит из истории.

Что еще можно получить из систем контроля версий?

Gitlab имеет возможность перечисления пользователей по URL-адресам вида: https://gitlab.com/api/v4/users/1, где 1 это порядковый номер пользователя. В selfhosted версиях gitlab такая уязвимость тоже присутствует.

gitlab.com — вывод информации о пользователе
gitlab.com — вывод информации о пользователе

Помимо ссылок на социальные сети, из вывода 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

gitlab.com — вывод информации о ключах шифрования пользователя
gitlab.com — вывод информации о ключах шифрования пользователя

Subdomain enumeration

Subdomain enumeration — в дословном переводе означает перечисление поддоменов, а смысл у словосочетания примерно следующий: «использовать все известные методы для получения как можно большего числа поддоменов».

Запуск утилиты sublister для поиска поддоменов для доменного имени yandex.ru
Запуск утилиты sublister для поиска поддоменов для доменного имени yandex.ru

Для получения списка поддоменов существуют онлайн базы, а также утилиты, которые требуется запускать локально, после чего они будут делать запросы в различные онлайн сервисы и поисковые системы.

Неполный список сервисов и утилит, которые могут показать список поддоменов для домена:

Online сервисы:

  • https://securitytrails.com/

    Пример результата работы веб-приложения
    securitytrails.com — поиск поддоменов для доменного имени yandex.ru
    securitytrails.com — поиск поддоменов для доменного имени yandex.ru
  • https://cloudflare.com

    Как получить поддомены с помощью Cloudflare

    У сервиса есть довольно интересная функциональность, учитывая то, что Cloudflare создан для защиты от атак.

    Если зарегистрироваться с бесплатным аккаунтом в Cloudflare, то можно будет начать добавлять свой сайт в сервис, причем неважно, привязан он к какому-нибудь аккаунту или нет.

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

    cloudflare.com — поиск поддоменов для доменного имени yandex.ru
    cloudflare.com — поиск поддоменов для доменного имени yandex.ru
  • https://dnsdumpster.com/

    По имени домена утилита выводит поддомены, IP-адреса, MX и TXT записи, открытые порты и версии программного обеспечения, DNS-серверы. Также утилита строит красивый граф.

    Пример результата работы веб-приложения
    dnsdumpster.com — поиск поддоменов для доменного имени yandex.ru
    dnsdumpster.com — поиск поддоменов для доменного имени yandex.ru
    dnsdumpster.com — граф основанный на данных доменного имени yandex.ru
    dnsdumpster.com — граф основанный на данных доменного имени yandex.ru
  • https://www.threatminer.org/

    Пример результата работы веб-приложения
    threatminer.org — поиск поддоменов для доменного имени yandex.ru
    threatminer.org — поиск поддоменов для доменного имени yandex.ru
  • https://spyse.com/tools/subdomain-finder

    Пример результата работы веб-приложения
    spyse.com — поиск поддоменов для доменного имени yandex.ru
    spyse.com — поиск поддоменов для доменного имени yandex.ru

Selfhosted:

  • https://github.com/aboul3la/Sublist3r

    Утилита для поиска поддоменов в открытых источниках. Также может перебирать поддомены по словарю, с помощью утилиты subbrute.

    Пример запуска и результат выполнения утилиты

    Пример запуска:

    python3 sublist3r.py -d yandex.ru

    Запуск утилиты sublister для поиска поддоменов для доменного имени yandex.ru
    Запуск утилиты sublister для поиска поддоменов для доменного имени yandex.ru
  • https://github.com/projectdiscovery/subfinder

    Очередная утилита для пассивного поиска поддоменов.

    Пример запуска и результат выполнения утилиты

    Для лучшего вывода рекомендуется в конфигурационном файле добавить API ключи сервисов (рекомендуется использовать как минимум SecurityTrails, GitHub, Shodan и VirusTotal).

    Пример запуска:

    subfinder -d yandex.ru

    Запуск утилиты subfinder для поиска поддоменов для доменного имени yandex.ru
    Запуск утилиты subfinder для поиска поддоменов для доменного имени yandex.ru
    Результат поиска поддоменов для доменного имени yandex.ru утилитой subfinder
    Результат поиска поддоменов для доменного имени 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
    Запуск утилиты 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
    Результат резолвинга поддоменов утилитой massdns для домена yandex.ru
    Результат резолвинга поддоменов утилитой 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
    Резолвинг поддоменов утилитой 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 может дать нам довольно много информации.

transparencyreport.google.com — поиск сертификатов для доменного имени yandex.ru и его поддоменов
transparencyreport.google.com — поиск сертификатов для доменного имени yandex.ru и его поддоменов

Также есть еще как минимум два онлайн сервиса с подобной функциональностью:

  • https://spyse.com/tools/ssl-lookup

    Пример результата работы веб-приложения
    spyse.com — поиск сертификатов для доменного имени yandex.ru и его поддоменов
    spyse.com — поиск сертификатов для доменного имени yandex.ru и его поддоменов
  • https://crt.sh/

    Пример результата работы веб-приложения
    crt.sh — поиск сертификатов для доменного имени yandex.ru и его поддоменов
    crt.sh — поиск сертификатов для доменного имени yandex.ru и его поддоменов

Cуществует один self-hosted сервис https://github.com/lanrat/certgraph.

Пример запуска и результат выполнения утилиты

certgraph yandex.ru

Поиск сертификатов для доменного имени yandex.ru и его поддоменов утилитой certgraph
Поиск сертификатов для доменного имени yandex.ru и его поддоменов утилитой certgraph

Для построения графов нужно запустить утилиту с ключом "json" и скопировать вывод на веб-страницу.

certgraph -json yandex.ru

Поиск сертификатов для доменного имени yandex.ru и его поддоменов утилитой certgraph с выводом в формате json
Поиск сертификатов для доменного имени yandex.ru и его поддоменов утилитой certgraph с выводом в формате json

certgraph --serve 127.0.0.1:8080

Визуализация найденной информации утилитой certgraph
Визуализация найденной информации утилитой certgraph

SSL\TLS scan

Сертификаты также можно провалидировать. Для этого есть онлайн сервисы, которые за нас отправляют запросы на серверы нашей цели.

ssllabs.com — анализ конфигурации SSL\TLS веб-серверов
ssllabs.com — анализ конфигурации SSL\TLS веб-серверов

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

Еще эти сервисы выводят http-ответы серверов, в которых может находиться версия сервера или используемого ПО.

Неполный список сервисов, которые могут просканировать сертификаты.

  • https://www.cyphercraft.io/tls

    Пример результата работы веб-приложения
    cyphercraft.io — анализ конфигурации SSL\TLS веб-сервера для доменного имени yandex.ru
    cyphercraft.io — анализ конфигурации SSL\TLS веб-сервера для доменного имени yandex.ru
  • https://decoder.link/sslchecker

    Пример результата работы веб-приложения
    decoder.link — анализ конфигурации SSL\TLS веб-сервера для доменного имени yandex.ru
    decoder.link — анализ конфигурации SSL\TLS веб-сервера для доменного имени yandex.ru
  • https://www.immuniweb.com/ssl/

    Пример результата работы веб-приложения
    immuniweb.com — анализ конфигурации SSL\TLS веб-сервера для доменного имени yandex.ru
    immuniweb.com — анализ конфигурации SSL\TLS веб-сервера для доменного имени yandex.ru
  • https://www.ssllabs.com/ssltest

    Пример результата работы веб-приложения
    ssllabs.com — анализ конфигурации SSL\TLS веб-сервера для доменного имени yandex.ru
    ssllabs.com — анализ конфигурации SSL\TLS веб-сервера для доменного имени yandex.ru

Что это нам дает?

  • Новые поддомены

  • Уязвимости криптографии

  • Версия используемого ПО на сервере

Credentials stuffing

Credentials stuffing — это атака, при которой атакующий находит почты пользователей и ищет пароли от них в базах утечек, а затем пытается вставить их во все возможные формы входа целевой системы.

Сама атака уже не относится к пассивной разведке, но сбор паролей и email-адресов - это тема данной статьи.

Пароли можно поискать в следующих сервисах:

  • https://haveibeenpwned.com/ — самый популярный сервис поиска утечек email-адресов.

    Пример результата работы веб-приложения
    haveibeenpwned.com — поиск утечек учетных данных для email-адреса noc@vk.com
    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
    psbdmp.cc — автоматизированный поиск секретов в сервисе pastebin.com
  • Collection #1 — сборник практически всех утечек, которые попадали в интернет.

  • Глазбога.рф.

Поиск email-адресов

Для проведения атак credential stuffing для социальной инженерии и других атак, необходимо иметь список email-адресов и/или юзернеймов пользователей. Также по email-адресам можно делать поиск reverse Whois.

Нам известно два сервиса, которые собирают email-адреса:

  • https://hunter.io/search — помимо адресов, показывает еще и страницы, где он их нашел.

    Пример результата работы веб-приложения
    hunter.io — поиск email-адресов для доменного имени vk.com
    hunter.io — поиск email-адресов для доменного имени vk.com
  • https://snov.io/

    Пример результата работы веб-приложения
    snov.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

reacher.email — проверка существования почтового адреса noc@vk.com
reacher.email — проверка существования почтового адреса noc@vk.com

Email-адреса также можно получать из метаданных файлов и парсить из социальных сетей.

Linkedin\hh.ru\\career

На сайтах типа linkedin и hh, а также на сайтах компаний, на эндпоинтах \career или \job, можно найти вакансии, в которых зачастую присутствует полезная информация.

В своих резюме и на Linkedin, пользователи часто указывают кем и где они работают, и часто в описаниях своей работы пишут, чем они конкретно занимаются, например, "поднимал почтовый сервер под названием таким-то", или пишут, что они "переписывали легаси-код с такой-то платформы, но не упели за время своей работы".

Существуют специализированные парсеры соцсетей, например для Linkedin есть минимум 2 парсера:

  • https://github.com/vysecurity/LinkedInt

    Пример запуска и результат выполнения утилиты
    Поиск сведений о сотрудниках компании yandex с помощью утилиты LinkedInt
    Поиск сведений о сотрудниках компании yandex с помощью утилиты LinkedInt

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

Если мы знаем формат почты (например имя.фамилия@домен или первая_буква_имени.фамилия@домен), то мы можем из полученных ранее данных составить список почт сотрудников.

Что нам это дает?

  • Email-адреса

  • Стеки технологий и используемое ПО

  • Никнеймы сотрудников

  • Информация о сотрудниках для соц. инжнерении

  • Личные соцсети сотрудников

Misc

В данном разделе собраны подходы, которые не удалось объединить более общими тематиками.

Co-hosting

Анализ co-hosting-а позволяет смотреть кто хостится у этих же провайдеров. Это не принесет полезной информации, если хостинг является, например, hostinger или digital ocean, однако, если компания достаточно большая, у которой есть свои подсети и AS, то мы можем найти доменные имена, расположенные в этих подсетях, которые с большой вероятностью относятся к нашей цели.

Для этого можно воспользоваться сервисом https://securitytrails.com/.

Пример результата работы веб-приложения
securitytrails.com — поиск веб-приложений, расположенных у хостинг провайдера vk.com
securitytrails.com — поиск веб-приложений, расположенных у хостинг провайдера vk.com

Из этой информации мы можем получить новые поддомены и домены.

Threat Hunting

Вы наверняка знаете что есть сервис VirusTotal, в который можно загрузить подозрительный сэмпл файл и он проверит его на наличие в базах антивирусного ПО, а также можно ему передать ссылку и он также проверит ее на вредоносность. Нам для разведки интересно то, что он еще умеет проверять доменные имена по базам.

virustotal.com — информация о доменном имени raidforums.com в виде графа
virustotal.com — информация о доменном имени raidforums.com в виде графа

На примере домена raidforums.com, VirusTotal показал множество файлов, которые кто-то загружал для проверки, несколько поддоменов, вывел содержимое Whois, показал IP-адреса и сертификаты. И еще построил граф.

К сожалению, в бесплатной версии мы не можем скачать файлы, которые были загружены в сервис, но это может дать нам подсказку, что можно искать в Google.

Существует несколько сервисов с аналогичной функциональностью, например https://www.threatcrowd.org/. Он может все тоже самое, что и VirusTotal, но у них могут быть разные сведения о доменах.

У этих сервисов также есть платные функции, возможно с их помощью можно получить еще больше информации.

Wayback machine

Wayback machine — проект по сохранению всего интернета, который периодически делает снапшоты популярных сайтов.

archive.org — веб-приложение, расположенное на доменном имени yandex.ru в 1998 году
archive.org — веб-приложение, расположенное на доменном имени yandex.ru в 1998 году

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

Существует утилита, которая извлекает URL-адреса, сохраненные в Wayback Machine: https://github.com/tomnomnom/waybackurls.

Поиск URL-адресов в сервисе waybackmachine для доменного имени test.ru с помощью утилиты waybackurls
Поиск URL-адресов в сервисе waybackmachine для доменного имени test.ru с помощью утилиты waybackurls

Тендеры и закупки

При публикации тендеров, заказчики прикладывают к заявке технические задания с описанием требований к исполнителям. Из технического задания можно получить дополнительную информацию о используемом в компании ПО и оборудовании.

Также можно извлечь метаданные из приложенных файлов и получить ФИО сотрудников и версию ПО для обработки документов.

Пример тендерной закупки компании Яндекс.Деньги
Пример тендерной закупки компании Яндекс.Деньги

Website fingerprinting

Используя специальные сервисы, не заходя на целевой веб-сайт, мы можем посмотреть версии ПО которые там используются, а также CMS системы, на которых работает веб-сайт, если они есть.

Для этого можно воспользоваться следующими сервисами:

  • https://www.wappalyzer.com/

    Пример результата работы веб-приложения
    wappalyzer.com — список используемых технологий для веб-приложения расположенного на доменном имени yandex.ru
    wappalyzer.com — список используемых технологий для веб-приложения расположенного на доменном имени yandex.ru
  • https://whatcms.org/

    Пример результата работы веб-приложения
    whatcms.org — список потенциально используемых CMS для веб-приложения с доменным именем yandex.ru
    whatcms.org — список потенциально используемых CMS для веб-приложения с доменным именем yandex.ru

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

BugBounty

Далеко не все компании имеют публичную платформу вознаграждений за поиск ошибок, но для больших и крупных это становится одной из лучших практик ИБ.

Что мы оттуда можем достать?

Расширить область аудита доменами и поддоменами из раздела Scope.

Изучить сданные отчеты и узнать используемое в компании ПО и примеры уязвимостей, которые уже сдавали в программу.

Где искать информацию?

Платформы BugBounty:

  • https://hackerone.com/

    Пример результата работы веб-приложения
    hackerone.com — область аудита компании mail.ru
    hackerone.com — область аудита компании mail.ru
  • https://www.openbugbounty.org/

    Пример результата работы веб-приложения
    openbugbounty.org — список отчетов о уязвимостях для доменного имени yandex.ru
    openbugbounty.org — список отчетов о уязвимостях для доменного имени yandex.ru

Информацию о BugBounty конкретной организации также можно найти по в файле /.well-known/security.txt, в котором обычно публикуется информация о программе и том куда можно писать о найденных уязвимостях. Подробнее о проекте можно прочитать по ссылке https://securitytxt.org/.

Пример содержимого файла security.txt
Пример содержимого файла security.txt

Также существует веб-приложение, которое агрегирует уязвимости с HackerOne, с удобным поиском и фильтрами: http://h1.nobbd.de/.

h1.nobbd.de — поиск публичных отчетов по запросу mail.ru
h1.nobbd.de — поиск публичных отчетов по запросу mail.ru

Wi-Fi анализ

https://wigle.net/ — сервис, который собирает Wi-Fi точки доступа по всему миру.

Сервис не позволяет просто на карте кликать на точки доступа, однако он позволяет искать по, например, SSID (имя точки доступа). А также он поддерживает регулярные выражения: "%" — ноль или более любых символов и "_" — один любой символ.

Поиск точек доступа Wi-Fi с именем yandex в сервисе wigle.net
Поиск точек доступа Wi-Fi с именем yandex в сервисе wigle.net

Эту информацию можно использовать для атак типа Rogue access point и атак социальной инженерии.

MAC address lookup

В рамках пассивной разведки, маловероятно, что вы получите MAC-адреса устройств вашей цели. Однако, если вам как-то удалось их заполучить, то имея только MAС-адрес можно идентифицировать сетевое устройство.

macvendorlookup.com — идентификация сетевого устройства по MAC-адресу
macvendorlookup.com — идентификация сетевого устройства по MAC-адресу

MAC-адрес можно разделить на 6 октетов, где первые 3 принадлежат компании-производителю сетевого устройства, а вторые 3 октета являются идентификатором самого устройства.

Используя специальные сервисы и читщиты производителей, можно попробовать узнать не только производителя, но и название самого устройства:

Пример результата работы веб-приложения
dnschecker.org — идентификация сетевого устройства по MAC-адресу
dnschecker.org — идентификация сетевого устройства по MAC-адресу

Script Kiddy way

Искать информацию руками долго и утомительно, зато надежно. Однако хакеры придумали комбайны, которые все сделают за вас. Этих комбайнов десятки, если не сотни, вот несколько примеров:

В чем отличие от ручного поиска?

Их преимущество в том, что освобождают человека от рутинных задач.

А недостатки заключаются в следующем:

  • Длительная первоначальная конфигурация.

  • Длительное время работы.

  • Необходимость (желательность) предоставления API-ключей от различных сервисов (балансы которых они быстро опустошат).

  • Большое количество ошибок как первого так и второго рода (множество лишней информации и отвергнутая нужная информация)

Если вы знаете еще интересные способы поиска информации в интернете, то пишите об этом в комментариях!

Комментарии (3)


  1. hungry_forester
    16.12.2021 15:43
    +1

    Тендерная открытая документация это просто жесть жестяная, если читающий ее хоть немного в теме [тендера, само собой]. Не перестаю удивляться ее доступности.


  1. AH89
    16.12.2021 17:54

    Как-то многовато информации для одного поста, или нет? )


    1. kukuxumushi Автор
      16.12.2021 18:49
      +1

      Мы не увидели логичного разделения на несколько частей. И так только про пассивную рассказали.

      А просто пополам делить не хотелось, будет похоже на фарм кармы:)