Nmap — это сокращение от Network Mapper. Это инструмент безопасности с открытым исходным кодом для исследования сети, сканирования и аудита. Однако команда nmap поставляется с большим количеством опций, которые могут сделать утилиту сложной для новых пользователей. Эта статья посвящена ознакомлению пользователя с инструментом командной строки nmap для сканирования хостов и сети, чтобы найти возможные уязвимости. Давайте рассмотрим распространенные примеры использования.
Чтобы установить nmap в RHEL, введите следующую yum команду:
yum install nmap
Примеры использования
Версия nmap:
nmap --version
Сканирование по IP адресу или домену:
nmap 1.2.3.4
nmap localhost
nmap 192.168.1.1
Сканирование определенных портов:
nmap -p 80,25,443,110 192.168.1.1
Сканирование диапазона портов:
nmap -p 1024-2048 192.168.1.1
Сканирование всей сети:
nmap 192.168.1.0/24
TCP SYN сканирование:
nmap -sS 192.168.1.1
UDP сканирование:
nmap -sU 192.168.1.1
Сканирование IP протокола:
nmap -sO 192.168.1.1
Обнаружение удаленной операционной системы:
nmap -O --osscan-guess 192.168.1.1
Сканирование одного хоста или IP адреса (IPv4)
### Сканирование одного IP
nmap 192.168.1.1
## Сканирование хоста
nmap randomsite.com
## Сканирование хоста с дополнительной информацией
nmap -v randomsite.com
Сканирование нескольких IP-адресов или подсети(IPv4)
nmap 192.168.1.1 192.168.1.2 192.168.1.3
nmap 192.168.1.1,2,3
Вы также можете сканировать диапазон IP-адресов:
nmap 192.168.1.1-20
nmap 192.168.1.*
Наконец, вы можете сканировать всю подсеть:
nmap 192.168.1.0/24
Чтение списка хостов/сетей из файла (IPv4)
Опция -iL позволяет вам читать список целевых систем, используя текстовый файл. Это полезно для сканирования большого количества хостов / сетей. Создайте текстовый файл следующим образом:
cat > /tmp/test.txt
Заполните его:
randomsite.com
192.168.1.0/24
192.168.1.1/24
10.1.2.3
localhost
Запустите сканирование:
nmap -iL /tmp/test.txt
Исключение хостов/сетей (IPv4)
При сканировании большого количества хостов/сетей вы можете исключить хосты из проверки:
nmap 192.168.1.0/24 --exclude 192.168.1.5
nmap 192.168.1.0/24 --exclude 192.168.1.5,192.168.1.254
Или исключить список с помощью файла /tmp/exclude.txt
nmap -iL /tmp/scanlist.txt --excludefile /tmp/exclude.txt
Включить скрипт сканирования ОС и ее версии (IPv4)
nmap -A 192.168.1.254
nmap -v -A 192.168.1.1
nmap -A -iL /tmp/scanlist.txt
Узнать, защищен ли хост брандмауэром
nmap -sA 192.168.1.254
nmap -sA randomsite.com
Сканирование хоста, если он защищен брандмауэром
Сканирование хоста/адреса IPv6
nmap -PN 192.168.1.1
nmap -PN randomsite.com
Опция -6 включает сканирование IPv6. Синтаксис:
nmap -6 IPv6-Address-Here
nmap -6 randomsite.com
nmap -6 2607:f0d0:1002:51::4
nmap -v A -6 2607:f0d0:1002:51::4
Сканирование сети и поиск работающих устройств
nmap -sP 192.168.1.0/24
Пример вывода:
Host 192.168.1.1 is up (0.00035s latency).
MAC Address: BC:AE:C5:C3:16:93 (Unknown)
Host 192.168.1.2 is up (0.0038s latency).
MAC Address: 74:44:01:40:57:FB (Unknown)
Host 192.168.1.5 is up.
Host nas03 (192.168.1.12) is up (0.0091s latency).
MAC Address: 00:11:32:11:15:FC (Synology Incorporated)
Nmap done: 256 IP addresses (4 hosts up) scanned in 2.80 second
Быстрое сканирование
nmap -F 192.168.1.1
Показать причину, по которой порт находится в определенном состоянии
nmap --reason 192.168.1.1
nmap --reason randomsite.com
Показывать только открытые (или возможно открытые) порты
nmap --open 192.168.1.1
nmap --open randomsite.com
Показать все отправленные и полученные пакеты
nmap --packet-trace 192.168.1.1
nmap --packet-trace randomsite.com
Показать интерфейсы и маршруты хоста
nmap --iflist
Пример вывода:
Starting Nmap 5.00 ( http://nmap.org ) at 2012-11-27 02:01 IST
************************INTERFACES************************
DEV (SHORT) IP/MASK TYPE UP MAC
lo (lo) 127.0.0.1/8 loopback up
eth0 (eth0) 192.168.1.5/24 ethernet up B8:AC:6F:65:31:E5
vmnet1 (vmnet1) 192.168.121.1/24 ethernet up 00:50:56:C0:00:01
vmnet8 (vmnet8) 192.168.179.1/24 ethernet up 00:50:56:C0:00:08
ppp0 (ppp0) 10.1.19.69/32 point2point up
**************************ROUTES**************************
DST/MASK DEV GATEWAY
10.0.31.178/32 ppp0
209.133.67.35/32 eth0 192.168.1.2
192.168.1.0/0 eth0
192.168.121.0/0 vmnet1
192.168.179.0/0 vmnet8
169.254.0.0/0 eth0
10.0.0.0/0 ppp0
0.0.0.0/0 eth0 192.168.1.2
Сканирование определенных портов
nmap -p [port] hostName
## Сканирование 80 порта
nmap -p 80 192.168.1.1
## TCP сканирование 80 порта
nmap -p T:80 192.168.1.1
## UDP сканирование 80 порта
nmap -p U:53 192.168.1.1
## Сканирование двух портов
nmap -p 80,443 192.168.1.1
## Сканирование диапазона портов
nmap -p 80-200 192.168.1.1
## Комбинирование всех параметров
nmap -p U:53,111,137,T:21-25,80,139,8080 192.168.1.1
nmap -p U:53,111,137,T:21-25,80,139,8080 randomsite.com
nmap -v -sU -sT -p U:53,111,137,T:21-25,80,139,8080 192.168.1.254
## Сканирование всех портов с помощью *
nmap -p "*" 192.168.1.1
## Сканирование популярных портов, нужно указать количество
nmap --top-ports 5 192.168.1.1
nmap --top-ports 10 192.168.1.1
Пример вывода:
Starting Nmap 5.00 ( http://nmap.org ) at 2012-11-27 01:23 IST
Interesting ports on 192.168.1.1:
PORT STATE SERVICE
21/tcp closed ftp
22/tcp open ssh
23/tcp closed telnet
25/tcp closed smtp
80/tcp open http
110/tcp closed pop3
139/tcp closed netbios-ssn
443/tcp closed https
445/tcp closed microsoft-ds
3389/tcp closed ms-term-serv
MAC Address: BC:AE:C5:C3:16:93 (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 0.51 seconds
Самый быстрый способ проверить все ваши устройства на наличие открытых портов
nmap -T5 192.168.1.0/24
Определение ОС
Вы можете идентифицировать приложения и ОС удаленного хоста, используя опцию -O:
nmap -O 192.168.1.1
nmap -O --osscan-guess 192.168.1.1
nmap -v -O --osscan-guess 192.168.1.1
Пример вывода:
Starting Nmap 5.00 ( http://nmap.org ) at 2012-11-27 01:29 IST
NSE: Loaded 0 scripts for scanning.
Initiating ARP Ping Scan at 01:29
Scanning 192.168.1.1 [1 port]
Completed ARP Ping Scan at 01:29, 0.01s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 01:29
Completed Parallel DNS resolution of 1 host. at 01:29, 0.22s elapsed
Initiating SYN Stealth Scan at 01:29
Scanning 192.168.1.1 [1000 ports]
Discovered open port 80/tcp on 192.168.1.1
Discovered open port 22/tcp on 192.168.1.1
Completed SYN Stealth Scan at 01:29, 0.16s elapsed (1000 total ports)
Initiating OS detection (try #1) against 192.168.1.1
Retrying OS detection (try #2) against 192.168.1.1
Retrying OS detection (try #3) against 192.168.1.1
Retrying OS detection (try #4) against 192.168.1.1
Retrying OS detection (try #5) against 192.168.1.1
Host 192.168.1.1 is up (0.00049s latency).
Interesting ports on 192.168.1.1:
Not shown: 998 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
MAC Address: BC:AE:C5:C3:16:93 (Unknown)
Device type: WAP|general purpose|router|printer|broadband router
Running (JUST GUESSING) : Linksys Linux 2.4.X (95%), Linux 2.4.X|2.6.X (94%), MikroTik RouterOS 3.X (92%), Lexmark embedded (90%), Enterasys embedded (89%), D-Link Linux 2.4.X (89%), Netgear Linux 2.4.X (89%)
Aggressive OS guesses: OpenWrt White Russian 0.9 (Linux 2.4.30) (95%), OpenWrt 0.9 - 7.09 (Linux 2.4.30 - 2.4.34) (94%), OpenWrt Kamikaze 7.09 (Linux 2.6.22) (94%), Linux 2.4.21 - 2.4.31 (likely embedded) (92%), Linux 2.6.15 - 2.6.23 (embedded) (92%), Linux 2.6.15 - 2.6.24 (92%), MikroTik RouterOS 3.0beta5 (92%), MikroTik RouterOS 3.17 (92%), Linux 2.6.24 (91%), Linux 2.6.22 (90%)
No exact OS matches for host (If you know what OS is running on it, see http://nmap.org/submit/ ).
TCP/IP fingerprint:
OS:SCAN(V=5.00%D=11/27%OT=22%CT=1%CU=30609%PV=Y%DS=1%G=Y%M=BCAEC5%TM=50B3CA
OS:4B%P=x86_64-unknown-linux-gnu)SEQ(SP=C8%GCD=1%ISR=CB%TI=Z%CI=Z%II=I%TS=7
OS:)OPS(O1=M2300ST11NW2%O2=M2300ST11NW2%O3=M2300NNT11NW2%O4=M2300ST11NW2%O5
OS:=M2300ST11NW2%O6=M2300ST11)WIN(W1=45E8%W2=45E8%W3=45E8%W4=45E8%W5=45E8%W
OS:6=45E8)ECN(R=Y%DF=Y%T=40%W=4600%O=M2300NNSNW2%CC=N%Q=)T1(R=Y%DF=Y%T=40%S
OS:=O%A=S+%F=AS%RD=0%Q=)T2(R=N)T3(R=N)T4(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%R
OS:D=0%Q=)T5(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=40%W=
OS:0%S=A%A=Z%F=R%O=%RD=0%Q=)T7(R=N)U1(R=Y%DF=N%T=40%IPL=164%UN=0%RIPL=G%RID
OS:=G%RIPCK=G%RUCK=G%RUD=G)IE(R=Y%DFI=N%T=40%CD=S)
Uptime guess: 12.990 days (since Wed Nov 14 01:44:40 2012)
Network Distance: 1 hop
TCP Sequence Prediction: Difficulty=200 (Good luck!)
IP ID Sequence Generation: All zeros
Read data files from: /usr/share/nmap
OS detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 12.38 seconds
Raw packets sent: 1126 (53.832KB) | Rcvd: 1066 (46.100KB)
Как определить версии служб?
nmap -sV 192.168.1.1
Пример вывода:
Starting Nmap 5.00 ( http://nmap.org ) at 2012-11-27 01:34 IST
Interesting ports on 192.168.1.1:
Not shown: 998 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh Dropbear sshd 0.52 (protocol 2.0)
80/tcp open http?
1 service unrecognized despite returning data.
Сканирование хоста с помощью TCP ACK (PA) и TCP Syn (PS)
Если брандмауэр блокирует стандартные запросы ICMP, попробуйте следующие методы обнаружения хоста:
nmap -PS 192.168.1.1
nmap -PS 80,21,443 192.168.1.1
nmap -PA 192.168.1.1
nmap -PA 80,21,200-512 192.168.1.1
Пингование с использованием IP протокола
nmap -PO 192.168.1.1
UDP пингование
Это сканирование обходит брандмауэры, фильтрующие только TCP запросы:
nmap -PU 192.168.1.1
nmap -PU 2000.2001 192.168.1.1
Поиск наиболее часто используемые TCP-порты, используя TCP SYN Scan
### Скрытое сканирование
nmap -sS 192.168.1.1
### TCP сканирование с использованием системного вызова connect
nmap -sT 192.168.1.1
### TCP ACK сканирование
nmap -sA 192.168.1.1
### TCP Window сканирование
nmap -sW 192.168.1.1
### TCP сканирование Мэймона
nmap -sM 192.168.1.1
Сканирование хоста на наличие UDP-сервисов (UDP-сканирование)
Самые популярные сервисы в интернете работают по протоколу TCP. DNS, SNMP и DHCP являются тремя наиболее распространенными службами UDP. Используйте следующий синтаксис для поиска служб UDP:
nmap -sU 192.168.1.1
Пример вывода:
Starting Nmap 5.00 ( http://nmap.org ) at 2012-11-27 00:52 IST
Stats: 0:05:29 elapsed; 0 hosts completed (1 up), 1 undergoing UDP Scan
UDP Scan Timing: About 32.49% done; ETC: 01:09 (0:11:26 remaining)
Interesting ports on nas03 (192.168.1.12):
Not shown: 995 closed ports
PORT STATE SERVICE
111/udp open|filtered rpcbind
123/udp open|filtered ntp
161/udp open|filtered snmp
2049/udp open|filtered nfs
5353/udp open|filtered zeroconf
MAC Address: 00:11:32:11:15:FC (Synology Incorporated)
Nmap done: 1 IP address (1 host up) scanned in 1099.55 seconds
Сканирование c помощью IP протокола ping
Этот тип сканирования позволяет определить, какие протоколы IP (TCP, ICMP, IGMP и т. д.) поддерживаются целевыми машинами:
nmap -sO 192.168.1.1
Сканирование брандмауэра на уязвимости
Следующие типы сканирования используют небольшую лазейку в TCP и подходят для проверки безопасности распространенных атак:
## TCP Null сканирование
nmap -sN 192.168.1.254
## TCP FIN сканирование
nmap -sF 192.168.1.254
## TCP Xmas сканирование
nmap -sX 192.168.1.254
Сканирование с фрагментированием пакетов
Опция -f заставляет nmap использовать крошечные фрагментированные IP-пакеты. Идея состоит в том, чтобы разделить заголовок TCP на несколько пакетов для усложнения фильтрации пакетов.
nmap -f 192.168.1.1
nmap -f randomsite.com
nmap -f 15 randomsite.com
## Установите свой собственный размер смещения с опцией --mtu
nmap --mtu 32 192.168.1.1
Маскировка сканирования с помощью фиктивных хостов
Опция -D показывает удаленному хосту, что хосты, которые вы указали в качестве приманок, также сканируют целевую сеть. Таким образом, их IDS могут сообщать о 5-10 сканированиях портов с уникальных IP-адресов, но они не будут знать, какой IP сканировал их, а какие были невинными приманками:
nmap -n -Ddecoy-ip1,decoy-ip2,your-own-ip,decoy-ip3,decoy-ip4 remote-host-ip
nmap -n -D192.168.1.5,10.5.1.2,172.1.2.4,3.4.2.1 192.168.1.5
Сканирование с подменой MAC адреса
### Подмена MAC адреса
nmap --spoof-mac MAC-АДРЕС-ЗДЕСЬ 192.168.1.1
### Добавляем другие опции
nmap -v -sT -PN --spoof-mac MAC-АДРЕС-ЗДЕСЬ 192.168.1.1
### Использование случайного MAC адреса
### Число 0 означает, что подставится абсолютно случайный MAC-адрес
nmap -v -sT -PN --spoof-mac 0 192.168.1.1
Сохранение вывода в файл
nmap 192.168.1.1 > output.txt
nmap -oN /путь/к/файлу 192.168.1.1
nmap -oN output.txt 192.168.1.1
Сканирование веб-сервера для Nikto
nmap -p80 192.168.1.2/24 -oG - | /путь/к/nikto.pl -h -
nmap -p80,443 192.168.1.2/24 -oG - | /путь/к/nikto.pl -h -
Ускорение nmap
Используйте опцию -T:
nmap -v -sS -A -T4 192.168.2.5
Пример вывода:
Starting Nmap 7.40 ( https://nmap.org ) at 2017-05-15 01:52 IST
NSE: Loaded 143 scripts for scanning.
NSE: Script Pre-scanning.
Initiating NSE at 01:52
Completed NSE at 01:52, 0.00s elapsed
Initiating NSE at 01:52
Completed NSE at 01:52, 0.00s elapsed
Initiating ARP Ping Scan at 01:52
Scanning 192.168.2.15 [1 port]
Completed ARP Ping Scan at 01:52, 0.01s elapsed (1 total hosts)
Initiating SYN Stealth Scan at 01:52
Scanning dellm6700 (192.168.2.15) [1000 ports]
Discovered open port 5900/tcp on 192.168.2.15
Discovered open port 80/tcp on 192.168.2.15
Discovered open port 22/tcp on 192.168.2.15
Completed SYN Stealth Scan at 01:53, 4.62s elapsed (1000 total ports)
Initiating Service scan at 01:53
Scanning 3 services on dellm6700 (192.168.2.15)
Completed Service scan at 01:53, 6.01s elapsed (3 services on 1 host)
Initiating OS detection (try #1) against dellm6700 (192.168.2.15)
Retrying OS detection (try #2) against dellm6700 (192.168.2.15)
NSE: Script scanning 192.168.2.15.
Initiating NSE at 01:53
Completed NSE at 01:53, 30.02s elapsed
Initiating NSE at 01:53
Completed NSE at 01:53, 0.00s elapsed
Nmap scan report for dellm6700 (192.168.2.15)
Host is up (0.00044s latency).
Not shown: 996 filtered ports
PORT STATE SERVICE VERSION
22/tcp open ssh (protocol 2.0)
| fingerprint-strings:
| NULL:
|_ SSH-2.0-OpenSSH_7.4p1 Ubuntu-10
| ssh-hostkey:
| 2048 1d:14:84:f0:c7:21:10:0e:30:d9:f9:59:6b:c3:95:97 (RSA)
|_ 256 dc:59:c6:6e:33:33:f2:d2:5d:9b:fd:b4:9c:52:c1:0a (ECDSA)
80/tcp open http nginx 1.10.0 (Ubuntu)
| http-methods:
|_ Supported Methods: GET HEAD
|_http-server-header: nginx/1.10.0 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
443/tcp closed https
5900/tcp open vnc VNC (protocol 3.7)
1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service :
SF-Port22-TCP:V=7.40%I=7%D=5/15%Time=5918BCAA%P=x86_64-apple-darwin16.3.0%
SF:r(NULL,20,"SSH-2\.0-OpenSSH_7\.4p1\x20Ubuntu-10\n");
MAC Address: F0:1F:AF:1F:2C:60 (Dell)
Device type: general purpose
Running (JUST GUESSING): Linux 3.X|4.X|2.6.X (95%), OpenBSD 4.X (85%)
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:2.6.32 cpe:/o:openbsd:openbsd:4.0
Aggressive OS guesses: Linux 3.11 - 4.1 (95%), Linux 4.4 (95%), Linux 3.13 (92%), Linux 4.0 (90%), Linux 2.6.32 (89%), Linux 2.6.32 or 3.10 (89%), Linux 3.2 - 3.8 (89%), Linux 3.10 - 3.12 (88%), Linux 2.6.32 - 2.6.33 (87%), Linux 2.6.32 - 2.6.35 (87%)
No exact OS matches for host (test conditions non-ideal).
Uptime guess: 0.000 days (since Mon May 15 01:53:08 2017)
Network Distance: 1 hop
TCP Sequence Prediction: Difficulty=252 (Good luck!)
IP ID Sequence Generation: All zeros
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
TRACEROUTE
HOP RTT ADDRESS
1 0.44 ms dellm6700 (192.168.2.15)
NSE: Script Post-scanning.
Initiating NSE at 01:53
Completed NSE at 01:53, 0.00s elapsed
Initiating NSE at 01:53
Completed NSE at 01:53, 0.00s elapsed
Read data files from: /usr/local/bin/../share/nmap
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 46.02 seconds
Raw packets sent: 2075 (95.016KB) | Rcvd: 50 (3.084KB)