Перейти к основному содержимому

🛡️ Cheatsheet по Nmap для пентеста

Основано на анализе официальной документации, лучших практик (SANS, Nmap Network Scanning) и публикаций в области ИБ (Pentest Magazine, SecurityTrails, HackerOne reports).


📌 Оглавление​

  1. Указание целей (Target Specification)
  2. Техники сканирования (Scan Techniques)
  3. Обнаружение хостов (Host Discovery)
  4. Указание портов (Port Specification)
  5. Обнаружение сервисов и версий (Service and Version Detection)
  6. Определение ОС (OS Detection)
  7. Тайминг и производительность (Timing and Performance)
  8. Сценарии NSE (Nmap Scripting Engine)
  9. Обход фаерволлов и IDS/IPS (Firewall/IDS Evasion & Spoofing)
  10. Вывод результатов (Output)
  11. Практические сценарии использования
  12. Правовые аспекты и лучшие практики

1. Указание целей (Target Specification)​

Команда/СвитчПример использованияОписание и применениеПрактический совет
Одиночная цельnmap 192.168.1.1Базовое сканирование. По умолчанию: 1000 TCP-портов, SYN-сканирование (c root) или TCP-connect (без root).Всегда используйте sudo для SYN-сканирования (-sS). Оно быстрее и создает меньше логов на цели.
Диапазон IPnmap 192.168.1.1-254Сканирование всех хостов в диапазоне.Комбинируйте с -sn для быстрой инвентаризации сети без сканирования портов.
CIDR-нотацияnmap 10.0.0.0/24Сканирование всей подсети. Удобно для указания сетей.Основа для картирования сети. Используйте -oX network_map.xml для сохранения результатов.
Из файла (-iL)nmap -iL targets.txtСканирование списка целей из файла (по одной на строку). Может содержать IP, диапазоны, домены.Идеально для работы с большими списками из инструментов разведки (Amass, Subfinder).
Случайные цели (-iR)nmap -iR 10 -snСканирование N случайных IP-адресов. Используйте с крайней осторожностью.Практически всегда комбинируйте с -sn. Может быть незаконным без явного разрешения.
Исключение хостов (--exclude)nmap 192.168.1.0/24 --exclude 192.168.1.50Исключает указанные хосты из сканирования.Полезно для избежания сканирования критичных систем (сетевые принтеры, VoIP-АТС). Используйте --excludefile для списка.

2. Техники сканирования (Scan Techniques)​

Команда/СвитчПример использованияОписание и применениеПрактический совет
TCP SYN Scan (-sS)sudo nmap -sS 192.168.1.1Стандартный метод. Отправляет SYN-пакет. SYN/ACK = открыт, RST = закрыт. Не завершает handshake (менее заметно).Требует прав root. Основной выбор для большинства аудитов. Соответствует фазе Discovery (T1046) в MITRE ATT&CK.
TCP Connect Scan (-sT)nmap -sT 192.168.1.1Использует системный вызов connect(), завершая TCP handshake. Используется без прав root.Более заметен для IDS, так как создает полные соединения. Часто логируется сервисами (sshd, httpd).
UDP Scan (-sU)sudo nmap -sU -p 53,161,123 192.168.1.1Сканирует UDP-порты. Отсутствие ответа (ICMP port unreachable) = open|filtered.Очень медленный. Используйте --max-retries 1 и --min-rate 100 для ускорения. Критичен для DNS, SNMP, DHCP.
TCP ACK Scan (-sA)sudo nmap -sA 192.168.1.1Отправляет ACK-пакет для определения, фильтруется ли порт stateful-брандмауэром. Не определяет open/closed.Если порт unfiltered — трафик ACK проходит. Если filtered — порт защищен. Тестирование правил МЭ.
TCP Window Scan (-sW)sudo nmap -sW 192.168.1.1Анализирует поле TCP Window Size в ответе RST для определения состояния порта на некоторых системах.Работает редко (в основном на устаревших ОС: Windows до XP, некоторые BSD).
TCP Maimon Scan (-sM)sudo nmap -sM 192.168.1.1Отправляет пакеты FIN/ACK. Согласно старому RFC, закрытый порт должен ответить RST.Устаревший метод. Большинство современных систем не следуют данному поведению.

3. Обнаружение хостов (Host Discovery)​

Команда/СвитчПример использованияОписание и применениеПрактический совет
Только список (-sL)nmap -sL 192.168.1.0/24Не сканирует, а только выводит список всех хостов, которые могли бы быть просканированы."Сухая" проверка целей перед активным сканированием.
Только Ping (-sn)nmap -sn 192.168.1.0/24Обнаружение живых хостов без сканирования портов (ICMP, TCP SYN/ACK, ARP).Лучший способ для быстрой инвентаризации сети. ARP-сканирование в локальных сетях (-PR) выполняется автоматически и надежно.
Пропуск обнаружения (-Pn)nmap -Pn 192.168.1.1Считает все хосты активными, сразу переходит к сканированию портов. Обходит фильтрацию ICMP.Обязательно используйте при сканировании хостов, блокирующих ping (например, Windows серверы). Ускоряет сканирование защищенных сетей.
TCP SYN Ping (-PS)nmap -PS22,80,443 -sn 10.0.0.1Обнаружение хоста через отправку TCP SYN-пакетов. Ответ SYN/ACK или RST = хост жив.Эффективен для обхода блокировки ICMP. Укажите порты, вероятно открытые в целевой среде (80, 443, 22, 3389).
ARP Ping (-PR)nmap -PR -sn 192.168.1.0/24Использует ARP-запросы для обнаружения в локальной сети L2. Самый быстрый и надежный метод.Включается автоматически при сканировании локальной сети с правами root. Бесполезен за пределами широковещательного домена.
Без DNS (-n)nmap -n 192.168.1.1Отключает обратное разрешение имен (PTR-запросы). Ускоряет сканирование.Всегда используйте при внутренних сканированиях. Ускоряет работу и предотвращает "шум" в DNS-логах. Для внешней разведки может быть полезно -R.

4. Указание портов (Port Specification)​

Команда/СвитчПример использованияОписание и применениеПрактический совет
Конкретные порты (-p)nmap -p 22,80,443 192.168.1.1Сканирует указанный список портов.Для веб-серверов: -p 80,443,8000-9000,8080,8443. Всегда проверяйте нестандартные порты.
Диапазон портов (-p)nmap -p 1-1024 192.168.1.1Сканирует все порты в диапазоне.-p 1-1024 (системные), -p 1025-49151 (зарегистрированные), -p 49152-65535 (динамические).
Смешанные TCP/UDPnmap -p U:53,T:80,443 192.168.1.1Сканирует смешанные TCP и UDP порты. T: для TCP, U: для UDP.Критично для полного аудита. Пример: DNS (UDP/53) и HTTP (TCP/80) на одном хосте.
Все порты (-p-)sudo nmap -p- 192.168.1.1Сканирует все 65535 TCP-портов. Полная инвентаризация.Очень медленно. Используйте -T4, --min-rate 1000. Всегда комбинируйте с -sV и -sC для важных целей.
Быстрое (-F)nmap -F 192.168.1.1Сканирует 100 наиболее распространенных портов (из nmap-services).Идеально для начального, быстрого разведывательного сканирования большой сети.
Топ-N портов (--top-ports)nmap --top-ports 200 192.168.1.0/24Сканирует N самых популярных портов на каждом хосте.Баланс между скоростью (-F) и полнотой (-p-). --top-ports 1000 — хороший компромисс.

5. Обнаружение сервисов и версий (Service and Version Detection)​

Команда/СвитчПример использованияОписание и применениеПрактический совет
Определение версий (-sV)nmap -sV 192.168.1.1Определяет сервис и его версию на каждом открытом порту. Сравнивает ответы с nmap-service-probes.Основа анализа уязвимостей. Версия ПО позволяет искать эксплойты и CVE (напр., CVE-2021-41773 для Apache 2.4.49).
Интенсивность (--version-intensity)nmap -sV --version-intensity 9 192.168.1.1Задает агрессивность проверки (0-9).По умолчанию = 7. Используйте 9 для сложных целей, 2 (--version-light) для скорости.
Агрессивный режим (-A)sudo nmap -A 192.168.1.1Включает -sV, -O, --traceroute и -sC. "Полный пакет" сканирования.Очень заметно для систем защиты. Используйте осознанно. Дает максимум данных для отчета.

6. Определение ОС (OS Detection)​

Команда/СвитчПример использованияОписание и применениеПрактический совет
Определение ОС (-O)sudo nmap -O 192.168.1.1Определяет ОС хоста на основе анализа стека TCP/IP. Требует открытый и закрытый порт.Не всегда точно. Смотрите на Aggressive OS guesses. Требует прав root.
Ограничение (--osscan-limit)sudo nmap -O --osscan-limit 192.168.1.0/24Определяет ОС только для хостов с подходящими портами (открытый+закрытый).Экономит время при сканировании больших сетей.
Агрессивное угадывание (--osscan-guess)sudo nmap -O --osscan-guess 192.168.1.1Заставляет Nmap "догадываться" более агрессивно.Используйте, когда -O не дало точного результата. Результаты — вероятностные.

7. Тайминг и производительность (Timing and Performance)​

Команда/СвитчПример использованияОписание и применениеПрактический совет
Шаблоны (-T<0-5>)nmap -T4 192.168.1.0/24Шаблоны скорости. -T3 (Normal) — по умолчанию. -T4 (Aggressive) — рекомендуется для быстрых сетей. -T0/1 (Paranoid/Sneaky) — для скрытности.Для внутренних сетей почти всегда -T4. Для обхода IDS пробуйте -T2. -T0/1 — задержка 5 мин/15 сек.
Макс. повторные попытки (--max-retries)nmap --max-retries 2 192.168.1.1Задает число повторных отправок probe.Снижение с 10 (по умолчанию) до 2-3 сильно ускоряет сканирование filtered портов.
Таймаут хоста (--host-timeout)nmap --host-timeout 15m 192.168.1.0/24Прекращает сканирование хоста, если не завершилось за указанное время.Предотвращает "зависание" на медленном или фильтрующем хосте. Формат: 30s, 10m, 2h.
Минимальная скорость (--min-rate)sudo nmap --min-rate 500 192.168.1.0/24Жестко задает минимальную скорость отправки пакетов (пакетов/сек).--min-rate 1000 — агрессивно и быстро. sudo часто обязательно для высоких скоростей.

8. Сценарии NSE (Nmap Scripting Engine)​

Категория/СвитчПример использованияОписание и применениеПрактический совет
Скрипты по умолчанию (-sC)nmap -sC 192.168.1.1Запускает скрипты категории default. Безопасные, информативные скрипты для разведки.Основа любого серьезного сканирования. Всегда используйте вместе с -sV.
Выбор скрипта (--script)nmap --script vuln 192.168.1.1Запускает указанный скрипт или все скрипты из категории (vuln, safe, exploit, auth).Осторожно с intrusive-скриптами (vuln, exploit, dos). Могут нарушить работу сервиса.
Аргументы скриптов (--script-args)nmap --script http-headers --script-args http.useragent="Mozilla" 192.168.1.1Передает аргументы скриптам для настройки.Мощный механизм. Например, для brute-скриптов: userdb=users.txt,passdb=passwords.txt.
Полезные скрипты (примеры)
Перебор директорийnmap -p80 --script http-enum 192.168.1.1Перебор общих веб-директорий (/admin, /backup).Часто находит скрытые панели управления и бэкапы.
Аудит SSL/TLSnmap -p443 --script ssl-enum-ciphers 192.168.1.1Оценка стека шифров, проверка на слабые протоколы (SSLv3).Критично для compliance (PCI DSS). Показывает уязвимости к MITM.
Проверка уязвимостиnmap -p445 --script smb-vuln-ms17-010 192.168.1.1Проверка на конкретную уязвимость (EternalBlue, MS17-010).Точечная проверка критических CVE. Используйте --script vuln для общего сканирования.
Брутфорс поддоменовnmap --script dns-brute domain.comБрутфорс поддоменов через перебор слов из словаря.Только для легального тестирования своих активов! Расширяет поверхность атаки.

9. Обход фаерволлов и IDS/IPS (Firewall/IDS Evasion & Spoofing)​

Команда/СвитчПример использованияОписание и применениеПрактический совет
Фрагментация (-f)sudo nmap -f 192.168.1.1Разбивает TCP-заголовки на мелкие фрагменты, чтобы обойти простые DPI.Часто комбинируется с --mtu <число> (должно быть кратно 8).
Обманные IP (-D)sudo nmap -D RND:10,ME 192.168.1.1Маскирует ваше сканирование среди обманных IP-адресов.В логах цели будут десятки IP-сканеров. Не перестарайтесь с количеством.
Спуфинг источника (-S)sudo nmap -S 8.8.8.8 -e eth0 -Pn 10.0.0.1Отправляет пакеты с поддельным исходным IP. -e — интерфейс, -Pn — отключает пинг.Цель отвечает на пакеты поддельного IP. Ваш хост ответы не увидит. Только для проверки реакции сети.
Исходный порт (-g)nmap -g 53 192.168.1.1Отправляет пакеты с указанного исходного порта (например, 53-DNS).Эксплуатирует доверие устаревших фаерволлов к ответному трафику с доверенных портов.
Случайные данные (--data-length)nmap --data-length 500 192.168.1.1Добавляет к пакетам случайные данные, изменяя размер для обхода сигнатур IDS.Может помочь против примитивных сигнатур, ищущих стандартные размеры пакетов Nmap.
Неверная контрольная сумма (--badsum)sudo nmap --badsum 192.168.1.1Отправляет пакеты с неверной TCP/UDP контрольной суммой.Если получен ответ — перед вами IDS/IPS, а не фаервол. Метод обнаружения, а не обхода.

10. Вывод результатов (Output)​

Команда/СвитчПример использованияОписание и применениеПрактический совет
Нормальный (-oN)nmap -oN scan.txt 192.168.1.1Сохраняет вывод в обычном, читаемом человеком формате.Основной формат для быстрого просмотра "глазами".
XML (-oX)nmap -oX scan.xml 192.168.1.1Сохраняет вывод в структурированном XML-формате.Важнейший формат для отчетности и автоматизации. Может быть обработан другими программами, преобразован в HTML.
Все форматы (-oA)nmap -oA full_scan 192.168.1.0/24Сохраняет результаты сразу в трех форматах с заданным базовым именем.Рекомендуемая лучшая практика. Имеет данные и для человека, и для машин.
Подробный вывод (-v)nmap -vv -oN scan.txt 192.168.1.1Увеличивает детализацию вывода. Показывает прогресс.Всегда используйте хотя бы -v при сканировании вручную. Помогает понимать, что происходит.
Показывать причину (--reason)nmap --reason 192.168.1.1Показывает причину состояния порта (syn-ack, reset, no-response).Крайне полезно для анализа. Позволяет отличить filtered из-за фаервола от filtered из-за сети.
Только открытые (--open)nmap --open 192.168.1.0/24Показывает только открытые (или возможно открытые) порты.Идеально для быстрого просмотра уязвимой поверхности после сканирования большой сети.
Продолжить сканирование (--resume)nmap --resume partial_scan.xmlПродолжает прерванное сканирование из сохраненного XML-файла.Спасает при обрыве длительных сканирований. Работает только с XML.

11. Практические сценарии использования​

СценарийПример командыПояснение и цель
Быстрая инвентаризация сетиsudo nmap -sn -T4 192.168.1.0/24 -oA network_inventoryНайти все живые хосты в сети быстро и сохранить результаты.
Базовый аудит хостаsudo nmap -sV -sC -O -T4 <TARGET> -oA basic_auditСбор базовой информации: сервисы, версии, ОС, безопасные скрипты.
Полный аудит портов хостаsudo nmap -p- -sV -sC -T4 --max-retries 1 <TARGET> -oA full_port_auditИсчерпывающее сканирование всех TCP-портов с детализацией. Обязательно для критичных целей.
Поиск уязвимостейsudo nmap -sV --script vuln <TARGET> -oA vuln_scanЗапуск скриптов, проверяющих на известные CVE. Будьте осторожны, может быть деструктивно.
Аудит веб-серверов в сетиnmap -p80,443,8000-9000,8080,8443 -sV --script http-security-headers,http-title <RANGE> -oA web_auditТочечная проверка веб-портов на заголовки безопасности и заголовки страниц.
Стелс-сканированиеsudo nmap -sS -T2 -Pn --scan-delay 1s --data-length 50 -f <TARGET>Медленное, фрагментированное сканирование с задержками для минимизации шансов обнаружения IDS.
Сканирование через SOCKS проксиnmap -sT -Pn --proxies socks4://<PROXY_IP>:1080 <TARGET>Проведение сканирования через прокси-сервер. Используется только TCP Connect scan (-sT).

12. Правовые аспекты и лучшие практики​

✅ Всегда получайте письменное разрешение перед сканированием любой инфраструктуры, которой вы не владеете или не управляете. Сканирование без разрешения является нарушением законов многих стран (например, ст. 272 УК РФ "Неправомерный доступ к компьютерной информации").

✅ Используйте Nmap в рамках санкционированного тестирования на проникновение (Penetration Test) или внутреннего аудита безопасности. Документируйте цели, время проведения и ответственных лиц.

✅ Соблюдайте принцип минимального воздействия. Начинайте с неинтрузивных методов (-sn, -sS, -sV), переходите к агрессивным (-A, --script vuln) только при явной необходимости и с учетом рисков для стабильности систем.

✅ Ограничивайте скорость и параллелизм (-T2, --max-rate) при сканировании производственных сетей, чтобы не вызвать перегрузку сетевого оборудования или целевых сервисов.

✅ Тщательно документируйте результаты. Используйте XML-вывод (-oX) для последующего анализа и включения в отчеты. Инструменты вроде ndiff помогают отслеживать изменения между сканированиями.


Примечание: Данная шпаргалка составлена на основе официальной документации Nmap (man nmap), книги "Nmap Network Scanning" (Gordon Lyon), а также лучших практик, опубликованных SANS Institute, Pentest Magazine, и опыта сообщества. Цель — образовательная и справочная. Ответственность за применение инструмента лежит на пользователе.