Пентест - это не запуск Metasploit наугад, а воспроизводимая инженерная процедура: ты моделируешь действия атакующего в рамках письменного разрешения, чтобы найти дыры раньше реального противника. На LPIC-3 303 от тебя ждут понимания методологии (фазы работ), уверенного владения nmap как основным разведчиком сети, общего представления о Metasploit как фреймворке эксплуатации, а также понимания юридической рамки: что ты имеешь право делать, а что превратит тебя из аудитора в нарушителя. В этом уроке разберём фазы, инструменты и правила игры.

Как это работает
Любая методология (PTES, OWASP, методичка OSSTMM) раскладывается на одни и те же фазы. Сначала разведка (reconnaissance) - сбор информации без агрессивного контакта: домены, поддомены, диапазоны IP, утёкшие данные, технологии. Она бывает пассивной (whois, DNS, поисковики, сертификаты в Certificate Transparency) и активной (пинги, баннеры). Затем сканирование (scanning) - ты уже стучишься в порты и определяешь живые сервисы и их версии. Дальше эксплуатация (exploitation) - получение доступа через известную уязвимость, слабый пароль или ошибку конфигурации. После закрепления идёт пост-эксплуатация (post-exploitation): повышение привилегий, сбор учёток, боковое перемещение, оценка реального ущерба. Финал - отчёт, ради которого всё и затевалось.
Ключевая идея сканирования портов: TCP-рукопожатие. На SYN сервер отвечает SYN-ACK (порт открыт) или RST (закрыт). Открытый порт без ответа за фаерволом даёт filtered. На этом строятся типы сканов nmap. SYN-скан (-sS) шлёт SYN и, получив SYN-ACK, обрывает соединение через RST, не завершая рукопожатие - быстро и относительно тихо, но требует root для сырых пакетов. Connect-скан (-sT) делает полный системный вызов connect(), его видно в логах сервиса, но root не нужен. UDP-скан (-sU) медленный и капризный: отсутствие ответа трактуется как open|filtered.
NSE (Nmap Scripting Engine) превращает nmap из сканера в мини-комбайн: на Lua написаны сотни скриптов по категориям (discovery, version, vuln, auth, brute, safe, intrusive). Категория safe не меняет состояние цели, intrusive может уронить сервис - помни об этом на проде заказчика.
Metasploit - это фреймворк, а не одна программа. Его сущности: module (exploit, auxiliary, post, payload, encoder), payload (то, что выполнится после эксплуатации, чаще всего meterpreter - резидентный агент в памяти), datastore (переменные RHOSTS, LHOST, RPORT). Workflow прямолинеен: выбрал эксплойт, задал цель и payload, проверил check, запустил run.
Команды и примеры
Установка инструментов различается по семействам:
Код: Выделить всё
# Debian 13 / Ubuntu 24.04
sudo apt update
sudo apt install nmap
# RHEL 10 / Fedora 41+
sudo dnf install nmap
Код: Выделить всё
# Пассивно: кто владеет и какие записи DNS
whois example.org
dig +short example.org ANY
# SYN-скан топ-1000 портов с определением версий и ОС (нужен root)
sudo nmap -sS -sV -O 192.0.2.10
# Connect-скан без root, только указанные порты
nmap -sT -p 22,80,443 192.0.2.10
# UDP-скан ключевых сервисов (медленно)
sudo nmap -sU -p 53,123,161 192.0.2.10
# Тише и аккуратнее: тайминг T2, без пинга (-Pn) если ICMP режут
sudo nmap -sS -Pn -T2 192.0.2.0/24
Код: Выделить всё
# Все скрипты категории vuln по конкретному порту
sudo nmap -p 443 --script vuln 192.0.2.10
# Несколько безопасных скриптов discovery + аргумент
nmap --script "http-title,http-headers" -p 80 192.0.2.10
# Где лежат скрипты (для чтения исходника на Lua)
ls /usr/share/nmap/scripts/ | grep ssl
Код: Выделить всё
# Инициализация БД (PostgreSQL) и запуск консоли
sudo msfdb init
msfconsole -q
# Внутри консоли:
search type:exploit name:vsftpd
use exploit/unix/ftp/vsftpd_234_backdoor
set RHOSTS 192.0.2.10
set RPORT 21
set payload cmd/unix/interact
check
run
- Скан без письменного разрешения - это уже инцидент. Даже nmap по чужому диапазону трактуется как несанкционированный доступ; область работ (scope) и сроки фиксируются ДО первой команды.
- -O и -sV генерируют заметный трафик и могут положить хрупкий сервис или SCADA/IoT. На критичных стендах согласовывай агрессивность.
- UDP-скан без -sV дает кучу open|filtered и вводит в заблуждение: отсутствие RST не значит, что порт открыт.
- --script vuln относится к категории intrusive: часть скриптов реально эксплуатирует, а не только проверяет. Читай категорию перед запуском на проде.
- Тайминг -T5 на нагруженной сети теряет пакеты и дает ложные closed. Для точности лучше -T3/-T4.
- Сканирование с одного IP без -Pn проваливается там, где ICMP-эхо запрещён: nmap считает хост мёртвым и пропускает его.
- meterpreter и payload оставляют артефакты. Без плана очистки (cleanup) ты загрязняешь стенд заказчика и портишь его SOC-метрики.
- Подними изолированную сеть из двух ВМ (атакующая и уязвимая, например Metasploitable или специально настроенный Debian) - только в своей лаборатории, не в интернет.
- С атакующей машины собери пассивную разведку цели: dig, whois по внутреннему имени.
- Сделай SYN-скан с -sV -O, сохрани вывод в файл через -oN scan.txt и найди как минимум один устаревший сервис.
- Запусти на найденном порту NSE-скрипты категории vuln и зафиксируй CVE из вывода.
- В msfconsole найди соответствующий эксплойт через search, задай RHOSTS/payload, выполни check.
- Если check подтверждает - запусти эксплойт, в meterpreter выполни getuid и sysinfo, опиши потенциальный ущерб.
- Удали артефакты и набросай абзац отчёта: уязвимость, как проверял, риск, рекомендация по устранению.
- Чем SYN-скан (-sS) отличается от connect-скана (-sT) на уровне TCP-рукопожатия и почему первый требует прав root?
- Что означает состояние порта filtered и open|filtered, и в каких типах сканов оно появляется?
- Назовите фазы методологии пентеста и объясните, чем разведка отличается от сканирования.
- В чём разница между категориями NSE safe и intrusive и почему это важно на проде заказчика?
- Какие сущности Metasploit вы знаете (module, payload, datastore) и зачем нужны переменные RHOSTS и LHOST?
- Что такое ответственное раскрытие уязвимости и чем оно отличается от полного публичного раскрытия?