Nmap — это первое, что запускают после OSINT, и последнее, о чём думает администратор при настройке файрвола. Знай его лучше, чем он знает себя.
Nmap (Network Mapper) — бесплатный сканер сети с открытым исходным кодом, де-факто стандарт в пентесте уже более 25 лет. Умеет находить живые хосты, определять открытые порты, версии сервисов, операционную систему и автоматически проверять уязвимости через встроенные скрипты. Установлен в Kali и Parrot из коробки.
🎯 Синтаксис и цели — с кем работаешь
|
1 2 3 4 5 6 7 8 9 10 |
nmap [флаги] [цель] # Цель — это гибко: nmap 192.168.1.1 # один IP nmap 192.168.1.1-254 # диапазон nmap 192.168.1.0/24 # вся подсеть /24 nmap target.com # доменное имя nmap 192.168.1.1 192.168.1.5 # несколько хостов nmap -iL targets.txt # список целей из файла nmap 192.168.1.0/24 --exclude 192.168.1.1 # исключить хост |
💡 Всегда используй sudo — без него часть техник сканирования недоступна. SYN-сканирование (-sS) требует прав root.
🔬 Техники сканирования — выбирай оружие
Это самое важное. Разные техники дают разные результаты и оставляют разный след:
| Флаг | Название | Когда использовать |
|---|---|---|
-sS |
TCP SYN (Stealth) | По умолчанию с root. Быстро, относительно тихо |
-sT |
TCP Connect | Без root. Полное соединение, шумнее |
-sU |
UDP scan | Медленно, но UDP-сервисы часто пропускают |
-sA |
TCP ACK | Маппинг правил файрвола, не определяет открытые порты |
-sN |
TCP Null | Обход некоторых файрволов |
-sF |
FIN scan | Обход некоторых IDS/IPS |
-sX |
Xmas scan | FIN+PSH+URG флаги, обход фильтров |
-sV |
Version detection | Определение версий сервисов |
-sO |
IP Protocol scan | Какие протоколы поддерживает хост |
|
1 2 3 4 |
# Самый частый выбор пентестера: sudo nmap -sS target.com # тихий SYN-скан sudo nmap -sT target.com # если нет root sudo nmap -sU --top-ports 100 target.com # UDP топ-100 |
🚪 Спецификация портов — что проверяем
По умолчанию Nmap сканирует 1000 наиболее популярных портов. Это быстро, но не полно:
|
1 2 3 4 5 6 |
nmap -p 80 target.com # конкретный порт nmap -p 80,443,8080 target.com # список портов nmap -p 1-1000 target.com # диапазон nmap -p- target.com # все 65535 портов (медленно, но полно) nmap --top-ports 100 target.com # топ-100 популярных портов nmap -F target.com # быстрый скан (100 портов) |
|
1 2 |
# Полный скан всех портов с оптимальной скоростью: sudo nmap -p- --min-rate 5000 -T4 target.com |
🔥
-p-— твой лучший друг на CTF и реальных пентестах. Нестандартные порты (8888, 9090, 4444, 31337) скрывают сервисы именно потому, что большинство сканируют только топ-1000.
🔭 Обнаружение хостов — кто живой в сети
Прежде чем сканировать порты — найди живые хосты:
|
1 2 3 4 5 6 |
nmap -sn 192.168.1.0/24 # ping sweep, без сканирования портов nmap -Pn target.com # не пинговать, сразу сканировать порты nmap -PS22,80,443 target.com # TCP SYN ping на конкретные порты nmap -PA80 target.com # TCP ACK ping nmap -PE target.com # ICMP Echo ping nmap -PU target.com # UDP ping |
|
1 2 |
# Найти все живые хосты в локальной сети за 10 секунд: sudo nmap -sn 192.168.1.0/24 | grep "Nmap scan report" |
🔍 Определение ОС и версий сервисов
Fingerprinting — сбор данных об инфраструктуре цели:
|
1 2 3 4 |
nmap -sV target.com # версии запущенных сервисов nmap -sV --version-intensity 9 target.com # максимальная точность nmap -O target.com # определение ОС (нужен root) nmap -A target.com # всё сразу: ОС + версии + скрипты + traceroute |
Что видишь в выводе -sV:
|
1 2 3 4 |
PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.4 (protocol 2.0) 80/tcp open http Apache httpd 2.4.6 3306/tcp open mysql MySQL 5.7.32 |
Теперь гуглишь OpenSSH 7.4 CVE и Apache 2.4.6 CVE — и получаешь список известных уязвимостей конкретных версий. Это версионный fingerprinting.
⏱️ Тайминги и производительность — быстро vs тихо
Nmap имеет 6 шаблонов скорости T0–T5:
| Шаблон | Название | Применение |
|---|---|---|
-T0 |
Paranoid | IDS-обход, 1 порт каждые 5 минут |
-T1 |
Sneaky | Очень тихо, медленно |
-T2 |
Polite | Медленнее нормы, меньше нагрузки |
-T3 |
Normal | По умолчанию |
-T4 |
Aggressive | Быстро, для быстрых сетей — рекомендуется |
-T5 |
Insane | Максимальная скорость, теряет точность |
|
1 2 3 4 5 6 7 8 |
# Рекомендуемый баланс для пентеста: sudo nmap -sV -sC -T4 target.com # Максимальная скорость полного скана: sudo nmap -p- --min-rate 5000 -T4 --open target.com # Тихий скан под IDS: sudo nmap -sS -T1 -p 80,443,22 target.com |
📜 NSE Scripts — суперсила Nmap
NSE (Nmap Scripting Engine) — встроенная система скриптов на Lua с 600+ готовыми скриптами. Это превращает сканер портов в полноценный инструмент аудита безопасности:
|
1 2 3 4 5 6 7 8 9 |
nmap -sC target.com # запустить дефолтные скрипты nmap --script=vuln target.com # проверить на уязвимости nmap --script=default,safe target.com # безопасные скрипты # По категориям: nmap --script=auth target.com # проверка аутентификации nmap --script=brute target.com # брутфорс сервисов nmap --script=discovery target.com # обнаружение сервисов nmap --script=exploit target.com # попытка эксплуатации |
Топ NSE-скриптов, которые реально используют:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# HTTP — веб-разведка: nmap -p80,443 --script=http-title target.com nmap -p80 --script=http-enum target.com nmap -p80 --script=http-sql-injection target.com nmap -p80 --script=http-shellshock target.com # SMB — Windows-сети: nmap -p445 --script=smb-vuln-ms17-010 target.com # EternalBlue! nmap -p445 --script=smb-enum-shares target.com nmap -p445 --script=smb-enum-users target.com # SSH: nmap -p22 --script=ssh-brute target.com nmap -p22 --script=ssh-auth-methods target.com # Базы данных: nmap -p3306 --script=mysql-empty-password target.com nmap -p5432 --script=pgsql-brute target.com # DNS: nmap -p53 --script=dns-zone-transfer target.com # Полная уязвимостная проверка: nmap -sV --script=vuln target.com |
💣
smb-vuln-ms17-010 проверяет наличие уязвимости EternalBlue — той самой, которую использовал WannaCry. Если VULNERABLE — у тебя RCE без аутентификации.
🔥 Обход файрволов и IDS/IPS
Когда прямое сканирование блокируется:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# Фрагментация пакетов — разбиваем на мелкие куски: sudo nmap -f target.com sudo nmap -f -f target.com # двойная фрагментация # Decoy — маскировка среди ложных IP: sudo nmap -D RND:10 target.com # 10 случайных ложных источников sudo nmap -D 192.168.1.5,192.168.1.6,ME target.com # Подмена исходного IP: sudo nmap -S 192.168.1.100 target.com -e eth0 # Подмена MAC-адреса: sudo nmap --spoof-mac 0 target.com # случайный MAC sudo nmap --spoof-mac Apple target.com # Медленное сканирование с задержкой: sudo nmap --scan-delay 1s target.com sudo nmap --max-rate 10 target.com # не более 10 пакетов/сек # Через прокси: nmap --proxies socks4://proxy:1080 target.com # Изменить порт источника: sudo nmap --source-port 53 target.com # притворяемся DNS |
💾 Форматы вывода — сохраняй результаты правильно
|
1 2 3 4 5 6 7 8 9 10 11 |
nmap -oN scan.txt target.com # обычный текст nmap -oX scan.xml target.com # XML (для Metasploit, отчётов) nmap -oG scan.grep target.com # grep-friendly формат nmap -oA scan target.com # сразу все три формата # Вывод только открытых портов: nmap --open target.com # Подробный вывод в реальном времени: nmap -v target.com nmap -vv target.com # ещё подробнее |
|
1 2 3 4 |
# Импорт XML в Metasploit: msf> db_import scan.xml msf> hosts msf> services |
🏆 Боевые комбо — сохрани и используй
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# 1. Быстрый старт — что открыто на хосте: sudo nmap -sV -sC -T4 --open -oA initial_scan target.com # 2. Полный скан всех портов: sudo nmap -p- --min-rate 5000 -T4 -oA full_ports target.com # 3. Детальный скан найденных портов: sudo nmap -sV -sC -p 22,80,443,8080 -oA detailed target.com # 4. Уязвимостный аудит: sudo nmap -sV --script=vuln -oA vuln_scan target.com # 5. Ping sweep локальной сети: sudo nmap -sn 192.168.1.0/24 -oG alive_hosts.txt # 6. CTF-комбо (от нуля до всего): sudo nmap -A -p- --min-rate 5000 -T4 --open -oA ctf_scan target.com |
📋 Шпаргалка: состояния портов
| Статус | Значение |
|---|---|
open |
Порт открыт, сервис принимает соединения — твоя цель |
closed |
Порт доступен, но сервис не слушает |
filtered |
Пакеты блокирует файрвол — ни open, ни closed определить нельзя |
unfiltered |
Доступен, но Nmap не может определить статус (только -sA) |
open\|filtered |
Открыт или фильтруется — UDP, Null, FIN, Xmas сканы |
🛠️ Домашнее задание
Практикуй на легальных целях — никакого риска
|
1 2 3 4 5 6 7 |
# Официальная тестовая цель Nmap: nmap -A scanme.nmap.org # Локальная лаборатория — Metasploitable2 в VirtualBox: sudo nmap -sV -sC -p- --min-rate 5000 192.168.56.101 # TryHackMe / HackTheBox — VPN + реальные машины |
🎯 Итог: Nmap — это не просто «посмотреть порты». Это полноценный инструмент разведки, который при правильном использовании даёт тебе карту цели, версии сервисов, потенциальные CVE и даже готовые эксплойты через NSE. Двадцать минут Nmap заменяют час ручной разведки.



