Nmap — Сетевой сканер портов и служб

от автора

Разведка — первый этап любого пентеста. Цель: собрать максимум данных о цели до начала активных действий.

nmap

Что делает

Сканирует сети и хосты: определяет открытые порты, запущенные сервисы, версии ПО и операционную систему. Работает через отправку специально сформированных пакетов и анализ ответов. Стандарт де-факто для сетевой разведки.

Установка

# Предустановлен в Kali Linux. Если нет:sudo apt update && sudo apt install nmap -y

Синтаксис

nmap [тип сканирования] [опции] [цель]

Ключевые флаги и опции

Флаг

Описание

Пример

-sS

SYN-сканирование (стелс, по умолчанию с root)

nmap -sS 192.168.1.1

-sT

TCP connect (без root)

nmap -sT 192.168.1.1

-sU

UDP-сканирование

nmap -sU -p 53,161 192.168.1.1

-sV

Определение версий сервисов

nmap -sV 192.168.1.1

-O

Определение ОС

nmap -O 192.168.1.1

-A

Агрессивное: ОС + версии + скрипты + traceroute

nmap -A 192.168.1.1

-p

Указать порты

-p 22,80,443 или -p 1-1000 или -p- (все)

-T0-T5

Скорость (0=паранойя, 3=по умолч., 5=безумие)

-T4

--open

Показывать только открытые порты

nmap --open 192.168.1.0/24

-oN

Вывод в файл (обычный формат)

-oN scan.txt

-oX

Вывод в XML

-oX scan.xml

-oG

Вывод в greppable-формат

-oG scan.gnmap

-oA

Вывод во все три формата

-oA scan

-v / -vv

Подробный вывод

nmap -vv

-n

Не резолвить DNS

nmap -n 192.168.1.0/24

--script

Запустить NSE-скрипт

--script vuln

-iL

Читать цели из файла

-iL targets.txt

-Pn

Не пинговать хосты перед сканированием

nmap -Pn 192.168.1.1

-sn

Ping sweep (только обнаружение хостов)

nmap -sn 192.168.1.0/24

--min-rate

Минимальная скорость пакетов/сек

--min-rate 1000

Практические примеры

Пример 1: Обнаружение живых хостов в сети

sudo nmap -sn 192.168.1.0/24

Вывод:

Starting Nmap 7.94 ( https://nmap.org )Nmap scan report for 192.168.1.1Host is up (0.00054s latency).MAC Address: C8:3A:35:27:4C:01 (Tenda Technology)Nmap scan report for 192.168.1.105Host is up (0.0012s latency).MAC Address: DC:A6:32:5E:2B:17 (Raspberry Pi Trading)Nmap scan report for 192.168.1.200Host is up (0.00087s latency).MAC Address: 00:50:56:C0:00:08 (VMware)Nmap done: 256 IP addresses (3 hosts up) scanned in 2.34 seconds

Что произошло: nmap отправил ARP-запросы (в локальной сети) и ICMP-эхо, получил ответы от трёх хостов.


Пример 2: Полное сканирование с определением версий и ОС

sudo nmap -sS -sV -O -p- --min-rate 5000 -T4 -oA full_scan 192.168.1.105

Вывод:

Starting Nmap 7.94Nmap scan report for 192.168.1.105Host is up (0.0011s latency).Not shown: 65528 closed tcp ports (reset)PORT     STATE SERVICE     VERSION22/tcp   open  ssh         OpenSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0)80/tcp   open  http        Apache httpd 2.4.54 ((Debian))111/tcp  open  rpcbind     2-4 (RPC #100000)443/tcp  open  ssl/http    Apache httpd 2.4.543306/tcp open  mysql       MySQL 5.7.398080/tcp open  http-proxy  Squid http proxy 4.13MAC Address: DC:A6:32:5E:2B:17 (Raspberry Pi)Device type: general purposeRunning: Linux 4.X|5.XOS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5OS details: Linux 4.15 - 5.6Network Distance: 1 hopService Info: OS: Linux; CPE: cpe:/o:linux:linux_kernelNmap done: 1 IP address (1 host up) scanned in 24.87 seconds

Что произошло: просканированы все 65535 портов, определены сервисы с версиями и ОС.


Пример 3: Поиск уязвимостей через NSE-скрипты

sudo nmap -sV --script vuln -p 80,443,8080 testphp.vulnweb.com

Вывод:

Starting Nmap 7.94Nmap scan report for testphp.vulnweb.com (44.228.249.3)Host is up (0.18s latency).PORT     STATE SERVICE VERSION80/tcp   open  http    Apache httpd 2.4.7 ((Ubuntu))| http-sql-injection:|   Possible sqli for queries:|     http://testphp.vulnweb.com/artists.php?artist=1%27%20OR%20sqlspider|_    http://testphp.vulnweb.com/listproducts.php?cat=1%27%20OR%20sqlspider| http-csrf:|   Spidering limited to: maxdepth=3; maxpagecount=20; withinhost=testphp.vulnweb.com|     Found the following possible CSRF vulnerabilities:|       Path: http://testphp.vulnweb.com/userinfo.php|       Form id: |_      Form action: userinfo.php| http-stored-xss:|_  Couldn't find any stored XSS vulnerabilities.|_http-dombased-xss: Couldn't find any DOM based XSS.

Что произошло: NSE-скрипт vuln запустил набор проверок на веб-уязвимости, обнаружил потенциальные точки SQL-инъек ции.


Пример 4: Сканирование конкретных сервисов + экспорт

sudo nmap -p 445 --script smb-vuln-ms17-010 192.168.1.0/24 -oN eternalblue_scan.txt

Вывод:

Nmap scan report for 192.168.1.200Host is up (0.00098s latency).PORT    STATE SERVICE445/tcp open  microsoft-dsHost script results:| smb-vuln-ms17-010: |   VULNERABLE:|   Remote Code Execution vulnerability in Microsoft SMBv1 servers (MS17-010)|     State: VULNERABLE|     IDs:  CVE:CVE-2017-0143|     Risk factor: HIGH|       A critical remote code execution vulnerability exists in Microsoft SMBv1|       servers (named pipe functionality).|     References:|_      https://technet.microsoft.com/en-us/library/security/ms17-010.aspx

Что произошло: скрипт smb-vuln-ms17-010 проверил каждый хост сети на уязвимость EternalBlue (использовалась WannaCry).


Частые ошибки

  • Note: Host seems down → используй -Pn (хост блокирует ICMP, но может быть доступен)

  • You requested a scan type which requires root privileges → запускай с sudo

  • Сканирование зависло на UDP → UDP медленный по природе, добавь --min-rate 1000 и ограничь порты -p 53,67,68,69,123,161

  • WARNING: RST from... в большом количестве → файрвол/IDS сбрасывает пакеты, снизь скорость -T2

  • DNS резолвинг замедляет сканирование сети → добавь -n

Заметки OPSEC

Уровень шума: ВЫСОКИЙ (при -A, -T4, --script vuln)

  • SYN-сканирование (-sS) оставляет записи в файрволе и IDS (Snort, Suricata)

  • -A генерирует десятки тысяч пакетов — легко детектируется

  • Логи на цели: /var/log/auth.log (SSH), логи Apache/nginx при сканировании веб

  • Для снижения заметности: -T1 -T2, --scan-delay 2000ms, использовать --source-port 53 для обхода простых правил

Связка с другими инструментами

nmap (обнаружение хостов и портов) → nessus/openvas (глубокая проверка уязвимостей) → metasploit (эксплуатация найденных CVE)

nmap -sV (определение сервисов) → searchsploit (поиск эксплойтов по версии) → exploitdb (получение PoC)


Все примеры проверены на Kali Linux 2024.x. Используемые цели: scanme.nmap.org, 192.168.1.0/24, testphp.vulnweb.com, hack.me.

ссылка на оригинал статьи https://habr.com/ru/articles/1042462/