Разведка — первый этап любого пентеста. Цель: собрать максимум данных о цели до начала активных действий.
nmap
Что делает
Сканирует сети и хосты: определяет открытые порты, запущенные сервисы, версии ПО и операционную систему. Работает через отправку специально сформированных пакетов и анализ ответов. Стандарт де-факто для сетевой разведки.
Установка
# Предустановлен в Kali Linux. Если нет: sudo apt update && sudo apt install nmap -y
Синтаксис
nmap [тип сканирования] [опции] [цель]
Ключевые флаги и опции
Флаг |
Описание |
Пример |
|---|---|---|
|
SYN-сканирование (стелс, по умолчанию с root) |
|
|
TCP connect (без root) |
|
|
UDP-сканирование |
|
|
Определение версий сервисов |
|
|
Определение ОС |
|
|
Агрессивное: ОС + версии + скрипты + traceroute |
|
|
Указать порты |
|
|
Скорость (0=паранойя, 3=по умолч., 5=безумие) |
|
|
Показывать только открытые порты |
|
|
Вывод в файл (обычный формат) |
|
|
Вывод в XML |
|
|
Вывод в greppable-формат |
|
|
Вывод во все три формата |
|
|
Подробный вывод |
|
|
Не резолвить DNS |
|
|
Запустить NSE-скрипт |
|
|
Читать цели из файла |
|
|
Не пинговать хосты перед сканированием |
|
|
Ping sweep (только обнаружение хостов) |
|
|
Минимальная скорость пакетов/сек |
|
Практические примеры
Пример 1: Обнаружение живых хостов в сети
sudo nmap -sn 192.168.1.0/24
Вывод:
Starting Nmap 7.94 ( https://nmap.org ) Nmap scan report for 192.168.1.1 Host is up (0.00054s latency). MAC Address: C8:3A:35:27:4C:01 (Tenda Technology) Nmap scan report for 192.168.1.105 Host is up (0.0012s latency). MAC Address: DC:A6:32:5E:2B:17 (Raspberry Pi Trading) Nmap scan report for 192.168.1.200 Host is up (0.00087s latency). MAC Address: 00:50:56:C0:00:08 (VMware) Nmap done: 256 IP addresses (3 hosts up) scanned in 2.34 seconds
Что произошло: nmap отправил ARP-запросы (в локальной сети) и ICMP-эхо, получил ответы от трёх хостов.
Пример 2: Полное сканирование с определением версий и ОС
sudo nmap -sS -sV -O -p- --min-rate 5000 -T4 -oA full_scan 192.168.1.105
Вывод:
Starting Nmap 7.94 Nmap scan report for 192.168.1.105 Host is up (0.0011s latency). Not shown: 65528 closed tcp ports (reset) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0) 80/tcp open http Apache httpd 2.4.54 ((Debian)) 111/tcp open rpcbind 2-4 (RPC #100000) 443/tcp open ssl/http Apache httpd 2.4.54 3306/tcp open mysql MySQL 5.7.39 8080/tcp open http-proxy Squid http proxy 4.13 MAC Address: DC:A6:32:5E:2B:17 (Raspberry Pi) Device type: general purpose Running: Linux 4.X|5.X OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5 OS details: Linux 4.15 - 5.6 Network Distance: 1 hop Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel Nmap done: 1 IP address (1 host up) scanned in 24.87 seconds
Что произошло: просканированы все 65535 портов, определены сервисы с версиями и ОС.
Пример 3: Поиск уязвимостей через NSE-скрипты
sudo nmap -sV --script vuln -p 80,443,8080 testphp.vulnweb.com
Вывод:
Starting Nmap 7.94 Nmap scan report for testphp.vulnweb.com (44.228.249.3) Host is up (0.18s latency). PORT STATE SERVICE VERSION 80/tcp open http Apache httpd 2.4.7 ((Ubuntu)) | http-sql-injection: | Possible sqli for queries: | http://testphp.vulnweb.com/artists.php?artist=1%27%20OR%20sqlspider |_ http://testphp.vulnweb.com/listproducts.php?cat=1%27%20OR%20sqlspider | http-csrf: | Spidering limited to: maxdepth=3; maxpagecount=20; withinhost=testphp.vulnweb.com | Found the following possible CSRF vulnerabilities: | Path: http://testphp.vulnweb.com/userinfo.php | Form id: |_ Form action: userinfo.php | http-stored-xss: |_ Couldn't find any stored XSS vulnerabilities. |_http-dombased-xss: Couldn't find any DOM based XSS.
Что произошло: NSE-скрипт vuln запустил набор проверок на веб-уязвимости, обнаружил потенциальные точки SQL-инъек ции.
Пример 4: Сканирование конкретных сервисов + экспорт
sudo nmap -p 445 --script smb-vuln-ms17-010 192.168.1.0/24 -oN eternalblue_scan.txt
Вывод:
Nmap scan report for 192.168.1.200 Host is up (0.00098s latency). PORT STATE SERVICE 445/tcp open microsoft-ds Host script results: | smb-vuln-ms17-010: | VULNERABLE: | Remote Code Execution vulnerability in Microsoft SMBv1 servers (MS17-010) | State: VULNERABLE | IDs: CVE:CVE-2017-0143 | Risk factor: HIGH | A critical remote code execution vulnerability exists in Microsoft SMBv1 | servers (named pipe functionality). | References: |_ https://technet.microsoft.com/en-us/library/security/ms17-010.aspx
Что произошло: скрипт smb-vuln-ms17-010 проверил каждый хост сети на уязвимость EternalBlue (использовалась WannaCry).
Частые ошибки
Note: Host seems down→ используй-Pn(хост блокирует ICMP, но может быть доступен)You requested a scan type which requires root privileges→ запускай сsudoСканирование зависло на UDP → UDP медленный по природе, добавь
--min-rate 1000и ограничь порты-p 53,67,68,69,123,161WARNING: RST from...в большом количестве → файрвол/IDS сбрасывает пакеты, снизь скорость-T2DNS резолвинг замедляет сканирование сети → добавь
-n
Заметки OPSEC
Уровень шума: ВЫСОКИЙ (при
-A,-T4,--script vuln)
SYN-сканирование (
-sS) оставляет записи в файрволе и IDS (Snort, Suricata)
-Aгенерирует десятки тысяч пакетов — легко детектируетсяЛоги на цели:
/var/log/auth.log(SSH), логи Apache/nginx при сканировании вебДля снижения заметности:
-T1 -T2,--scan-delay 2000ms, использовать--source-port 53для обхода простых правил
Связка с другими инструментами
nmap(обнаружение хостов и портов) →nessus/openvas(глубокая проверка уязвимостей) →metasploit(эксплуатация найденных CVE)
nmap -sV(определение сервисов) →searchsploit(поиск эксплойтов по версии) →exploitdb(получение PoC)
Все примеры проверены на Kali Linux 2024.x. Используемые цели:
scanme.nmap.org,192.168.1.0/24,testphp.vulnweb.com,hack.me.
Granulex
`-T0` делает сканирование медленным, а не невидимым. SYN без ответа – всё равно аномалия в любом SIEM.