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

🛡️ 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, и опыта сообщества. Цель — образовательная и справочная. Ответственность за применение инструмента лежит на пользователе.