Навіщо Nmap?
Nmap (Network Mapper) — стандартний інструмент розвідки в будь-якому пентесті та CTF. Він дозволяє:
- визначити живі хости в мережі
- знайти відкриті порти
- визначити версії сервісів
- виявити ОС
- запустити скрипти для додаткової інформації
Базовий синтаксис
nmap [опції] <ціль>
# Ціль може бути:
nmap 192.168.1.1
nmap 192.168.1.0/24
nmap 192.168.1.1-50
nmap scanme.nmap.org
Типи сканування
TCP SYN scan (Half-open) — найпоширеніший
nmap -sS 192.168.1.1
Посилає SYN, чекає SYN-ACK (порт відкритий) або RST (закритий). Не завершує handshake — менш помітний.
TCP Connect scan
nmap -sT 192.168.1.1
Повний TCP handshake. Не потребує root, але більш помітний у логах.
UDP scan
nmap -sU 192.168.1.1
Повільніший, але важливий — DNS (53), SNMP (161), DHCP (67/68) часто на UDP.
Без ping (пропустити host discovery)
nmap -Pn 192.168.1.1
Корисно коли хост блокує ICMP, але порти відкриті.
Визначення портів
# Топ 1000 портів (за замовчуванням)
nmap 192.168.1.1
# Всі 65535 портів
nmap -p- 192.168.1.1
# Конкретні порти
nmap -p 22,80,443,8080 192.168.1.1
# Діапазон
nmap -p 1-1000 192.168.1.1
# Топ N найпоширеніших
nmap --top-ports 100 192.168.1.1
Версії сервісів та ОС
# Версії сервісів
nmap -sV 192.168.1.1
# Визначення ОС (потребує root)
nmap -O 192.168.1.1
# Агресивне сканування (sV + O + скрипти + traceroute)
nmap -A 192.168.1.1
NSE скрипти
NSE (Nmap Scripting Engine) — потужна система скриптів для розширеного аналізу.
# Запустити скрипти за замовчуванням
nmap -sC 192.168.1.1
# Конкретний скрипт
nmap --script=http-title 192.168.1.1
# Категорія скриптів
nmap --script=vuln 192.168.1.1
nmap --script=auth 192.168.1.1
nmap --script=discovery 192.168.1.1
# Кілька скриптів
nmap --script=http-enum,http-headers 192.168.1.1
# SMB розвідка
nmap --script=smb-enum-shares,smb-enum-users -p 445 192.168.1.1
# Перевірка на відомі вразливості
nmap --script=vuln 192.168.1.1
Швидкість та таймінг
# -T0 Paranoid (дуже повільно, для IDS evasion)
# -T1 Sneaky
# -T2 Polite
# -T3 Normal (за замовчуванням)
# -T4 Aggressive (CTF стандарт)
# -T5 Insane (може пропустити результати)
nmap -T4 192.168.1.1
Типовий CTF workflow
# 1. Швидкий скан всіх портів
nmap -p- --min-rate 5000 -T4 <IP> -oN ports.txt
# 2. Детальний скан знайдених портів
ports=$(grep ^[0-9] ports.txt | cut -d'/' -f1 | tr '
' ',' | sed 's/,$//')
nmap -sC -sV -p$ports <IP> -oN detailed.txt
# 3. Переглянути результати
cat detailed.txt
Збереження результатів
nmap -oN output.txt # звичайний текст
nmap -oX output.xml # XML
nmap -oG output.gnmap # grep-friendly
nmap -oA output # всі три формати одразу
Корисні комбінації
# Повна розвідка хоста
nmap -sC -sV -O -p- -T4 192.168.1.1
# Скан підмережі на живих хостів
nmap -sn 192.168.1.0/24
# Тихий скан (без ping, без DNS)
nmap -Pn -n -sS 192.168.1.1
# Через proxychains (для pivot)
proxychains nmap -sT -Pn 10.10.10.1