![]() |
https://forum.antichat.xyz/attachmen...69be6dab53.png
Фаза разведки определяет всё. Криво просканировал периметр, пропустил открытый порт, не заметил баннер устаревшего сервиса - дальше можно не продолжать. За пять лет внешних и внутренних пентестов я убедился: 80% успешных векторов атаки рождаются на этапе сетевой разведки, а не в момент запуска эксплойта. Эксплойт - это вишенка. Разведка - весь торт. Здесь я покажу, как выстроить полный цикл сетевой разведки из Linux для пентеста с четырьмя инструментами (masscan, nmap, tcpdump и netcat - в контексте всего арсенала пентестера они разобраны в полном руководстве по Linux для пентестера) - masscan, nmap, tcpdump и netcat. Не голый список команд, а связанные сценарии: что запускать первым, как передавать результаты между инструментами и где новичок гарантированно споткнётся (проверено на стажёрах). Сетевая разведка в контексте MITRE ATT&CK Прежде чем запускать первый скан, полезно понимать, что именно ты делаешь с точки зрения фреймворка MITRE ATT&CK. Это не академическое упражнение - понимание тактик поможет грамотно описать находки в отчёте и объяснить заказчику, почему найденное критично. Какие техники покрывает фаза сетевой разведки: Техника MITRE ATT&CKIDТактикаЧто делаем на практикеScanning IP BlocksT1595.001Reconnaissancemasscan по /16-подсетямVulnerability ScanningT1595.002Reconnaissancenmap --script vulnNetwork Service DiscoveryT1046Discoverynmap -sV -sC для enumerationNetwork SniffingT1040Credential Access, Discoverytcpdump для пассивного перехвата учётных данных в открытом трафике (HTTP Basic Auth, FTP-пароли), захвата NTLM challenge/response для офлайн-брутфорса, баннеров и анализа handshakeRemote System DiscoveryT1018Discoverynmap -sn для обнаружения хостовSystem Network Connections DiscoveryT1049Discoverynetstat, ss на скомпрометированном хостеSystem Network Configuration DiscoveryT1016Discoveryip route, arp -a при lateral movement Когда пишешь отчёт, ссылка на конкретную технику ATT&CK сразу поднимает уровень документа. Заказчик видит не «мы нашли открытый порт», а «Network Service Discovery (T1046, Discovery) выявил сервис MS SQL на нестандартном порту, доступный из внешней сети». Совсем другой разговор. Подготовка окружения для сканирования сети Всё, что описано ниже, предполагает работу из Kali Linux или любого Debian-based дистрибутива. Ставим инструменты одной командой: Bash: Код:
sudoBash: Код:
ENGAGEMENTmasscan - быстрое сканирование портов на больших сетях masscan - первый инструмент в цепочке. Его задача - за минуты прочесать огромные диапазоны и найти, где вообще торчат открытые порты. По данным автора Роберта Грэхема, masscan способен отправлять до 10 миллионов пакетов в секунду (при наличии 10GbE-адаптера) и теоретически может просканировать весь IPv4-диапазон по одному порту примерно за 6 минут. На обычном железе реалистичный rate - десятки-сотни тысяч pps. Ловушка: если запустишь masscan с дефолтным rate на клиентской сети - ты её положишь. Это первая и самая распространённая ошибка джуниоров. Базовое сканирование с безопасным rate Bash: Код:
# Сканируем подсеть /24 по всем портам, rate 1000 пакетов/с
Ошибка 1: запуск без rate-лимита. По умолчанию masscan отправляет 100 пакетов/с, но с флагом Код:
--rate=10000000Ошибка 2: доверять результатам masscan как финальным. masscan использует асинхронную передачу - отправляет SYN и слушает ответы отдельно. Скорость есть, точность - так себе. Порт, который masscan показал как открытый, может быть ложноположительным. Всегда верифицируй через nmap. Ошибка 3: забыть про Код:
--bannersBash: Код:
sudoBash: Код:
# Парсим результаты masscan, вытаскиваем уникальные IPКод:
live_hosts.txtnmap - глубокое сканирование и enumeration сетевых сервисов nmap - основной инструмент для детальной разведки. Если masscan - это радар, который видит «что-то там есть», то nmap - бинокль с тепловизором. Лично у меня ни один пентест без него не обходился. Обнаружение хостов в сети (Host Discovery) Если начинаешь без предварительного masscan (например, сеть маленькая), первый шаг - ping sweep: Bash: Код:
# Пинг-скан: находим живые хосты без сканирования портовКод:
-snНюанс: некоторые хосты не отвечают на ICMP (пинг отключён на фаерволе). Тут помогает ARP-сканирование в локальной сети: Bash: Код:
# ARP-скан - работает только в L2-сегментеКод:
-PRСканирование портов: SYN vs Connect Вот где новички путаются чаще всего. Разница между Код:
-sSКод:
-sTBash: Код:
# SYN-скан (стелс): отправляет SYN, получает SYN-ACK, отправляет RSTФлаг Код:
-p-OS detection и fingerprinting сервисов После обнаружения портов - определяем, что на них живёт: Bash: Код:
# Версии сервисов + ОС + скрипты по умолчанию
Nmap Scripting Engine - штука, которая превращает nmap из сканера портов в полноценный инструмент Vulnerability Scanning (T1595.002): Bash: Код:
# Поиск известных уязвимостей на конкретном хостеnmap: практические сценарии для пентеста Сценарий: быстрая первичная разведка за 10 минут Bash: Код:
# Шаг 1: top-1000 портов по всей подсетиBash: Код:
# Фрагментация IP-пакетов - обходит некоторые stateless фаерволыКод:
-fКод:
--mtuКод:
--mtuКод:
-fКод:
-D RND:5tcpdump - анализ трафика и верификация результатов tcpdump - CLI-микроскоп для сетевого трафика. Его задача при пентесте - верифицировать то, что показали сканеры, и увидеть то, что они пропустили. Это инструмент Network Sniffing (T1040). Базовый захват трафика Bash: Код:
# Захват всего трафика на интерфейсе eth0Код:
-nКод:
-nФлаг Код:
-wФильтры BPF для пентестера Berkeley Packet Filter (BPF) - синтаксис фильтрации, одинаковый для tcpdump и Wireshark: Bash: Код:
# Только TCP SYN-пакеты (начало соединений) - видим что пытается подключатьсяДопустим, nmap показал порт 8080 как Код:
filteredТерминал 1 - слушаем трафик: Bash: Код:
sudoBash: Код:
ncПорт открыт - полный хендшейк: Код: Код:
IP 192.168.1.50.44321 > 192.168.1.100.8080: Flags [S], seq 123456Код: Код:
IP 192.168.1.50.44321 > 192.168.1.100.8080: Flags [S], seq 123456Код: Код:
IP 192.168.1.50.44321 > 192.168.1.100.8080: Flags [S], seq 123456Код:
[S]Код:
[S.]Код:
[R]netcat - ручная проверка и banner grabbing netcat (nc) часто называют «швейцарским ножом TCP/IP» - и не зря. В сетевой разведке у него три основных применения: проверка портов, banner grabbing и быстрый файловый обмен между машинами. Сканирование портов Linux через netcat Bash: Код:
# Сканирование диапазона портов (-z = zero I/O, только проверка)
Banner grabbing - одна из ключевых техник footprinting и fingerprinting. Подключаемся к сервису и читаем, что он нам расскажет: Bash: Код:
# Banner grab HTTP - нужен валидный запрос (пустая строка не вызовет ответа)Код:
-w 3Информация из баннера - версия софта, имя хоста, иногда даже версия ОС - прямой вход в поиск эксплойтов: Bash: Код:
# Нашли OpenSSH 7.4? Ищем эксплойтыНа этапе эксплуатации netcat часто используется для получения shell-доступа. Две схемы: Bind shell - цель слушает, ты подключаешься: Bash: Код:
# На целевой машине (если у тебя уже есть доступ для запуска)Bash: Код:
# На твоей машине - слушаемКод:
-eКод:
netcat-openbsdКод:
-eКод:
ncatКод:
netcat-traditionalПрактический сценарий: разведка DMZ за 30 минут Вот реальный workflow, который я использую при внешнем пентесте. У тебя есть диапазон 10.0.0.0/24, 30 минут до первого алерта SOC и задача - построить карту периметра. 🔓 Часть контента скрыта: Эксклюзивный контент для зарегистрированных пользователей. Зарегистрироваться или Войти Минуты 0-5: быстрый обзор через masscan Bash: Код:
# Топовые порты на максимальной безопасной скоростиBash: Код:
# Версии сервисов + скрипты по умолчанию на найденных хостахBash: Код:
# Допустим nmap показал порт 8080 как "tcpwrapped" - проверяем рукамиBash: Код:
# Записываем трафик, пока делаем ручные проверкиBash: Код:
# Vulnerability scan на самых интересных хостахАктивная разведка и пассивная разведка сети Всё, что описано выше - это активная разведка пентест. Ты отправляешь пакеты, взаимодействуешь с целью, оставляешь следы. Но перед активной фазой стоит провести пассивную разведку - сбор информации без прямого контакта с целью. Инструменты пассивной разведки сети: Bash: Код:
# DNS-разведка - не касаемся инфраструктуры цели напрямуюКод:
nmap -sLКод:
dc01.corp.localКод:
backup-sql.internalЧастые ошибки начинающих при сетевой разведке За время внутренних воркшопов я собрал топ ошибок, на которых спотыкается каждый второй стажёр: 1. Сканирование без Код:
-p-Код:
-p-2. Путаница между SYN и connect-сканом. Запускают Код:
nmap -sSКод:
-sT3. masscan без rate-лимита. Уже говорил, но повторю: Код:
--rate=100000004. tcpdump без Код:
-n5. Не сохраняют результаты. Пробежался nmap'ом, посмотрел на экран, закрыл терминал. А через два дня нужно писать отчёт. Всегда Код:
-oAКод:
-oGКод:
-w6. Игнорирование UDP. TCP-сканирование - половина картины. DNS (53), SNMP (161), TFTP (69), IPSec (500) работают по UDP. Добавляй UDP-скан хотя бы для ключевых портов: Bash: Код:
sudoСводная таблица инструментов ПараметрmasscannmaptcpdumpnetcatОснов ная задачаБыстрое сканирование больших сетейГлубокий анализ хостов и сервисовЗахват и анализ пакетовРучная проверка портов, banner grabbingСкоростьДо 10M пакетов/сСотни-тысячи пакетов/сПассивный захватОдно соединение за разТочностьСредняяВысокая Максимальная (сырые пакеты)Высокая (ручная верификация)Требует rootДаДля SYN-сканаДаНет (для базовых операций)Вывод в файл-oG, -oJ, -oX-oA, -oN, -oG, -oX-w (pcap)Через перенаправление (>)Этап разведкиПервый (обзор)Второй (глубина)Параллельно (верификация)Третий (точечная проверка) Правильная цепочка: masscan (быстро находим живые порты) → nmap (глубоко исследуем найденное) → tcpdump (верифицируем и ловим то, что пропустили) → netcat (руками проверяем интересные сервисы и грабим баннеры). Эта цепочка покрывает полный цикл Network Service Discovery (T1046) и даёт материал для перехода к фазе эксплуатации. Каждый инструмент компенсирует слабости другого: masscan быстр, но неточен; nmap точен, но медлен на больших сетях; tcpdump видит всё, но требует интерпретации; netcat прост, но работает точечно. Освоив эту четвёрку и научившись связывать их в цепочку, ты закроешь 90% задач фазы разведки на любом инфраструктурном пентесте. Остальные 10% - специализированные утилиты под конкретные протоколы. Но основа всегда одна. Попробуй прогнать сценарий «DMZ за 30 минут» на своей лабе - и увидишь, сколько интересного торчит наружу даже в «чистой» сети. |
Круто, как всё связал в единую цепочку. Особенно нравится идея сначала masscan для быстрого обзора, а потом nmap с верификацией и скриптами – реально экономит время и не пропускаешь баги на полпути. tcpdump для проверки — важный момент, часто его забывают, а он рулишь по трафику. netcat классикой дополняет набор, чтобы руками быстро баннер глянуть. Спасибо за полезный разбор, пригодится в работе!
|
Рад видеть, что цепочку понял правильно. Раньше без masscan по крупной сети сидел днями, а теперь за 10 минут первый обзор готов — кайф! Nmap всегда был мастхэвом, а tcpdump и netcat — это как пара очков: без них детали уплывают. Забавно, как раньше всё-таки много времени уходило на ручную проверку баннеров, сейчас автоматизируешь, и результат уже почти сразу. Хороший подход, проще работать и баги не проваляешь.
|
Серьёзно сомневаюсь, что masscan с его скоростью можно использовать без риска, особенно на реальных сетях. Быстрота — это хорошо, но ложноположительные результаты только добавляют работы и могут ввести в заблуждение быстрее, чем пользу принесут. Лучше уж потратить лишние пару минут на нормальный nmap, чем потом разбираться с хаосом от быстрых сканов. Tcpdump и netcat всё равно требуют внимания, иначе полезных данных особо не вытянуть.
|
| Время: 15:06 |