🔎 NMAP сканирование
📌 Логика именования флагов
Nmap строит флаги по схеме: дефис + буква категории + буква действия. Три главных префикса:
-s→ как сканировать (метод)-P→ как пинговать (обнаружение хоста)-o→ куда писать (вывод)
Буква после префикса — первая буква того, что хочешь: SYN, UDP, Version, None, XML...
⚡ -s = SCAN (тип сканирования)
nmap -sS 10.0.0.1
Scan SYN — полуоткрытое сканирование. Шлёт SYN, получает SYN/ACK, сбрасывает RST. Не завершает handshake → меньше следов в логах.
nmap -sT 10.0.0.1
Scan TCP connect — полный TCP handshake. Без root — единственный вариант. Логируется серверами.
nmap -sU 10.0.0.1
Scan UDP — медленное, но ловит SNMP (161), DNS (53), TFTP (69) — то что часто забывают.
nmap -sA 10.0.0.1
Scan ACK — не ищет открытые порты, но маппит правила файрвола — что фильтруется, а что нет.
nmap -sN 10.0.0.1
Scan Null — TCP-пакет без флагов. Обходит некоторые stateless-файрволы.
nmap -sF 10.0.0.1
Scan FIN — только флаг FIN. Аналогичный трюк обхода.
nmap -sX 10.0.0.1
Scan Xmas — флаги FIN+PSH+URG — как гирлянда. Против простых файрволов.
nmap -sV 10.0.0.1
Scan Version — определяет ЧТО реально крутится на порту. Без этого порт 80 — просто "открыт".
nmap -sn 192.168.1.0/24
Scan, no port scan — ping-sweep: найти живые хосты, порты НЕ сканировать. Первый шаг разведки.
nmap -sL 192.168.1.0/24
Scan List — только вывести список целей + DNS. Ноль пакетов в сторону цели.
nmap -sC 10.0.0.1
Scan with default sCripts — дефолтные NSE-скрипты. То же что --script=default.
📡 -P = PROBE (обнаружение хостов)
nmap -Pn 10.0.0.1
Probe none — не пинговать, считать хост живым. Критично когда ICMP заблокирован.
nmap -PS 10.0.0.1
Probe SYN — проверка живости через SYN-пакет.
nmap -PA 10.0.0.1
Probe ACK — через ACK-пакет.
nmap -PU 10.0.0.1
Probe UDP — через UDP-пакет.
nmap -PE 10.0.0.1
Probe Echo — классический ICMP ping.
🖥 Одиночные флаги
nmap -O 10.0.0.1
OS detection — определение ОС по TCP/IP fingerprint.
nmap -A 10.0.0.1
Aggressive — всё сразу: -sV + -O + -sC + traceroute. Удобно но шумно.
nmap -n 10.0.0.1
no DNS — не резолвить IP → быстрее сканирование.
nmap -v 10.0.0.1
verbose — подробный вывод в реальном времени. -vv — ещё подробнее.
nmap -iL targets.txt
Input from List — читать список целей из файла.
🛡 Обход файрволов / IDS
-F — быстрое сканирование
nmap -F 10.0.0.1
Сканирует только 100 самых популярных портов вместо стандартных 1000. Быстрее и менее заметно.
-f — фрагментация пакетов
nmap -sS -f <target>
Дробит пакеты на маленькие фрагменты по 8 байт. Фаервол или IDS получает куски вместо цельного пакета и может не собрать картину. Результат — сканирование проходит незамеченным.
-f -f — ещё мельче
nmap -sS -f -f <target>
Фрагменты по 16 байт. Чем мельче куски, тем сложнее IDS собрать картину. Используется когда обычный -f не помог обойти фильтр.
--mtu — ручной размер фрагмента
nmap -sS --mtu 24 <target> # фрагменты по 24 байта
nmap -sS --mtu 32 <target> # фрагменты по 32 байта
Задаёшь размер фрагмента в байтах. Число должно быть кратно 8. Даёт точный контроль — можно подобрать размер, который конкретный фаервол не обрабатывает.
-f— это по сути--mtu 8, а-f -f— это--mtu 16.
-D — Decoy (приманки)
Самая интересная техника. Nmap отправляет пакеты якобы от нескольких разных IP одновременно с твоими. В логах цели вместо одного атакующего — куча источников, и непонятно кто настоящий.
nmap -sS -D 10.0.0.1,10.0.0.2,10.0.0.3,ME <target>
- ME — твой реальный IP среди фейковых
- Если не указать ME — Nmap вставит его в случайную позицию
Автоматические decoy:
nmap -sS -D RND:5 <target> # 5 случайных адресов
Decoy-адреса должны быть «живыми» хостами. Иначе цель получит SYN от несуществующего IP, не получит завершение хендшейка и может отфильтровать как SYN-flood.
-S — подмена IP
nmap -S 192.168.1.100 -e eth0 10.0.0.1
Подмена исходного IP. Нужен контроль над сетью для получения ответов.
Другие техники обхода
nmap --source-port 53 10.0.0.1
Отправка с порта DNS. Некоторые файрволы доверяют трафику с "системных" портов.
nmap --data-length 50 10.0.0.1
Добавить мусорные байты к пакетам. Ломает сигнатуры Nmap в IDS.
nmap --scan-delay 5s 10.0.0.1
Пауза между пакетами. Обходит rate-based детекцию.
nmap --spoof-mac 0 10.0.0.1
Случайный MAC (только локальная сеть).
⏱ -T = TIMING (скорость)
| Флаг | Название | Описание |
|---|---|---|
-T0 |
Paranoid | 1 пакет в 5 мин, обход IDS |
-T1 |
Sneaky | Тихо, медленно |
-T2 |
Polite | Не грузит сеть |
-T3 |
Normal | По умолчанию |
-T4 |
Aggressive | CTF, лабы, пентест |
-T5 |
Insane | Максимум, можно потерять данные |
💾 -o = OUTPUT (вывод)
nmap -oN scan.txt 10.0.0.1 # Normal — текст
nmap -oX scan.xml 10.0.0.1 # XML — для Metasploit, Dradis
nmap -oG scan.gnmap 10.0.0.1 # Grepable — для grep/awk
nmap -oA scan 10.0.0.1 # All — все три сразу (используй всегда)
🎯 -p = PORTS
nmap -p 80,443 10.0.0.1 # конкретные порты
nmap -p 1-1000 10.0.0.1 # диапазон
nmap -p- 10.0.0.1 # все 65535
nmap -p U:53,T:80 10.0.0.1 # указать протокол
nmap --top-ports 100 10.0.0.1 # топ-100 популярных
📎 NSE-скрипты (топ)
nmap --script=vuln 10.0.0.1 # поиск CVE
nmap --script=http-enum 10.0.0.1 # перечисление директорий
nmap --script=smb-enum-shares 10.0.0.1 # SMB-шары
nmap --script=ftp-anon 10.0.0.1 # анонимный FTP
nmap --script=dns-brute example.com # брутфорс поддоменов
nmap --script="http-*" 10.0.0.1 # все HTTP-скрипты
🔧 Полезные мелочи
nmap --open 10.0.0.1 # только открытые порты
nmap --reason 10.0.0.1 # почему порт open/closed/filtered
nmap -6 fe80::1 # сканирование IPv6
nmap --traceroute 10.0.0.1 # трассировка маршрута
nmap --min-rate 1000 10.0.0.1 # минимум 1000 пакетов/сек
nmap --max-retries 1 10.0.0.1 # меньше повторов, быстрее
🧠 Готовые комбо
Полное сканирование
nmap -sS -sV -sC -O -p- -T4 -oA full 10.0.0.1
Быстрая разведка сети
nmap -sn -T4 192.168.1.0/24
Тихое сканирование (evasion)
nmap -sS -T1 -f --data-length 50 -D RND:5 -Pn -n 10.0.0.1
Фрагментация + приманки + причины
nmap -sS -f -D RND:3 --reason <target>
Хороший набор для разведки через файрвол.
Поиск уязвимостей
nmap --script vuln -sV -p 80,443,445 10.0.0.1
Разведка SMB
nmap --script smb-enum-shares,smb-os-discovery -p 445 10.0.0.1