Что такое Nmap
Nmap (Network Mapper) — стандарт де-факто для сканирования сетей: определяет живые хосты, открытые порты, версии сервисов, операционные системы и даже уязвимости (через скрипты NSE). Установлен в Kali по умолчанию, есть на любой платформе.
Базовый синтаксис: nmap [типы сканирования] [опции] цель. Цель — IP, диапазон (192.168.1.0/24), список через запятую или файл (-iL targets.txt).
1. Обнаружение хостов (кто живой)
nmap -sn 192.168.1.0/24 # только пинг-свип, без скана портов (быстро)
nmap -sL 192.168.1.0/24 # только перечислить цели (без пакетов)
nmap -Pn 192.168.1.10 # считать хост живым, не пинговать (для хостов за файрволом)
nmap -PE -PP -PM 192.168.1.10 # ICMP echo + timestamp + netmask пинги
nmap -PS22,80,443 192.168.1.10 # TCP SYN пинг на указанные порты
nmap -PA80,443 192.168.1.10 # TCP ACK пинг (обходит некоторые ACL)
nmap -PU53 192.168.1.10 # UDP пинг
nmap -PR 192.168.1.0/24 # ARP-скан для локальной сети (самый точный)
2. Типы сканирования портов (что открыто)
nmap -sS 192.168.1.10 # SYN-скан («полуоткрытый»), по умолчанию от root: быстрый и незаметный
nmap -sT 192.168.1.10 # полное TCP-соединение (работает без root)
nmap -sU 192.168.1.10 # UDP-скан (DNS 53, SNMP 161...); медленный — смотрите --host-timeout
nmap -sU -sS 192.168.1.10 # комбинированный TCP+UDP
nmap -sA 192.168.1.10 # ACK-скан: выявляет правила файрвола (filtered/unfiltered)
nmap -sW 192.168.1.10 # Window-скан (анализ TCP window RST)
nmap -sM 192.168.1.10 # Maimon-скан (FIN/ACK)
nmap -sN -sF -sX 192.168.1.10 # Null/FIN/Xmas — «странные» флаги для обхода старых файрволов
nmap -sO 192.168.1.10 # скан IP-протоколов (TCP, ICMP, GRE...)
nmap -sV 192.168.1.10 # определить версии сервисов на открытых портах
nmap -b ftp.example.com 192.168.1.10 # bounce-скан через FTP-релей
3. Выбор портов и целей
nmap -p 80,443 192.168.1.10 # конкретные порты
nmap -p 1-1000 192.168.1.10 # диапазон
nmap -p- 192.168.1.10 # ВСЕ 65535 портов (медленно, но полно)
nmap -p U:53,T:80,443 192.168.1.10 # UDP и TCP порты раздельно
nmap --top-ports 100 192.168.1.10 # топ-100 самых частых портов
nmap -F 192.168.1.10 # быстрый режим (топ-100 портов)
nmap -r 192.168.1.10 # не рандомизировать порядок портов
nmap --exclude 192.168.1.1 192.168.1.0/24 # скан подсети, кроме роутера
nmap --excludefile skip.txt -iL targets.txt # исключения из файла
4. Определение сервисов и ОС
nmap -sV 192.168.1.10 # версии сервисов (banner + probing)
nmap -sV --version-intensity 5 192.168.1.10 # интенсивность probing 0-9 (по умолчанию 7)
nmap -sV --version-light 192.168.1.10 # intensity 2 (быстрее)
nmap -sV --version-all 192.168.1.10 # intensity 9 (дольше, точнее)
nmap -O 192.168.1.10 # определение ОС по TCP/IP-отпечатку
nmap -O --osscan-limit 192.168.1.10 # не пытаться, если нет открытых портов
nmap -A 192.168.1.10 # агрессивный: -sV + -O + скрипты + traceroute
nmap --osscan-guess 192.168.1.10 # агрессивно угадывать ОС
5. Скорость и тайминги
Шаблоны -T0…-T5: paranoid, sneaky, polite, normal (по умолчанию), aggressive, insane.
nmap -T4 192.168.1.0/24 # быстрый и надёжный — для своих сетей
nmap -T5 192.168.1.0/24 # очень быстро, больше шума и пропусков
nmap --min-rate 1000 192.168.1.0/24 # минимум 1000 пакетов/сек
nmap --max-rate 100 192.168.1.0/24 # ограничить скорость сверху
nmap --host-timeout 30s 192.168.1.10 # бросить хост после 30 секунд
nmap --min-parallelism 10 192.168.1.0/24 # параллельные пробы на хост
6. Скрипты NSE — самая мощная часть
NSE — движок скриптов (Lua). Категории: auth, broadcast, brute, default, discovery, dos, exploit, external, fuzzer, intrusive, malware, safe, version, vuln.
nmap -sC 192.168.1.10 # скрипты категории default (уже включены в -A)
nmap --script vuln 192.168.1.10 # все скрипты уязвимостей
nmap --script=http-vuln-cve2014-3704 192.168.1.10 # конкретный скрипт (Drupal SQLi)
nmap --script "http-*" -p80 192.168.1.10 # все http-скрипты
nmap --script banner 192.168.1.10 # снять баннеры со всех портов
nmap --script brute -p22,3306,3389 192.168.1.10 # брутфорс SSH/MySQL/RDP
nmap --script vulscan/vulscan.nse -sV 192.168.1.10 # сверка с базой уязвимостей
nmap --script-updatedb # обновить базу скриптов
ls /usr/share/nmap/scripts/ # посмотреть все скрипты локально
Полезные конкретные скрипты:
nmap --script smb-vuln-ms17-010 -p445 192.168.1.10 # вечный EternalBlue (MS17-010)
nmap --script smb-enum-shares -p445 192.168.1.10 # перечислить SMB-шары
nmap --script ftp-anon -p21 192.168.1.10 # анонимный вход на FTP
nmap --script mysql-info --script-args mysqluser=root -p3306 192.168.1.10
nmap --script ssl-enum-ciphers -p443 example.com # какие шифры поддерживает TLS
7. Вывод результатов
nmap -oN scan.txt 192.168.1.10 # обычный текст
nmap -oX scan.xml 192.168.1.10 # XML (для парсеров, импорт в Metasploit)
nmap -oG scan.gnmap 192.168.1.10 # greppable: один хост на строку
nmap -oA scan 192.168.1.10 # все форматы сразу (scan.nmap/scan.xml/scan.gnmap)
nmap -v 192.168.1.10 # подробный вывод; -vv ещё подробнее
nmap -d 192.168.1.10 # debug-вывод; -dd максимум
nmap --reason 192.168.1.10 # показывать, почему порт считается open/closed
nmap --open 192.168.1.10 # показывать только открытые порты
8. Обход файрволов и IDS
nmap -f 192.168.1.10 # фрагментация пакетов
nmap --mtu 24 192.168.1.10 # свой размер MTU (кратно 8)
nmap -D 10.0.0.1,10.0.0.2 192.168.1.10 # decoy: ложные источники рядом с вашим
nmap -S 10.0.0.5 -e eth0 192.168.1.10 # подменить источник (нужен raw socket)
nmap --source-port 53 192.168.1.10 # отправлять с «доверенного» порта DNS
nmap --data-length 25 192.168.1.10 # добавить мусорные байты к пакетам
nmap --randomize-hosts 192.168.1.0/24 # перемешать порядок хостов
nmap --spoof-mac Apple 192.168.1.10 # подменить MAC (vendor или полный адрес)
nmap --badsum 192.168.1.10 # неверные чек-суммы (проверка на IDS)
9. Готовые рецепты на каждый день
# Быстрая инвентаризация своей сети
nmap -sn 192.168.1.0/24 && nmap -T4 --top-ports 100 192.168.1.0/24 -oA homenet
Полный аудит одного хоста (всё сразу)
sudo nmap -A -p- -T4 --script vuln 192.168.1.10 -oA full-audit
Найти веб-серверы в подсети
nmap -p80,443,8080,8443 --open 192.168.1.0/24
Проверить Windows-машину (SMB/RDP)
sudo nmap -sS -sU -p T:445,3389,U:137 --script smb-vuln-* 192.168.1.10
Версии сервисов без шума по конкретным портам
sudo nmap -sV --version-light -Pn -p 22,80,443 192.168.1.10
10. Шпаргалка по флагам
| Флаг | Что делает |
|---|---|
-sS | SYN-скан (быстрый, скрытый, нужен root) |
-sU | UDP-скан |
-sV | Версии сервисов |
-O | Определение ОС |
-A | Агрессивный режим (sV+O+скрипты+traceroute) |
-p- | Все 65535 портов |
-Pn | Не пинговать, считать хост живым |
-sn | Только discovery хостов, без портов |
-sC | Скрипты default-категории |
-T4 | Быстрый шаблон таймингов |
-oA name | Вывод во все форматы сразу |
-v | Подробный вывод |
Легальный дисклеймер
Сканируйте только свои сети или системы, на которые у вас есть письменное разрешение. Скан чужих хостов в большинстве юрисдикций — уголовное преступление. Используйте Nmap для защиты: аудит своих серверов, лаборатории, учебные стенды (TryHackMe, HackTheBox).
Комментарии