Основы пентестинга: методология и инструментарий

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

1. Разведка и OSINT: инструменты сбора данных (theHarvester, Shodan, Maltego, Recon-ng)

Разведка и OSINT: инструменты сбора данных (theHarvester, Shodan, Maltego, Recon-ng)

Этап разведки (Reconnaissance) является фундаментом любого тестирования на проникновение. По статистике, профессиональные пентестеры тратят до 70-80% времени именно на сбор информации, так как чем больше векторов атаки будет найдено на этом этапе, тем выше шансы на успешную эксплуатацию уязвимостей. Мы сосредоточимся на OSINT (Open Source Intelligence) — разведке на основе открытых источников, которая позволяет получить критически важные данные о цели без прямого взаимодействия с её инфраструктурой.

В этой статье мы разберем четыре ключевых инструмента, которые стали стандартом индустрии: theHarvester, Shodan, Maltego и Recon-ng.

theHarvester: Сбор email-адресов и субдоменов

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

Принцип работы

Инструмент не сканирует цель напрямую. Вместо этого он отправляет запросы к Google, Bing, LinkedIn, Baidu, Yahoo и другим источникам, извлекая из выдачи: * Адреса электронной почты (для фишинга или брутфорса). * Субдомены (для расширения поверхности атаки). * Имена хостов и виртуальные хосты. * Открытые порты (через интеграцию с Shodan).

Практическое применение

Использование theHarvester сводится к передаче целевого домена и выбора источников данных. Рассмотрим базовый синтаксис:

Разбор аргументов: * -d: Целевой домен. * -b: Источник данных (source). Значение all задействует все доступные модули, но это может занять много времени и привести к блокировке вашего IP поисковиками. Рекомендуется перебирать источники последовательно. * -l: Лимит результатов (limit). Ограничивает количество обрабатываемых страниц поисковой выдачи.

Результатом работы станет список корпоративных почтовых адресов, которые часто формируются по шаблону (например, imya.familiya@company.com), и список субдоменов, которые могут вести на забытые тестовые среды или панели администратора.

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

Если Google индексирует контент веб-страниц, то Shodan индексирует информацию о сервисах и устройствах, подключенных к интернету. Это глобальный сканер портов, который круглосуточно опрашивает IPv4-адреса и сохраняет полученные баннеры ответов.

!Принципиальное различие в объектах индексации между Google и Shodan

Баннеры и метаданные

Shodan собирает «баннеры» — текстовые метаданные, которые сервис отправляет клиенту при подключении. В них часто содержится: * Версия программного обеспечения (например, Apache/2.4.41). * Тип операционной системы. * Информация о конфигурации. * Геолокация сервера.

Поисковые фильтры

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

* org:"Target Company" — поиск всех устройств, принадлежащих организации (по данным WHOIS). * net:192.168.0.0/24 — поиск в конкретном диапазоне IP-адресов. * port:3389 — поиск открытых портов RDP (удаленный рабочий стол). * vuln:CVE-2019-0708 — поиск устройств, потенциально уязвимых к BlueKeep (требует платной подписки).

> Shodan позволяет обнаружить «теневые IT-ресурсы» — сервера и устройства, которые были подключены администраторами в обход регламентов безопасности и остались без защиты.

Maltego: Визуализация связей

Maltego — это инструмент для построения графов связей. В отличие от консольных утилит, Maltego фокусируется на визуализации отношений между сущностями (Entities). Это позволяет аналитику увидеть неочевидные связи между людьми, доменами, IP-адресами и организациями.

Архитектура: Сущности и Трансформации

Работа в Maltego строится на двух понятиях:
  • Entities (Сущности): Объекты на графе (Человек, Домен, IP-адрес, Телефон, Email).
  • Transforms (Трансформации): Скрипты, которые берут одну сущность и преобразуют её в другие. Например, трансформация «Domain to IP» берет доменное имя и возвращает IP-адрес, на котором оно хостится.
  • !Пример графа связей, построенного в Maltego

    Процесс работы

    Пентестер начинает с одной известной точки входа (например, домена). Применяя трансформации, он расширяет граф:
  • Домен DNS-записи.
  • DNS-записи Блок IP-адресов.
  • Email-адрес Профили в соцсетях или утечки паролей.
  • Maltego поставляется в версии Community Edition (бесплатная, с ограничениями на количество результатов) и коммерческих версиях. Инструмент агрегирует данные из десятков источников (VirusTotal, Shodan, WHOIS) в единый интерфейс.

    Recon-ng: Фреймворк для веб-разведки

    Recon-ng — это полнофункциональный фреймворк для веб-разведки, написанный на Python. Его интерфейс и логика работы намеренно скопированы с Metasploit Framework, чтобы облегчить обучение специалистам по безопасности.

    Модульная структура

    Recon-ng не является монолитной программой. Он состоит из независимых модулей, разделенных по категориям: * Recon: Модули для активного и пассивного сбора данных (поиск контактов, хостов). * Discovery: Поиск скрытого контента на веб-серверах. * Exploitation: (Ограниченно) эксплуатация найденных уязвимостей. * Reporting: Генерация отчетов (HTML, JSON, CSV).

    База данных и рабочие пространства

    Ключевое преимущество Recon-ng — наличие встроенной базы данных. Все найденные данные (хосты, контакты, утечки) автоматически сохраняются и структурируются. Это позволяет передавать результаты работы одного модуля на вход другому без ручного копирования.

    Пример рабочего процесса:

  • Создание рабочей области: workspaces create target_project
  • Добавление домена: db insert domains
  • Поиск модулей: modules search bing
  • Загрузка модуля: modules load recon/domains-hosts/bing_domain_web
  • Запуск: run
  • После выполнения модуля найденные хосты попадут в таблицу hosts. Затем можно загрузить модуль recon/hosts-hosts/resolve, который возьмет эти хосты из базы и попытается узнать их IP-адреса.

    Сравнительный анализ инструментов

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

    | Инструмент | Тип интерфейса | Главная цель | Лучшее применение | | :--- | :--- | :--- | :--- | | theHarvester | CLI (Консоль) | Email, Субдомены | Быстрый сбор контактов и первичная карта доменов | | Shodan | Web / CLI | Инфраструктура, IoT | Поиск открытых портов и уязвимых сервисов без сканирования | | Maltego | GUI (Графика) | Связи, Люди, Сети | Глубокий анализ связей и визуализация инфраструктуры | | Recon-ng | CLI (Shell) | Комплексная разведка | Автоматизация сбора данных и хранение результатов в БД |

    Итоги

    * OSINT — это база. Качественная разведка позволяет найти «низко висящие фрукты» (легкие цели) и избежать преждевременного обнаружения системами защиты (IDS/IPS), так как большинство описанных методов являются пассивными. * Специализация инструментов. theHarvester идеален для сбора email-адресов, Shodan — для анализа технической инфраструктуры, Maltego — для построения связей, а Recon-ng — для автоматизации всего процесса. * Пассивность. Использование Shodan и поисковых движков (через theHarvester) не генерирует трафик на целевые сервера, делая разведку практически невидимой для службы безопасности цели. * Визуализация. Для сложных целевых архитектур использование Maltego позволяет увидеть картину целиком, что часто упускается при просмотре текстовых логов.

    2. Сканирование сети и перечисление сервисов: работа с Nmap, Masscan и Wireshark

    Сканирование сети и перечисление сервисов: работа с Nmap, Masscan и Wireshark

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

    Мы разберем три инструмента, составляющих «золотой стандарт» сетевой разведки: Masscan для скоростного обнаружения, Nmap для глубокого анализа и Wireshark для понимания того, что происходит «под капотом» сети.

    Masscan: Асинхронная скорость

    Когда перед пентестером стоит задача просканировать огромный диапазон IP-адресов (например, всю подсеть класса B или даже весь интернет), классические сканеры работают слишком медленно. Здесь в игру вступает Masscan.

    Архитектура и принцип работы

    Главное отличие Masscan от других инструментов — собственный TCP/IP стек. Он не использует системный сетевой стек операционной системы, что позволяет ему отправлять пакеты асинхронно, не дожидаясь ответа на предыдущий запрос перед отправкой следующего. Это делает его самым быстрым сканером портов в мире.

    !Различие между последовательным сканированием и асинхронным подходом Masscan

    Практическое использование

    Masscan используется для быстрого обнаружения «живых» хостов и открытых портов, чтобы затем передать эти данные в Nmap для детального анализа.

    Пример команды для сканирования диапазона:

    * -p: Указание портов. * --rate: Количество пакетов в секунду. Значение 10000 позволяет просканировать сеть класса B (/16, 65536 адресов) за несколько минут.

    Расчет нагрузки на сеть

    При использовании высоких скоростей важно понимать нагрузку на канал, чтобы не вызвать отказ в обслуживании (DoS) сетевого оборудования. Пропускная способность рассчитывается так:

    Где — пропускная способность (бит/с), — скорость сканирования (пакетов/с), — размер пакета (байты, обычно около 60 байт для SYN-пакета), а — коэффициент перевода байтов в биты.

    Например, при --rate 100000:

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

    Nmap: Швейцарский нож сетевой разведки

    Nmap (Network Mapper) — это инструмент для глубокого исследования. Если Masscan — это ковровая бомбардировка, то Nmap — это снайперский выстрел. Он позволяет определить версии сервисов, операционную систему и даже наличие уязвимостей.

    Типы сканирования

    Понимание флагов Nmap критично для обхода защиты и получения точных данных.

    #### 1. SYN-сканирование (-sS) Это режим по умолчанию для root-пользователя. Его называют «полуоткрытым» (half-open) сканированием. Nmap отправляет SYN-пакет (запрос на соединение), получает SYN-ACK (согласие) от сервера, но вместо завершения рукопожатия отправляет RST (сброс).

    Преимущества: * Быстрее, чем полное соединение. * Часто не логируется приложениями, так как соединение не было установлено полностью.

    #### 2. TCP Connect сканирование (-sT) Использует системный вызов connect(). Устанавливает полное тройное рукопожатие. Используется, если у вас нет прав root.

    !Сравнение полного TCP-соединения и Stealth SYN-сканирования

    #### 3. UDP сканирование (-sU) UDP — протокол без установления соединения, поэтому сканирование идет медленно и ненадежно. Однако многие критические сервисы (DNS, SNMP, DHCP) работают на UDP. Игнорировать этот тип сканирования — значит упускать векторы атаки.

    Перечисление версий и OS (-sV, -O)

    Знать, что порт 80 открыт — недостаточно. Нужно знать, что там работает Apache 2.4.49, так как именно эта версия может быть уязвима.

    * -sV: Анализирует баннеры сервисов и сравнивает их с базой отпечатков. * -O: Определяет операционную систему по особенностям реализации стека TCP/IP (например, по значению TTL или размеру окна).

    Nmap Scripting Engine (NSE)

    Самая мощная функция Nmap. С помощью флага -sC (стандартные скрипты) или --script можно запускать скрипты на языке Lua для автоматизации задач: от получения заголовков HTTP до брутфорса паролей и поиска CVE.

    Пример комплексного сканирования:

    * -Pn: Не пинговать хост перед сканированием (полезно, если ICMP заблокирован брандмауэром).

    Wireshark: Анализ трафика и отладка

    Wireshark — это анализатор сетевых протоколов. Пентестер использует его не для сканирования, а для понимания того, как сеть реагирует на сканирование. Это «глаза», которые видят правду, скрытую за выводом консольных утилит.

    Зачем Wireshark пентестеру?

  • Диагностика блокировок: Если Nmap показывает, что все порты filtered, Wireshark покажет, приходят ли ответы вообще или они блокируются на уровне протокола ICMP (Type 3 Code 13 — Communication Administratively Prohibited).
  • Анализ работы WAF/IPS: Вы можете увидеть, как меняется поведение ответов сервера при отправке подозрительных пакетов.
  • Перехват данных: При атаках типа Man-in-the-Middle (MitM) Wireshark используется для извлечения учетных данных из незашифрованного трафика (HTTP, Telnet, FTP).
  • Интерпретация статусов портов

    Понимая структуру пакетов в Wireshark, можно точно определить статус порта:

    | Статус порта | Поведение сервера (ответ на SYN) | Значение | | :--- | :--- | :--- | | Open | Приходит пакет SYN-ACK | Сервис слушает порт и готов к соединению | | Closed | Приходит пакет RST-ACK | Хост активен, но на порту нет сервиса | | Filtered | Ответ не приходит (тайм-аут) или приходит ICMP Unreachable | Пакет отброшен брандмауэром |

    Фильтрация трафика

    В потоке тысяч пакетов важно уметь находить нужное. Примеры фильтров: * ip.addr == 192.168.1.50 — только трафик конкретного хоста. * tcp.flags.syn == 1 and tcp.flags.ack == 0 — отобразить только запросы на начало соединения (попытки сканирования). * tcp.port == 445 — анализ активности SMB (часто используется для эксплойтов типа EternalBlue).

    Методология совместного использования

    Эффективный процесс сканирования выглядит как воронка:

  • Широкий охват (Masscan): Быстро сканируем весь диапазон сети, чтобы найти «живые» IP-адреса. Сохраняем список.
  • Точечный анализ (Nmap): Берем список из шага 1 и запускаем Nmap с определением версий (-sV) и скриптами (-sC) только по найденным хостам.
  • Верификация (Wireshark/Netcat): Если результаты неоднозначны или нужно проверить специфическую гипотезу, анализируем трафик вручную.
  • Итоги

    * Masscan для масштаба. Используйте его для первичного обнаружения хостов в больших сетях благодаря его асинхронной архитектуре, но следите за нагрузкой на канал. * Nmap для глубины. Это основной инструмент для определения версий ПО и ОС. Используйте SYN-сканирование (-sS) для скрытности и скорости. * Статусы портов. Различайте Closed (порт закрыт, но хост отвечает) и Filtered (пакеты теряются на фаерволе). Это ключевое различие для планирования атаки. * Wireshark для контроля. Используйте сниффер, чтобы понимать, почему сканер выдает тот или иной результат, и для диагностики проблем с подключением.