OSINT

Тихая разведка. Изучаем инструменты и техники пассивного сбора информации

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

[tds_warning]WARNING
Статья предназначена для «белых хакеров», профессиональных пентестеров и руководителей службы информационной безопасности (CISO). Ни автор, ни редакция не несут ответственности за любой возможный вред, причиненный применением информации данной статьи.[/tds_warning]

Определяем почтовые адреса

Начнем с того, что лежит на поверхности и легко находится в интернете. В качестве примера я взял колледж в Канаде (alg…ge.com). Это наша учебная цель, о которой мы попробуем узнать как можно больше. Здесь и далее часть адреса опущена по этическим соображениям.

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

Раздел с контактами на сайте alg…ge.com
Раздел с контактами на сайте alg…ge.com

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

theharvester -d alg*******ge.com -b all -l 1000

После 2–5 минут ожидания получаем 125 адресов вместо 11 общедоступных. Хорошее начало!

Результат работы theHarvester

Результат работы theHarvester
 

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

Поиск по метаданным

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

Поэтому мы соберем как можно больше метаданных, для чего воспользуемся FOCA — Fingerprinting Organizations with Collected Archives. В этом инструменте нас интересует только одна функция — сканирование указанного домена в поисках документов в популярных форматах с помощью трех поисковых систем (Google, Bing и DuckDuckGo) и последующим извлечением метаданных. FOCA также умеет анализировать EXIF из графических файлов, но в этих полях редко находится что-то стоящее.

Запускаем FOCA, нажимаем Project и создаем новый проект. В правом верхнем углу выбираем форматы всех видов и нажимаем Search All. Работа занимает от 5 до 10 минут.

 

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

Результат поиска файлов с сайта программой FOCA
Результат поиска файлов с сайта программой FOCA

 

Следующим шагом нам необходимо скачать выбранные или все файлы (контекстное меню → Download All) и затем извлечь из них метаданные.

Давай проанализируем, что нам удалось собрать.

  • Вкладка Users — 113 записей. В основном это имена пользователей, которые указываются при установке офисных пакетов. Они потребуются для дальнейшей социальной инженерии и подбора пар логин-пароль к обнаруженным в домене сетевым сервисам.
  • Вкладка Folders — 540 записей. Тут есть каталоги, которые указывают на использование Windows (что подтверждается в дальнейшем), и часто попадается строка вида N:\.... Предполагаю, что это сетевой диск, который подключается скриптом при входе пользователя в систему.
  • Вкладка Printers — 11 записей. Теперь мы знаем модели сетевых принтеров (они начинаются с \\). Остальные либо локальные, либо подключены через сервер печати.
  • Вкладка Software — 91 запись. Тут мы видим программное обеспечение, установленное на компьютерах. Основная фишка заключается в том, что указаны версии этого ПО, из которых можно выбрать уязвимые и попробовать эксплуатировать их при атаке.
  • Вкладка Emails. Это мы и так имеем в достатке благодаря theHarvester.
  • Вкладка Operating Systems — 5 записей. Операционные системы, на которых создавались собранные нами файлы. Радует цифра 81 напротив Windows XP. Как показывает практика, такие организации подолгу не обновляют ОС. Есть высокий шанс того, что древняя винда, для которой перестали выпускать патчи безопасности, где-то стоит у них по сей день.
Метаданные, извлеченные FOCA
Метаданные, извлеченные FOCA

Получаем данные о домене

Следующим шагом получим информацию о домене. Для начала воспользуемся программой whois (подробнее о ней читай в RFC 3912). Открываем терминал и вводим команду

whois alg*******ge.com

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

Программа whois
Программа whois

Кому неинтересно смотреть в терминал (или нет под рукой «Линукса»), могут воспользоваться интернет-сервисами, которые делают то же самое. Вот несколько из них:

Последние два особенно популярны из-за расширенного набора инструментов. В CentralOps сразу есть DNS-граббер, двойной Whois и сканирование портов. Server Sniff выполняет детальное сканирование сайта, причем с поддержкой IPv6 и HTTPS. Я в основном пользуюсь robtex.com. Он представляет все в графическом виде и довольно удобен.

Сайт
Сайт

Получаем записи DNS

Освежим в памяти типы доменных записей:

  • запись А сопоставляет IP-адрес доменному имени;
  • запись MX показывает почтовые серверы для домена;
  • запись NS показывает DNS-сервер этого домена;
  • запись CNAME — дополнительное имя для домена;
  • запись SRV указывает на серверы, которые обслуживают данную зону;
  • запись SOA покажет сервер с эталонной информацией о домене.

Теперь посмотрим, что важного мы можем из них достать.

Находим почтовые серверы

Адреса email у нас уже есть, а где взять список почтовых серверов? Конечно, из DNS! Проще всего это сделать программой nslookup. Тут мы воспользуемся записью MX, введя следующие команды:

$ nslookup
$ set q=mx
$ alg*******ge.com

Получаем строчку

mail exchanger = 10 alg*******ge-com.mail.protection.outlook.com

Теперь, используя запись А, выясним его IP-адрес:

$ nslookup alg*******ge-com.mail.protection.outlook.com

Записываем себе IP — 23.***.***.42.

На этом полет мысли остановить сложно, и на ум сразу приходит Telnet в связке с протоколом SMTP. В RFC 5321 описаны команды этого протокола, например VRFY, EXPN и RCPT-TO, при помощи которых можно попробовать подобрать имена пользователей или проверить на валидность собранные, но это уже слишком активные действия на данном этапе. Пока продолжим пассивный сбор.

Тихая разведка. Изучаем инструменты и техники пассивного сбора информации, изображение №8

Получаем адреса NS

Для получения NS-серверов воспользуемся одноименной записью (NS). Данную информацию получить можно несколькими программами. Сперва воспользуемся nslookup:

$ nslookup
$ set q=ns
$ alg*******ge.com

Затем попробуем еще одну линуксовую утилиту — host:

host -t ns alg*******ge.com

Обе программы выдали имена нужных нам DNS-серверов:

alg*******ge.com name server ns5.alg*******ge.com
alg*******ge.com name server ns3.alg*******ge.com
Тихая разведка. Изучаем инструменты и техники пассивного сбора информации, изображение №9

Теперь узнаем их IP-адреса программой nslookup, описанным выше способом. Они выглядят так: 205.***.***.11 и 205.***.***.80.

Передача зоны DNS

Следующим шагом мы постараемся узнать всю зону DNS данного домена. Успешность этой операции основана на неправильном конфигурировании DNS-серверов системными администраторами (если внешнюю зону забыли отделить от внутренней). В таком случае мы можем просто запросить у серверов передачу и получим целиком зону — то есть узнаем все доменные имена. Сделать это можно двумя утилитами: host и dnsrecon.

Для host потребуется уже известный (из предыдущего этапа) NS-сервер. Вводим команду:

$ host -l alg*******ge.com ns3.alg*******ge.com

Чтобы воспользоваться dnsrecon, нужно ввести:

$ dnsrecon -d alg*******ge.com -t axfr

К счастью (или к сожалению — смотря с какой стороны посмотреть), передача зоны DNS не удалась. Значит, разделение зон у выбранной жертвы настроено верно.

Неудачная передача зоны DNS
Неудачная передача зоны DNS

Придется дальше собирать данные иными способами.

Находим поддомены

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

Брутфорс субдоменов

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

$ host ns3.alg*******ge.com
В ответ получим строку ns3.alg*******ge.com has address 205***.***.11, то есть — такой поддомен существует.

Согласись, вручную перебирать имена — нудное и совсем не хакерское занятие. Поэтому мы будем автоматизировать. Создадим файл со списком имен поддоменов. Можно найти готовый на просторах интернета, но для демонстрации я создал простейший файл с содержимым mail dns ftp file vpn test dev prod voip firewall и называл его dns. Теперь для запуска перебора имен необходимо написать мини-скрипт:

for name in $(cat dns);do host $name.alg*******ge.com |grep "has address"; done
Тихая разведка. Изучаем инструменты и техники пассивного сбора информации, изображение №11

Перебор поддоменов программой host

DNSMap

Есть неплохой инструмент DNSMap. Он делает почти те же действия, что описаны выше. В нем уже встроен словарь, но можно использовать и свой. Для запуска перебора необходимо набрать

$ dnsmap alg*******ge.com

Процесс это небыстрый. У меня он занял (для выбранного домена) 1555 секунд, но и результат выдал неплохой — нашел 18 поддоменов.

Лог DNSMap
Лог DNSMap

Анализ

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

Визуальный анализ удобно выполнять утилитой Maltego. Это интерактивная программа для сбора данных и отображения найденных взаимосвязей в виде дерева.

У нее есть клиентская часть (именно ее ты и устанавливаешь) и серверная. Последняя содержит обновляемые библиотеки:

  • список ресурсов для сбора данных из общедоступных источников (как раз то, что ты делал в статье вручную);
  • набор статистических преобразований для их визуализации.

Есть три версии клиента, и простому пентестеру достаточно бесплатной. Она же входит в состав Kali Linux и подробно описана, в том числе на русском языке.

Дерево Maltego
Дерево Maltego

Разумеется, можно обойтись и без Maltego. Для удобства я собираю информацию в программе KeepNote, но если ты не страдаешь паранойей, то можно воспользоваться онлайновыми сервисами, типа NimbusNote.

Начнем с почтовых адресов. Их довольно много, и, как я уже говорил, это прямая дорога к атаке фишингом. Особенно с учетом того, что у нас также есть список программного обеспечения, которое используют в компании. В нем можно отыскать уязвимый софт (я нашел WinXP и MS Office 2003, для которых есть тонны эксплоитов с удаленным исполнением произвольного кода).

Я думаю, ты понял, что я клоню к вложенному в письмо вредоносному файлу. Это колледж, так что документооборот у них большой, и шанс попасться на удочку spear phishing очень высокий.

Если пойти по пути с социальной инженерией, то пригодятся имена реальных людей из результатов FOCA. Небольшая работа с Google, и мы узнаем о них множество подробностей (должность, телефон, email, ссылки на профиль в LinkedIn и другая полезная инфа). Например, я нашел личный адрес одного из сотрудников на Gmail (не стану приводить его в статье).

Далее рассмотрим поддомены. Приведу лишь самые информативные:

vpn.alg*******ge.com
IP address #1: 205.***.***.51

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

connect.alg*******ge.com
IP address #1: 205.***.***.159

Тут находится еще одна форма для авторизации.

ftp.alg*******ge.com
IP address #1: 205.***.***.102

FTP-сервер — отличное место для проведения атаки и создания «аэродрома подскока»: зачем нам загружать малварь извне или заражать письма, когда можно разместить всю боевую нагрузку на собственном файловом сервере колледжа? К нему и доверие выше.

online.alg*******ge.com
IP address #1: 205.***.***.25

Еще одна форма авторизации и объект для изучения. Чем больше сервисов, тем больше вероятность найти слабое звено в системе защиты.

owa.alg*******ge.com
IP address #1: 205.***.***.12

Резко увеличился шанс на присутствие Microsoft Exchange в сети (как и на то, что в почтовых адресах мы сможем найти логин от доменной учетной записи).

Давай-ка поближе рассмотрим поддомен blackboard.alg*******ge.com. Тут у нас имеется форма авторизации, и ее явно видно даже в инструментах разработчиков браузера. У меня это Chrome.

Форма для передачи логина и пароля
Форма для передачи логина и пароля

Откроем Burp Suite и попробуем вытащить оттуда строку передачи данных. Выглядеть она будет вот так:

user_id=user&password=qwerty&login=Login&action=login&new_loc=

Этого уже достаточно, чтобы пробить защиту методом грубой силы. Для этого необходимо составить списки UserList и PasswordList. Приступим. Я воспользуюсь базой имейлов — возьму только часть адресов до символа @ и попробую их в качестве логинов. Чтобы отрезать эту часть, можно использовать такую команду:

cut -d @ -f 1 mail >> UserList

Плюс ко всему я добавил список пользователей, которые дала нам FOCA. Так же отсортировал все до пробела, записал в файл и немного подредактировал, удалив строки типа pixel-1541332583568324-web. Маловероятно, что они могут быть логинами.

Со списком паролей немного проще: клонирую UserList, добавляю к каждой строке возможные даты рождения, следом разбавляю разными комбинациями иностранных слов и добавляю немного цифр от 6 до 9 символов напоследок.

Осталось запустить перебор. Да, это можно было сделать из Burp Suite (закладка Intruder), однако мне больше нравится утилита THC-Hydra. Инструкция по работе с гидрой на русском.

Запрос «Гидры» будет выглядеть примерно так (в статье он специально изменен):

$ hydra -t 5 -V -L UserList -P PasswordList -f [домен] http-post-form -m "/webapps/login/:user_id=§^USER^§&password=§^PASS^§&login=§Login§&action=§login§&new_loc=§§:F=The username or password you typed is incorrect"

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

Часть административной панели кабинета
Часть административной панели кабинета

Google в помощь

При сборе данных не забываем про гуглохаки. В нашем примере запрос вида mailto @al***ncollege.com site:al***ncollege.com сразу выдает кучу валидных адресов, а магическое заклинание: filetype:xls site:al***ncollege.com — дает прямую ссылку на табличку в формате Excel с адресами и телефонами партнеров и пометкой «This list contains privileged information. Not to be reproduced or distributed in any way».

Подробнее читай в статье «Google как средство взлома».

Напоследок

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

При подготовке этой статьи ни один канадский колледж не пострадал.

Похожие статьи

5 1 голос
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
Проверьте также
Закрыть
Кнопка «Наверх»
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x