береженого кольт бережет
береженого кольт бережет

Примеры команды NMAP

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)