![]() |
https://forum.antichat.xyz/attachmen...7debc0a33b.png
За пять лет пентестов я ни разу не видел, чтобы эксплойт сработал «вслепую». Каждая успешная атака начинается с разведки: ты должен знать, что торчит в сети, на каком порту, какой версии - и только потом выбирать вектор. Сетевая разведка и сканирование портов - фундамент любого пентеста. Не освоил эту фазу - дальше можно не идти. Здесь я разберу весь цикл сетевой разведки: от обнаружения живых хостов до определения версий сервисов и обхода IDS. Не абстрактно, а с конкретными командами, разбором каждого флага и объяснением того, что в этот момент происходит на уровне пакетов. Покажу, как связать masscan и nmap в единую цепочку и получить полную карту сети. Что происходит при сетевой разведке и зачем она нужна Техники сетевой разведки - первое, что выполняет пентестер (или атакующий) при работе с целевой инфраструктурой. В терминологии MITRE ATT&CK сюда попадают сразу несколько техник:
Весь процесс разведки выстраивается в три этапа:
Обнаружение хостов в сети: ping sweep, ARP и другие методы Прежде чем сканировать порты, нужно понять, какие хосты вообще отвечают. Гонять всю подсеть /24 по всем 65535 портам без предварительной разведки - часы впустую. ICMP ping sweep Самый простой способ - отправить ICMP Echo Request каждому адресу в диапазоне: Bash: Код:
nmap -snКод:
-snПроблема: многие хосты не отвечают на ICMP. Корпоративные файрволы часто режут пинги. Если ping sweep показал 5 хостов из ожидаемых 50 - это не значит, что сеть пустая. Скорее наоборот. ARP-сканирование в локальной сети Если ты находишься в том же L2-сегменте, что и цели (типичная ситуация на внутреннем пентесте), ARP-запросы работают надёжнее всего: Bash: Код:
nmap -sn -PRКод:
-PRКастомные пробы для обхода фильтрации Когда ICMP заблокирован, а ты не в локальном сегменте, помогают TCP-пробы на конкретные порты. Из официальной документации nmap: для обнаружения хостов можно комбинировать несколько типов проб: Bash: Код:
# TCP SYN на популярные порты + ICMPКод:
-PS22,80,443,3389Код:
-PEИзвлекаем список живых хостов для следующего этапа: Bash: Код:
grepОпределение открытых портов - ядро сетевой разведки. Nmap поддерживает больше десяти техник сканирования, но на практике 90% задач решаются тремя: SYN, Connect и UDP. Остальные - для специфических сценариев: анализ файрволов или обход IDS. Stealth сканирование SYN (-sS) SYN-скан - дефолтная и самая популярная техника nmap. Именно её инструмент использует, когда запущен от root без дополнительных флагов: Bash: Код:
sudo
Флаг Код:
-p-TCP Connect сканирование (-sT) Connect-скан использует системный вызов Код:
connect()Bash: Код:
nmap -sT -p-ПараметрSYN-скан (-sS)Connect-скан (-sT)Требует rootДаНетЗавершает хендшейкНетДаСкоростьБыст рееМедленнееВидимость в логахТолько IDSIDS и логи приложенийТочностьВысокая Высокая Когда использовать Connect-скан? Когда нет root-прав - тут без вариантов. Или когда сеть использует stateful firewall, который отслеживает SYN без ACK и блокирует такие пакеты - тогда полное соединение может пройти, а половинчатое нет. На практике это редкость, но я встречал такие конфигурации в банковских сетях. UDP-сканирование (-sU) UDP-сканирование - головная боль начинающих пентестеров. Но игнорировать его нельзя: DNS (53), SNMP (161/162), DHCP (67/68) - критичные сервисы, которые работают по UDP. Как сказано в документации nmap: «exploitable UDP services are quite common and attackers certainly don't ignore the whole protocol». Bash: Код:
sudo
Код:
--top-ports 100Совет из практики: комбинируй UDP и TCP в одном запуске: Bash: Код:
sudoACK-скан не ищет открытые порты - он определяет правила файрвола: Bash: Код:
sudo
Masscan - быстрое сканирование портов на больших сетях Когда нужно просканировать подсеть /16 (65536 адресов), nmap будет работать часы. Masscan решает задачу на порядки быстрее - за минуты при сканировании ограниченного набора портов или высоком rate (100K+), хотя полное сканирование всех 65535 портов на /16 при умеренном rate займёт дни. По данным автора - Роберта Грэхема - masscan способен отправлять до 10 миллионов пакетов в секунду на 10GbE-адаптере. Но есть принципиальная разница: masscan - это «радар», nmap - «бинокль с тепловизором». Masscan быстро находит, где торчат открытые порты. Nmap детально исследует каждый найденный. Базовый запуск с безопасным rate Bash: Код:
sudo
Передача результатов masscan в nmap Masscan - грубый инструмент с ложноположительными результатами (асинхронная отправка и приём пакетов, без ожидания ответа на каждый). Всегда верифицируй находки: Bash: Код:
# Извлекаем уникальные IP из результатов masscanFingerprinting сервисов и определение ОС через nmap Найти открытый порт - полдела. Нужно понять, что за ним стоит. Сканирование сервисов и версий - этап, который превращает список портов в список потенциальных векторов атаки. Version Detection (-sV) Bash: Код:
sudoКод:
-sV. Ответы сравниваются с известными паттернами. Параметр Код:
--version-intensity
Код:
--version-intensity 5-7Код:
tcpwrappedBanner grabbing через netcat Когда nmap показывает порт как Код:
tcpwrappedBash: Код:
# HTTP bannerКод:
SSH-2.0-OpenSSH_8.9p1 Ubuntu-3ubuntu0.6OS Fingerprinting (-O) Bash: Код:
sudoКод:
nmap-os-dbФлаг Код:
--osscan-guessДля надёжного fingerprinting нужны и открытые, и закрытые порты на цели - nmap использует разницу в ответах для сопоставления с базой. NSE-скрипты: поиск уязвимостей через nmap Nmap Scripting Engine превращает сканер портов в инструмент для Vulnerability Scanning (T1595.002, Reconnaissance): Bash: Код:
# Общий скан на известные уязвимостиВ стандартной поставке nmap (на момент написания) нет официального NSE-скрипта для BlueKeep (CVE-2019-0708). Доступны community-скрипты (например, от Ekultek на GitHub). Альтернативы: rdpscan (Robert Graham) или модуль Metasploit Код:
auxiliary/scanner/rdp/cve_2019_0708_bluekeepОбход систем обнаружения: stealth-техники сканирования На реальном пентесте тебя мониторит SOC. Вот техники, которые снижают вероятность обнаружения (но не гарантируют невидимость - держи это в голове): Управление скоростью (-T) Nmap поддерживает шесть профилей тайминга: ПрофильНазваниеЗадержка между пробамиКогда применять-T0Paranoid5 минутОбход IDS при внешнем пентесте-T1Sneaky15 секундСкрытное сканирование-T2Polite0.4 секундыЧувствительные сети-T3NormalПо умолчаниюСтандартные задачи-T4AggressiveМинимальнаяБыстрое сканирование в LAN-T5InsaneБез задержекТестовые среды На внутреннем пентесте обычно хватает Код:
-T3Код:
-T4Код:
-T1Код:
-T2Код:
-T2Фрагментация пакетов Bash: Код:
sudoКод:
-fКод:
--mtu 16Decoy-сканирование Bash: Код:
sudoКод:
-D RND:10Код:
-D 10.0.0.5,10.0.0.12,10.0.0.33,MEРандомизация порядка портов Bash: Код:
sudoКод:
--randomize-hostsКод:
--top-portsКод:
-rПолный цикл сетевой разведки: пошаговый сценарий Вот как я выстраиваю пентест сканирование портов на реальном проекте. Делай раз, делай два, делай три. Шаг 1: подготовка рабочей директории Bash: Код:
ENGAGEMENTBash: Код:
sudoКод:
-p 1-1000Шаг 3: извлечение живых хостов Bash: Код:
grepBash: Код:
sudoКод:
-sSКод:
-sVКод:
-sCКод:
-OКод:
-p-Код:
-T4Шаг 6: точечный поиск уязвимостей Bash: Код:
# SMB-уязвимости на всех хостах с портом 445Bash: Код:
# Порт 9090 показал tcpwrapped - проверяем рукамиBash: Код:
sudoСводная таблица инструментов сетевой разведки ИнструментЗадачаСкоростьТ очностьТребует rootmasscanБыстрый охват больших сетейОчень высокаяСредняяДаnmap -sSSYN-сканирование портовВысокаяВысокаяДаnmap -sTConnect-сканированиеСредняяВысока яНетnmap -sVFingerprinting сервисов nmapНизкаяОчень высокаяНетnmap -OOS fingerprintingНизкаяВысокаяДаnmap --scriptNSE-скрипты (vuln, enum)Зависит от скриптаВысокаяЗависит от скриптаnetcatBanner grabbing, ручная проверкаРучнаяТочнаяНетtcpd umpАнализ трафика при сканированииПассивныйТочн аяДа Логика связки: masscan (быстро находим, где что-то торчит) → nmap -sS (верифицируем открытые порты) → nmap -sV -sC (определяем сервисы и версии) → nmap --script vuln (ищем уязвимости) → netcat (ручная доверификация сомнительных портов). Типичные ошибки начинающих Сканирование только top-1000 портов. Без Код:
-p-Код:
-p-Доверие результатам masscan без верификации. Masscan использует асинхронную отправку - он не ждёт ответа на каждый пакет. Ложноположительные результаты - норма. Всегда проверяй через nmap. Запуск с -T5 на продакшн-сети. Агрессивный тайминг генерирует поток пакетов, который может положить сетевое оборудование. Для продакшн-сред максимум Код:
-T3Код:
-T2Игнорирование UDP. DNS, SNMP, TFTP, NTP - все по UDP. SNMP с community string Код:
publicСканирование без записи результатов. Флаг Код:
-oAСетевая разведка - навык, который нарабатывается практикой. Подними виртуальную лабораторию, поставь несколько машин с разными сервисами и пройди весь цикл: от masscan до ручного banner grabbing. Когда увидишь, как SYN-ACK приходит на tcpdump в реальном времени - поймёшь, как это работает, лучше любого учебника. Попробуйте просканировать свой лабораторный сегмент по шагам из раздела выше и сравнить, что нашёл masscan, а что - nmap. Расхождения будут, и они многое объяснят. |
если статья не написано ИИ то:
1) -sA Зачем? На внешнем пентесте перед активным сканированием полезно понять, какие порты файрвол вообще пропускает. Экономит время и снижает шум. нормальный firewall не пропустит такое. Уже все statefull. 2)На внутреннем пентесте обычно хватает -T3 или -T4. Для внешней разведки с требованием скрытности - -T1 или -T2. Лично я на внешних проектах почти всегда начинаю с -T2 - лучше подождать лишний час, чем получить звонок от SOC на второй минуте. внешний периметр уже сканят куча ботов, какой смысл добавлять скрытность? 3) на мой взгяд нет смысл в попытках обойти IDS через стандартные флаги, данные сканеры легко детектируется. тот же nmap в трафике пишет что он nmap. |
Ну да, обычный фаервол тупо закроет ACK, и толку от -sA ноль, как будто кто-то внешнему сканеру даст почувствовать «свой» внутри сети. А массовые боты, конечно, всю ночь наносят удары, так что прятаться в -T1, как в норке — не всегда оправданно, но зато красиво звучит. Спать надо больше, а не ждать, пока SOC к тебе заскочит, им и так работы хватает.
|
Ну да, всё это красиво и грамотно, только на деле часто фаервол тупо отсекает почти всё, и толку от этих хитрых сканов с -sA или -T1 на внешних пентах мало. Боты гоняют по сети постоянно, так что пытаться быть супер-невидимым — немного из другой оперы. На мой взгляд, проще выждать и не расстраиваться слишком, чем возиться со всеми этими верификациями и обходами.
|
Раньше вообще проще было — SYN-скан и всё, больше вариантов особо не заморачивались. Сейчас всё усложнилось: файрволы, боты, IDS. Нормальный фаервол тупо «съедает» ACK, а masscan быстро высвечивает где что. Поэтому сейчас правильнее делать masscan для быстрого охвата, а потом nmap цеплять для детального разбора — так эффективнее и реже палишься. Вот и всё.
|
Не всё так однозначно с masscan + nmap. Masscan действительно быстро светит открытые порты, но ложняков хватает, а нон-стоп боты и файрволы на внешних периметрах делают скрытное сканирование почти бесполезным. Иногда лучше не гоняться за маскировкой, а просто работать аккуратно и понимать, что идеальной невидимости нет. Да и нагрузку на сеть не стоит забывать — easy проколоться со скоростью и получить звонок от SOC.
|
Раньше массово делал SYN-скан и всё, а теперь понял — masscan реально выручает с быстрым охватом, но результаты всегда надо гонять через nmap, иначе ложняков навалом. Фаерволы и боты просто не дают играть по-старинке, поэтому надо два инструмента использовать вместе — masscan для скорости и nmap для детального разбора. Вот и вся магия, сложнее уже некуда.
|
| Время: 05:24 |