Linux

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

Nmap — это сокращение от Network Mapper. Это инструмент безопасности с открытым исходным кодом для исследования сети, сканирования и аудита. Однако команда nmap поставляется с большим количеством опций, которые могут сделать утилиту сложной для новых пользователей. Эта статья посвящена ознакомлению пользователя с инструментом командной строки nmap для сканирования хостов и сети, чтобы найти возможные уязвимости. Давайте рассмотрим распространенные примеры использования.

Чтобы установить nmap в RHEL, введите следующую yum команду:

yum install nmap

Примеры использования

Версия nmap:

nmap --version

Сканирование по IP адресу или домену:

nmap 1.2.3.4nmap localhostnmap 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)

### Сканирование одного IPnmap 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.3nmap 192.168.1.1,2,3

Вы также можете сканировать диапазон IP-адресов:

nmap 192.168.1.1-20nmap 192.168.1.*

Наконец, вы можете сканировать всю подсеть:

nmap 192.168.1.0/24

Чтение списка хостов/сетей из файла (IPv4)

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

cat > /tmp/test.txt

Заполните его:

randomsite.com192.168.1.0/24192.168.1.1/2410.1.2.3localhost

Запустите сканирование:

nmap -iL /tmp/test.txt

Исключение хостов/сетей (IPv4)

При сканировании большого количества хостов/сетей вы можете исключить хосты из проверки:

nmap 192.168.1.0/24 --exclude 192.168.1.5nmap 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.254nmap -v -A 192.168.1.1nmap -A -iL /tmp/scanlist.txt 

Узнать, защищен ли хост брандмауэром

nmap -sA 192.168.1.254nmap -sA randomsite.com

Сканирование хоста, если он защищен брандмауэром

Сканирование хоста/адреса IPv6

nmap -PN 192.168.1.1nmap -PN randomsite.com

Опция -6 включает сканирование IPv6. Синтаксис:

nmap -6 IPv6-Address-Herenmap -6 randomsite.comnmap -6 2607:f0d0:1002:51::4nmap -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.1nmap --reason randomsite.com

Показывать только открытые (или возможно открытые) порты

nmap --open 192.168.1.1nmap --open randomsite.com

Показать все отправленные и полученные пакеты

nmap --packet-trace 192.168.1.1nmap --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 MAClo     (lo)     127.0.0.1/8      loopback    upeth0   (eth0)   192.168.1.5/24   ethernet    up B8:AC:6F:65:31:E5vmnet1 (vmnet1) 192.168.121.1/24 ethernet    up 00:50:56:C0:00:01vmnet8 (vmnet8) 192.168.179.1/24 ethernet    up 00:50:56:C0:00:08ppp0   (ppp0)   10.1.19.69/32    point2point up **************************ROUTES**************************DST/MASK         DEV    GATEWAY10.0.31.178/32   ppp0209.133.67.35/32 eth0   192.168.1.2192.168.1.0/0    eth0192.168.121.0/0  vmnet1192.168.179.0/0  vmnet8169.254.0.0/0    eth010.0.0.0/0       ppp00.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.1nmap -p U:53,111,137,T:21-25,80,139,8080 randomsite.comnmap -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.1nmap --top-ports 10 192.168.1.1

Пример вывода:

Starting Nmap 5.00 ( http://nmap.org ) at 2012-11-27 01:23 ISTInteresting ports on 192.168.1.1:PORT     STATE  SERVICE21/tcp   closed ftp22/tcp   open   ssh23/tcp   closed telnet25/tcp   closed smtp80/tcp   open   http110/tcp  closed pop3139/tcp  closed netbios-ssn443/tcp  closed https445/tcp  closed microsoft-ds3389/tcp closed ms-term-servMAC 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.1nmap -O  --osscan-guess 192.168.1.1nmap -v -O --osscan-guess 192.168.1.1

Пример вывода:

Starting Nmap 5.00 ( http://nmap.org ) at 2012-11-27 01:29 ISTNSE: Loaded 0 scripts for scanning.Initiating ARP Ping Scan at 01:29Scanning 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:29Completed Parallel DNS resolution of 1 host. at 01:29, 0.22s elapsedInitiating SYN Stealth Scan at 01:29Scanning 192.168.1.1 [1000 ports]Discovered open port 80/tcp on 192.168.1.1Discovered open port 22/tcp on 192.168.1.1Completed SYN Stealth Scan at 01:29, 0.16s elapsed (1000 total ports)Initiating OS detection (try #1) against 192.168.1.1Retrying OS detection (try #2) against 192.168.1.1Retrying OS detection (try #3) against 192.168.1.1Retrying OS detection (try #4) against 192.168.1.1Retrying OS detection (try #5) against 192.168.1.1Host 192.168.1.1 is up (0.00049s latency).Interesting ports on 192.168.1.1:Not shown: 998 closed portsPORT   STATE SERVICE22/tcp open  ssh80/tcp open  httpMAC Address: BC:AE:C5:C3:16:93 (Unknown)Device type: WAP|general purpose|router|printer|broadband routerRunning (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=50B3CAOS:4B%P=x86_64-unknown-linux-gnu)SEQ(SP=C8%GCD=1%ISR=CB%TI=Z%CI=Z%II=I%TS=7OS:)OPS(O1=M2300ST11NW2%O2=M2300ST11NW2%O3=M2300NNT11NW2%O4=M2300ST11NW2%O5OS:=M2300ST11NW2%O6=M2300ST11)WIN(W1=45E8%W2=45E8%W3=45E8%W4=45E8%W5=45E8%WOS:6=45E8)ECN(R=Y%DF=Y%T=40%W=4600%O=M2300NNSNW2%CC=N%Q=)T1(R=Y%DF=Y%T=40%SOS:=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=%ROS: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%RIDOS:=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 hopTCP Sequence Prediction: Difficulty=200 (Good luck!)IP ID Sequence Generation: All zerosRead data files from: /usr/share/nmapOS detection performed. Please report any incorrect results at http://nmap.org/submit/ .Nmap done: 1 IP address (1 host up) scanned in 12.38 secondsRaw 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 ISTInteresting ports on 192.168.1.1:Not shown: 998 closed portsPORT   STATE SERVICE VERSION22/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.1nmap -PS 80,21,443 192.168.1.1nmap -PA 192.168.1.1nmap -PA 80,21,200-512 192.168.1.1

Пингование с использованием IP протокола 

nmap -PO 192.168.1.1

UDP пингование

Это сканирование обходит брандмауэры, фильтрующие только TCP запросы:

nmap -PU 192.168.1.1nmap -PU 2000.2001 192.168.1.1

Поиск наиболее часто используемые TCP-порты, используя TCP SYN Scan

### Скрытое сканированиеnmap -sS 192.168.1.1 ### TCP сканирование с использованием системного вызова connectnmap -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 ISTStats: 0:05:29 elapsed; 0 hosts completed (1 up), 1 undergoing UDP ScanUDP 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 portsPORT     STATE         SERVICE111/udp  open|filtered rpcbind123/udp  open|filtered ntp161/udp  open|filtered snmp2049/udp open|filtered nfs5353/udp open|filtered zeroconfMAC 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.1nmap -f randomsite.comnmap -f 15 randomsite.com## Установите свой собственный размер смещения с опцией --mtunmap --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-ipnmap -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.txtnmap -oN /путь/к/файлу 192.168.1.1nmap -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 ISTNSE: Loaded 143 scripts for scanning.NSE: Script Pre-scanning.Initiating NSE at 01:52Completed NSE at 01:52, 0.00s elapsedInitiating NSE at 01:52Completed NSE at 01:52, 0.00s elapsedInitiating ARP Ping Scan at 01:52Scanning 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:52Scanning dellm6700 (192.168.2.15) [1000 ports]Discovered open port 5900/tcp on 192.168.2.15Discovered open port 80/tcp on 192.168.2.15Discovered open port 22/tcp on 192.168.2.15Completed SYN Stealth Scan at 01:53, 4.62s elapsed (1000 total ports)Initiating Service scan at 01:53Scanning 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:53Completed NSE at 01:53, 30.02s elapsedInitiating NSE at 01:53Completed NSE at 01:53, 0.00s elapsedNmap scan report for dellm6700 (192.168.2.15)Host is up (0.00044s latency).Not shown: 996 filtered portsPORT     STATE  SERVICE VERSION22/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 works443/tcp  closed https5900/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 purposeRunning (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.0Aggressive 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 hopTCP Sequence Prediction: Difficulty=252 (Good luck!)IP ID Sequence Generation: All zerosService Info: OS: Linux; CPE: cpe:/o:linux:linux_kernelTRACEROUTEHOP RTT     ADDRESS1   0.44 ms dellm6700 (192.168.2.15)NSE: Script Post-scanning.Initiating NSE at 01:53Completed NSE at 01:53, 0.00s elapsedInitiating NSE at 01:53Completed NSE at 01:53, 0.00s elapsedRead data files from: /usr/local/bin/../share/nmapOS 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)