Статья PWK-(6) Пассивный сбор информации

disclaimer: Данный материал является свободным (приближенным к оригиналу) переводом методического материала PWK, в частности Глава 6. Пассивный сбор информации. В связи с закрытым форматом распространения данного материала убедительная просьба ознакомившихся с ней не осуществлять свободное распространение содержимого статьи, чтобы не ставить под удар других участников форума. Приятного чтения.

Вступление

Пассивный сбор информации (также известный как ) - это процесс сбора открытой информации о цели, как правило, без какого-либо прямого взаимодействия с ней.

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

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

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

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

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

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

В данной статье рассматривается последнее, менее прямое толкование данного подхода.

Ни тот, ни другой подходы не обязательно являются "правильными". Необходимо рассмотреть сферу охвата и правила взаимодействия для предстоящего пентеста, прежде чем решить, что использовать. Кроме того, следует иметь в виду, что фаза пассивного сбора информации не всегда необходима и что даже если она приносит свои плоды (скажем, в виде успешной фишинговой атаки на цель), другие этапы пентеста могут потребовать такого же или даже большего внимания.

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

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


Привет!
Я ищу редкие марки 1950-х годов - для продажи или торговли.
Пожалуйста, свяжитесь со мной по адресу alex@corp-domen.com.
Телефон: 999-999-9999



Было решено использовать эту информацию, чтобы реализовать клиентскую атаку. Оперативно было зарегистрировано доменное имя, название которого было связано с марками, разработан лендинг и размещены различные редкие марки, начиная с 1950-х годов, которые были найдены при помощи сервиса "Google Картинки". Доменное имя и дизайн определенно вызывали доверие к созданному сайту.

Далее был вставлен в веб-страницы сайта эксплоит и осуществлен звонок Алексу во время его рабочего дня. Во время разговора звонящий выдавал себя за коллекционера марок, который унаследовал огромную коллекцию марок.

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

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

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

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

Ведение заметок

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

Анализ сайта

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

website_recon_1.png

Рисунок 1: Скриншот главной страницы сайта MegaCorp One

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

На странице "About" есть адреса электронной почты и ссылки на Twitter-аккаунты некоторых сотрудников:

website_recon_2.png

Рисунок 2: Скриншот страницы "About" сайта MegaCorp One

Возможно использовать эти адреса при сборе информации в социальных сетях. Рассмотрим это более подробно позднее.

Стоит также отметить, что формат адреса электронной почты компании соответствует шаблону "[первая буква имени]+[фамилия]@[домен]". Однако, в электронном адресе генерального директора используется только его имя. Это указывает на то, что учредители или сотрудники с большим стажем имеют иной формат электронной почты, в отличии от недавно устроившихся сотрудников. Эта информация может быть полезной на более поздней стадии исследования.

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

website_recon_3.png

Рисунок 3: Скриншот сайта MegaCorp One, ссылки на социальные сети компании

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

Сбор информации с помощью Whois

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

Можно собрать базовую информацию о доменном имени выполнив стандартный последовательный поиск, подав искомое доменное имя megacorpone.com клиенту whois:

Bash:
kali@kali:~$ whois megacorpone.com
   Domain Name: MEGACORPONE.COM
   Registry Domain ID: 1775445745_DOMAIN_COM-VRSN
   Registrar WHOIS Server: whois.gandi.net
   Registrar URL: http://www.gandi.net
   Updated Date: 2019-01-01T09:45:03Z
   Creation Date: 2013-01-22T23:01:00Z
   Registry Expiry Date: 2023-01-22T23:01:00Z
...
Registry Registrant ID:
Registrant Name: Alan Grofield
Registrant Organization: MegaCorpOne
Registrant Street: 2 Old Mill St
Registrant City: Rachel
Registrant State/Province: Nevada
Registrant Postal Code: 89001
Registrant Country: US
Registrant Phone: +1.9038836342
...
Registry Admin ID:
Admin Name: Alan Grofield
Admin Organization: MegaCorpOne
Admin Street: 2 Old Mill St
Admin City: Rachel
Admin State/Province: Nevada
Admin Postal Code: 89001
Admin Country: US
Admin Phone: +1.9038836342
...
Registry Tech ID:
Tech Name: Alan Grofield
Tech Organization: MegaCorpOne
Tech Street: 2 Old Mill St
Tech City: Rachel
Tech State/Province: Nevada
Tech Postal Code: 89001
Tech Country: US
Tech Phone: +1.9038836342
...
Name Server: NS1.MEGACORPONE.COM
Name Server: NS2.MEGACORPONE.COM
Name Server: NS3.MEGACORPONE.COM
...
Листинг 1 - Использование whois для megacorpone.com

Не все эти данные полезны, но была обнаружена некоторая ценная информация. Во-первых, вывод показывает, что Алан Грофилд (Alan Grofield) зарегистрировал доменное имя. Согласно странице контактов Megacorp One, Алан «Директор по ИТ и безопасности».

Также были найдены серверы имен для MegaCorp One. Серверы имен являются компонентом DNS, который не рассматриваются в этом материале, но следует добавить эти серверы в примечания.

В дополнение к этому стандартному прямому поиску, который собирает информацию о DNS-имени, клиент whois также может выполнять обратный поиск. Предположим, что есть IP-адрес, тогда можно выполнить обратный поиск, чтобы собрать о нем дополнительную информацию:

Bash:
kali@kali:~$ whois 38.100.193.70
...
NetRange: 38.0.0.0 - 38.255.255.255
CIDR: 38.0.0.0/8
NetName: COGENT-A
...
OrgName: PSINet, Inc.
OrgId: PSI
Address: 2450 N Street NW
City: Washington
StateProv: DC
PostalCode: 20037
Country: US
RegDate:
Updated: 2015-06-04
...
Листинг 2 - Обратный поиск с Whois

Результаты обратного поиска дают информацию о том, кто размещает IP-адрес. Эта информация может быть полезна позже, и, как и вся информация, которую собираем, добавим ее в заметки.

Google Hacking

Термин "Google Hacking" популяризировал Джонни Лонг в 2001 году. Благодаря нескольким и чрезвычайно популярной (Google Hacking for Penetration Testers), он обрисовал в общих чертах, как можно использовать поисковые системы, такие как Google, для обнаружения важной информации, уязвимостей и неправильно настроенных веб-сайтов.

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

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

Оператор site ограничивает поиск одним доменом. Можно использовать этот оператор, чтобы получить приблизительное представление о степени присутствия организации в Интернете:

google_hacking_1.png

Рисунок 4: Поиск с помощью Site-оператора

Затем можно использовать другие операторы, чтобы уточнить полученные результаты. Например, оператор filetype (или ext) ограничивает результаты поиска указанным типом файла.

В этом примере объединены операторы для поиска файлов PHP (filetype:рhp) на (site:megacorpone.com):

google_hacking_2.png

Рисунок 5: Поиск с помощью Filetype-оператора

Получен только один результат, но он по-настоящему интересный. Запрос обнаружил страницу входа для экземпляра , системы управления информацией и событиями (SIEM). Команды безопасности используют инструменты SIEM для отслеживания приложений и сетевого трафика на предмет вредоносных действий. Обычно эти инструменты доступны только во внутренних сетях. Необходимо отметить этот URL-адрес, так как он может оказаться полезным, если получится найти учетные данные пользователя для входа в систему на этапе активной эксплуатации.

Оператор ext также может помочь определить, какие языки программирования могут использоваться на веб-сайте. Поисковые запросы типа ext:jsp, ext:сfm, ext:рl найдут проиндексированные страницы сервера Java, страницы Coldfusion и Perl соответственно.

Также можно изменить поисковый оператор, используя `-`, чтобы исключить определенные элементы из поиска, сужая результаты.

Например, чтобы найти интересные страницы, отличные от HTML, можно использовать site:megacorpone.com, чтобы ограничить поиск до megacorpone.com и субдоменов, а затем использовать -filetype:html, чтобы исключить HTML-страницы из результатов:

google_hacking_3.png

Рисунок 6: Поиск с помощью Exclude-оператора

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

В другом примере можно использовать поиск по запросу intitle:"index of" "parent directory", чтобы найти страницы, которые содержат "index of" в заголовке и слова "parent directory" на странице.

google_hacking_4.png

Рисунок 7: Использование Google для поиска списков каталогов

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

Эти базовые примеры лишь поверхностно описывают то, что можно делать с операторами поиска. База данных содержит множество нестандартных поисковых запросов, демонстрирующих возможности оригинального поиска с комбинированными операторами:

google_hacking_5.png

Рисунок 8: База данных Google Hacking (GHDB)

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

Netcraft

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

Ниже рассмотрены некоторые возможности Netcraft. Например, использование страницы DNS-поиска Netcraft для сбора информации о домене megacorpone.com:

netcraft_1.png

Рисунок 9: Результаты поиска Netcraft для *.megacorpone.com

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

netcraft_2.png

Рисунок 10: Отчет сайта Netcraft для

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

netcraft_3.png

Рисунок 11: Используемые технология сайта

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

Recon-ng

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

Воспользуемся командой recon-ng, чтобы собрать интересные данные о MegaCorp One. Для начала просто запустим recon-ng:

Bash:
kali@kali:~$ recon-ng
[*] Version check disabled.

                                      /\
                                     / \\ /\
    Sponsored by...              /\ /\/ \\V \/\
                                / \\/ // \\\\\ \\ \/\
                               // // BLACK HILLS \/ \\
                              www.blackhillsinfosec.com

                  ____   ____   ____   ____ _____ _  ____   ____  ____
                 |____] | ___/ |____| |       |   | |____  |____ |
                 |      |   \_ |    | |____   |   |  ____| |____ |____
                                  www.practisec.com

[recon-ng v5.0.0, Tim Tomes (@lanmaster53)]

[*] No modules enabled/installed.

[recon-ng][default] >
Листинг 3 - Запуск recon-ng

Согласно выводимой информации, необходимо установить различные модули для использования recon-ng.

Можно добавлять модули из recon-ng "Marketplace". Поищем в marketplace из командной строки с помощью команды marketplace search, подставляя искомую строку в качестве аргумента.

В следующем примере осуществляется поиск модулей, содержащих термин github:

Bash:
recon-ng][default] > marketplace search github
[*] Searching module index for 'github'...

+------------------------------------------------------------------------------------+
| Path                                            | Version  | Status        | D | K |
+------------------------------------------------------------------------------------+
| recon/companies-multi/github_miner              | 1.0      | not installed |   | * |
| recon/profiles-contacts/github_users            | 1.0      | not installed |   | * |
| recon/profiles-profiles/profiler                | 1.0      | not installed |   |   |
| recon/profiles-repositories/github_repos        | 1.0      | not installed |   | * |
| recon/repositories-profiles/github_commits      | 1.0      | not installed |   | * |
| recon/repositories-vulnerabilities/github_dorks | 1.0      | not installed |   | * |
+------------------------------------------------------------------------------------+

D = Has dependencies. See info for details.
K = Requires keys. See info for details.
Листинг 4 - Поиск в Marketplace GitHub-модулей

Обратите внимание, что некоторые модули отмечены звездочкой в столбце "K". Эти модули требуют учетные данные или для использования. Вики-сайт recon-ng содержит краткий список ключей, используемых его модулями. Некоторые из этих ключей доступны для бесплатных учетных записей, другие требуют подписки.

Можно узнать больше о модуле, используя команду marketplace info, за которой следует имя модуля. Поскольку для модулей GitHub требуются API ключи, давайте воспользуемся указанной командой для изучения модуля recon/domainshosts/google_site_web:

Bash:
[recon-ng][default] > marketplace info recon/domains-hosts/google_site_web

+------------------------------------------------------------------------------+
| path          | recon/domains-hosts/google_site_web                          |
| name          | Google Hostname Enumerator                                   |
| author        | Tim Tomes (@lanmaster53)                                     |
| version       | 1.0                                                          |
| last_updated  | 2019-06-24                                                   |
| description   | Harvests hosts from Google.com by using the 'site' operator. |
| required_keys | []                                                           |
| dependencies  | []                                                           |
| files         | []                                                           |
| status        | not installed                                                |
+------------------------------------------------------------------------------+

[recon-ng][default] >

Листинг 5- Получение информации о модуле

Согласно описанию, этот модуль выполняет поиск в Google с оператором "site" и не требует ключа API. Установим модуль командой marketplace install:

Bash:
[recon-ng][default] > marketplace install recon/domains-hosts/google_site_web
[*] Module installed: recon/domains-hosts/google_site_web
[*] Reloading modules...
[recon-ng][default] >
Листинг 6- Установка модуля

После установки модуля можно загрузить его с помощью команды module load с указанием его имени. Затем используем команду info, чтобы отобразить подробную информацию о модуле и необходимых параметрах:

Bash:
[recon-ng][default] > modules load recon/domains-hosts/google_site_web

[recon-ng][default][google_site_web] > info

       Name: Google Hostname Enumerator
     Author: Tim Tomes (@lanmaster53)
    Version: 1.0

Description:
  Harvests hosts from Google.com by using the 'site' search operator. Updates the 'hosts' table with the results.

Options:
  Name    Current Value  Required  Description
  ------  -------------  --------  -----------
  SOURCE  default        yes       source of input (see 'show info' for details)
Source Options:
  default SELECT DISTINCT domain FROM domains WHERE domain IS NOT NULL
  <string> string representing a single input
  <path> path to a file containing a list of inputs
  query <sql> database query returning one column of inputs

[recon-ng][default][google_site_web] >
Листинг 7 - Порядок использования recon/domains-hosts/google_site_web

Обратите внимание, что выведенные данные содержат дополнительную информацию о модуле, который был установлен и загружен. Согласно этим данным, модуль требует указать источник (source), который является целью, в отношении которого необходимо собрать информацию.

В этом случае используется команду options set SOURCE megacorpone.com, чтобы установить целевой домен:

Bash:
[recon-ng][default][google_site_web] > options set SOURCE megacorpone.com
SOURCE => megacorpone.com
Листинг 8 - Установка целевого домена

Наконец, запуск (run) модуля:

Bash:
[recon-ng][default][google_site_web] > run

---------------
MEGACORPONE.COM
---------------
[*] Searching Google for: site:megacorpone.com
[*] [host] www.megacorpone.com (<blank>)
[*] [host] vpn.megacorpone.com (<blank>)
[*] [host] www2.megacorpone.com (<blank>)
[*] [host] siem.megacorpone.com (<blank>)
[*] Searching Google for: site:megacorpone.com -site:www.megacorpone.com -site:vpn.megacorpone.com -site:www2.megacorpone.com -site:siem.megacorpone.com

-------
SUMMARY
-------
[*] 4 total (4 new) hosts found.
Листинг 9 - Запуск модуля

Результаты отражают то же, что было найдено при поиске Netcraft DNS. Однако время было потрачено не зря. Recon-ng сохраняет результаты в локальной базе данных, и эти результаты будут переданы в другие модули recon-ng.

Можно использовать команду show hosts для просмотра сохраненных данных:

Bash:
[recon-ng][default][google_site_web] > back

[recon-ng][default] > show
Shows various framework items

Usage: show <companies|contacts|credentials|domains|hosts|leaks|locations|netblocks|ports|profiles|pushpins|repositories|vulnerabilities>

[recon-ng][default] > show hosts

+--------------------------------------------------------------------------------+
| rowid |         host         | ip_address | region | country |     module      |
+--------------------------------------------------------------------------------+
| 1     | www.megacorpone.com  |            |        |         | google_site_web |
| 2     | vpn.megacorpone.com  |            |        |         | google_site_web |
| 3     | www2.megacorpone.com |            |        |         | google_site_web |
| 4     | siem.megacorpone.com |            |        |         | google_site_web |
+--------------------------------------------------------------------------------+

[*] 4 rows returned
[recon-ng][default] >
Листинг 10 - Отображение хостов

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

Исследуем recon/hosts-hosts/resolve с помощью команды marketplace info:

Bash:
[recon-ng][default] > marketplace info recon/hosts-hosts/resolve

+-------------------------------------------------------------------------------+
| path          | recon/hosts-hosts/resolve                                     |
| name          | Hostname Resolver                                             |
| author        | Tim Tomes (@lanmaster53)                                      |
| version       | 1.0                                                           |
| last_updated  | 2019-06-24                                                    |
| description   | Resolves the IP address for a host. Updates the 'hosts' table |
| required_keys | []                                                            |
| dependencies  | []                                                            |
| files         | []                                                            |
| status        | installed                                                     |
+-------------------------------------------------------------------------------+

[recon-ng][default] >
Листинг 11 - Информация о модуле recon/hosts-hosts/resolve

Описание модуля соответствует искомым функциям, поэтому устанавливаем его с помощью команды marketplace install:

Bash:
[recon-ng][default] > marketplace install recon/hosts-hosts/resolve
[*] Module installed: recon/hosts-hosts/resolve
[*] Reloading modules...
Листинг 12- Installing the resolve module

Ошибка "Invalid command" может указывать на неправильный уровень выполнения команды. Если это произойдет, вернитесь к верхнему уровню промта recon-ng и попробуйте выполнить команду еще раз.

После установки модуля можно начать использовать его командой modules load и выполнить info для отображения информации о модуле и его опциях:

Bash:
[recon-ng][default] > modules load recon/hosts-hosts/resolve

[recon-ng][default][resolve] > info

      Name: Hostname Resolver
    Author: Tim Tomes (@lanmaster53)
   Version: 1.0

Description:
  Resolves the IP address for a host. Updates the 'hosts' table with the results.

Options:
  Name    Current Value  Required  Description
  ------  -------------  --------  -----------
  SOURCE  default          yes        source of input (see 'show info' for details)

Source Options:
  default          SELECT DISTINCT host FROM hosts WHERE host IS NOT NULL AND ip_address
IS NULL
  <string>          string representing a single input
  <path>          path to a file containing a list of inputs
  query <sql>    database query returning one column of inputs

Comments:
  * Note: Nameserver must be in IP form.
Листинг 13 - Установка и отображение информации о recon/hosts-hosts/resolve

Как видно из вышеприведенного вывода, этот модуль будет резолвить IP-адрес хоста.

Необходимо предоставить в качестве источника IP-адрес, который хотим резолвить. Тут есть четыре варианта, как можно установить источник: по умолчанию (default), строка (string), путь (path) и запрос (query). Рядом с каждой опцией есть описание, как показано в Листинге 13. Например, в модуле recon-ng "google_site_web" использовалось строковое значение.

Однако на этот раз будем использовать базу данных. Если используем значение "по умолчанию", recon-ng будет искать информацию о хосте в своей базе данных для любых записей, у которые есть имя хоста, но нет IP-адреса.

Как показано в Листинге 10, имеется четыре хоста без IP-адресов. Если выбрать источник "по умолчанию", модуль автоматически запустится для всех четырех хостов в базе данных.

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

Bash:
[recon-ng][default][resolve] > run
[*] www.megacorpone.com => 38.100.193.76
[*] vpn.megacorpone.com => 38.100.193.77
[*] www2.megacorpone.com => 38.100.193.79
[*] siem.megacorpone.com => 38.100.193.89
Листинг 14 - Выполнение recon/hosts-hosts/resolve

Отлично. Теперь есть IP-адреса для четырех доменов.

Если снова выполнить show hosts, можно убедиться, что база данных была обновлена с результатами обоих модулей:

Bash:
[recon-ng][default][resolve] > show hosts

+-----------------------------------------------------------------------------------+
| rowid |          host        |   ip_address  | region | country |     module        |
+-----------------------------------------------------------------------------------+
| 1     | www.megacorpone.com  | 38.100.193.76 |        |         | google_site_web |
| 2     | vpn.megacorpone.com  | 38.100.193.77 |        |         | google_site_web |
| 3     | www2.megacorpone.com | 38.100.193.79 |        |         | google_site_web |
| 4     | siem.megacorpone.com | 38.100.193.89 |        |         | google_site_web |
+-----------------------------------------------------------------------------------+

[*] 4 rows returned
Листинг 15- Отображение информации о хостах после выполнения нескольких модулей

Открытый исходный код

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

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

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

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

В предыдущей части материала были идентифицирована учетная запись MegaCorp One на GitHub.

Давайте поищем интересную информацию в репозиториях этого аккаунта. Можно использовать filename:users для поиска любых файлов со словом "users" в имени:

open-source_code_1.png

Рисунок 12: File-оператор при поиске на GitHub

Поиск нашел только один файл - xampp.users. Даже с одним результатом возможно найти что-то очень интересное, поскольку - это среда разработки веб-приложений. Проверим содержимое файла.

open-source_code_2.png

Рисунок 13: Результаты поиска на GitHub

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

open-source_code_3.png

Рисунок 14: Содержимое файла xampp.users

Такой ручной подход лучше всего подходит для небольших репозиториев. Для более крупных репозиториев можно использовать несколько инструментов, которые помогут автоматизировать поиск, например Gitrob и Gitleaks. Recon-ng также имеет несколько модулей для поиска на GitHub. Большинству этих инструментов требуется для использования API провайдера хостинга исходного кода.

Например, на следующем снимке экрана показан пример результата поиска Gitleaks в файле:

open-source_code_4.png

Рисунок 15: Пример вывода Gitleaks

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

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

Shodan

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

- это поисковая система, которая сканирует устройства, подключенные к Интернету, включая, но не ограничиваясь, World Wide Web. Сюда входят серверы, на которых работают веб-сайты, а также устройства, такие как маршрутизаторы и (IoT).

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

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

Начнем с использования Shodan для поиска hostname:megacorpone.com:

shodan_1.png

Рисунок 16: Поиск домена MegaCorp One с помощью Shodan

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

Эта информация дает представление об интернет-следе искомой цели. Например, есть восемь серверов, на которых работает SSH, и можно уточнить полученные результаты, нажав SSH в разделе Top Services.

shodan_2.png

Рисунок 17: Сервера MegaCorp One с запущенным SSH

Основываясь на результатах работы Shodan, достоверно известно, какая версия OpenSSH работает на каждом сервере. Если щелкнуть по IP-адресу, можно получить сводную информацию о хосте.

shodan_3.png

Рисунок 18: Сводная информация Shodan о хосте

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

Сканер Security Headers

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

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

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

security_headers_scanner.png

Рисунок 19: Результаты сканирования для

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

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

SSL Server Test

Еще одним инструментом сканирования, который можно использовать, является . Этот инструмент анализирует конфигурацию сервера SSL/TLS и сравнивает ее с современными рекомендациями. Он также определит некоторые уязвимости, связанные с SSL/TLS, такие как или . Просканируем и проверим результаты:

ssl_server_test.png

Рисунок 20: Результаты SSL Server Test для

Результаты не такие плохие, как при Security Headers проверке. Тем не менее, уязвимый обмен ключами по алгоритму Диффи-Хеллмана, шифрование RC4 и отсутствие Forward Secrecy позволяют предположить, что цель не пользуется современными передовыми методами для защиты SSL/TLS. Например, из-за наличия уязвимости. Можно использовать эти результаты, чтобы получить представление о применяемых процедурах безопасности или их отсутствии в целевой организации.

Pastebin

- это веб-сайт для хранения и обмена текстом. Сайт не требует учетной записи для базового использования. Многие люди используют Pastebin, потому что он доступен и прост в использовании. Но поскольку Pastebin является общедоступной службой, можно использовать ее для поиска конфиденциальной информации.

Например, можно использовать веб-сайт для обычного поиска или использовать API для более сложных задач. Поищем информацию о megacorpone.com:

pastebin.png

Рисунок 21: Поиск в Pastebin

Есть только десять результатов, но некоторые из них выглядят очень знакомыми. Здесь нет никакой новой информации о MegaCorp One, но не стоит упускать из виду поиск в Pastebin в предстоящих случаях сбора информации.

Сбор информации о пользователе

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

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

Необходимо проявлять осторожность, когда при начале сбора информации о пользователях. Как отмечалось ранее в истории об «Алексе» в вступительной части материала, главная цель - улучшить состояние безопасности клиента, а не уволить одного человека. Точно так же не нужно нарушать какие-либо законы. Компания может разрешить тестирование только для своих систем. Личные устройства сотрудников, сторонняя электронная почта и учетные записи в социальных сетях обычно не подпадают под это разрешение.

Сбор информации об электронной почте

Начнем сбор информации о пользователях с базового сбора электронных почт. В этом случае будет использован theHarvester, который собирает адреса почты, имена, субдомены, IP-адреса и URL-адреса из нескольких общедоступных источников данных. Например, можно запустить theHarvester с опцией -d, чтобы указать целевой домен, и -b, чтобы установить источник данных для поиска:

Bash:
kali@kali:~$ theharvester -d megacorpone.com -b google
...
[-] Starting harvesting process for domain: megacorpone.com

[-] Searching in Google:
    Searching 0 results...
    Searching 100 results...
    Searching 200 results...
    Searching 300 results...
    Searching 400 results...
    Searching 500 results...

Harvesting results
No IP addresses found


[+] Emails found:
------------------
joe@megacorpone.com
mcarlow@megacorpone.com
first@megacorpone.com

[+] Hosts found in search engines:
------------------------------------

Total hosts: 13

[-] Resolving hostnames IPs...
Ns1.megacorpone.com:38.100.193.70
Siem.megacorpone.com:38.100.193.89
admin.megacorpone.com:38.100.193.83
beta.megacorpone.com:38.100.193.88
fs1.megacorpone.com:38.100.193.82
intranet.megacorpone.com:38.100.193.87
mail.megacorpone.com:38.100.193.84
mail2.megacorpone.com:38.100.193.73
ns1.megacorpone.com:38.100.193.70
ns2.megacorpone.com:38.100.193.80
url.megacorpone.com:empty
www.megacorpone.com:38.100.193.76
www2.megacorpone.com:38.100.193.79
Листинг 16 - Запуск theHarvester на megacorpone.com

Были найдены несколько адресов электронной почты, один из которых, "first@megacorpone.com", кажется, является новым. Также были найдены несколько новых поддоменов megacorpone.com. Добавим это в заметки.

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

Дамп паролей

Хакеры часто дампят взломанные учетные данные на Pastebin или других . Эти дампы паролей могут быть чрезвычайно полезны для создания словарей для перебора. Например, Kali Linux включает в себя список слов «rockyou», .

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

Инструменты для работы с социальными сетями

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

Social-Searcher

- это поисковая система для работы с сайтами социальных сетей. Бесплатный аккаунт позволяет осуществлять ограниченное количество поисков в день. Social-Searcher может быть быстрой альтернативой настройке ключей API на нескольких более специализированных сервисах.

Social-Searcher.png

Рисунок 22: Использование Social Searcher

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

Инструментарий специализированных сайтов

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

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

linkedin2username - это скрипт для создания списков имен пользователей на основе данных LinkedIn. Он требует действительных учетных данных LinkedIn и зависит от взаимосвязей LinkedIn людей в целевой организации. Скрипт выведет имена пользователей в нескольких разных форматах.

Stack Overflow

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

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

Например, если был найден пользователь, который всегда задает и отвечает на вопросы о Python, было бы разумно предположить, что он использует этот язык программирования ежедневно, и он, вероятно, будет использоваться в организации, где он работает.

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

Фреймворки для сбора информации

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

Фреймворк OSINT

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

OSINT.png

Рисунок 23: Фреймворк OSINT

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

Maltego

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

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

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

Maltego CE (ограниченная "версия для сообщества" (community version) Maltego) включена в Kali и требует бесплатной регистрации для использования. Также доступны коммерческие версии, которые могут обрабатывать большие объемы данных.

Несколько организации предоставляют информацию, которую Maltego может принять и отобразить. Однако некоторые поставщики информации также взимают плату за доступ к своим данным.

Заключение

В данном материале были исследованы основополагающие аспекты последовательного процесса пассивного сбора информации. Были рассмотрены различные техники и инструменты для поиска информации о компаниях и их сотрудниках. Эта информация часто может оказаться бесценной на более поздних стадиях работы.
 
Последнее редактирование:
5466 слов. Чёртов псих.
Следующая глава (Активный сбор информации) в процессе оформления, она в два раза больше этой. Переносить с mardown'а на BBCode - безумство какое-то. Но процесс идет. Всего в материале 25 глав. Все раньше или позже появятся здесь. Начали публикацию с самого интересного на мой взгляд. Надеюсь продолжение выйдет к концу недели.
 
  • Нравится
Реакции: Sunnych
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!