Nmap — это сокращение от Network Mapper. Это инструмент безопасности с открытым исходным кодом для исследования сети, сканирования безопасности и аудита. Однако команда Nmap имеет множество опций, которые могут сделать утилиту более надежной и трудной для освоения новыми пользователями. Цель этого руководства — познакомить пользователя с инструментом командной строки Nmap для сканирования хоста или сети, чтобы найти возможные уязвимые точки в хостах. Вы также узнаете, как использовать Nmap в наступательных и оборонительных целях. Давайте посмотрим на лучшие команды Nmap для сисадминов, работающих в Linux или Unix-подобных системах.
Что такое Nmap и для чего он используется?
Nmap в действии
На странице руководства:
Nmap («Network Mapper») — это инструмент с открытым исходным кодом для исследования сети и аудита безопасности. Он был разработан для быстрого сканирования больших сетей, хотя отлично работает против одиночных хостов. Nmap использует необработанные IP-пакеты по-новому, чтобы определить, какие хосты доступны в сети, какие услуги (имя и версия приложения) эти хосты предлагают, какие операционные системы (и версии ОС) они работают, какой тип фильтров пакетов / брандмауэров используются и десятки других характеристик. Хотя Nmap обычно используется для аудита безопасности, многие системные и сетевые администраторы находят его полезным для рутинных задач, таких как инвентаризация сети, управление расписаниями обновления сервисов и мониторинг времени безотказной работы хоста или сервиса.
Примеры команд Nmap в Linux и Unix — Пример установки (LAB)
В некоторых юрисдикциях сканирование портов может быть незаконным. Итак, настройте лабораторию следующим образом:
+---------+ +---------+ | Network | +--------+ | server1 |-----------+ swtich +---------|server2 | +---------+ | (sw0) | +--------+ +----+----+ | | +---------+----------------+ | wks01 Linux/macOS/Win | +--------------------------+
- wks01 — это ваш компьютер под управлением Linux / macOS (OS X) или Unix-подобной операционной системы. Он используется для сканирования вашей локальной сети. На этом компьютере должен быть установлен набор инструментов nmap.
- server1 может работать под управлением операционных систем Linux / Unix / MS-Windows. Это непропатченный сервер. Не стесняйтесь установить несколько сервисов, таких как веб-сервер, файловый сервер и так далее.
- server2 может работать под управлением операционных систем Linux / Unix / MS-Windows. Это полностью пропатченный сервер с брандмауэром. Опять же, не стесняйтесь устанавливать несколько сервисов, таких как веб-сервер, файловый сервер и так далее.
- Все три системы подключены через коммутатор.
Как установить nmap в Linux?
Смотрите сдесь:
- Debian / Ubuntu Linux: Install nmap Software For Scanning Network
- CentOS / RHEL: Install nmap Network Security Scanner
- OpenBSD: Install nmap Network Security Scanner
1. Сканируйте отдельный хост или IP-адрес (IPv4) с помощью nmap.
### Scan a single ip address ###
nmap 192.168.1.1
## Scan a host name ###
nmap server1.cyberciti.biz
## Scan a host name with more info###
nmap -v server1.cyberciti.biz
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)
Также см. Отпечатки веб-сервера и инструменты командной строки DNS-сервера для получения дополнительной информации.
18. Как определить номера версий удаленных служб (сервера / демона)?
Откройте терминал и введите следующую команду nmap:
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.
19. Сканирование хоста с помощью TCP ACK (PA) и TCP Syn (PS) ping.
Если брандмауэр блокирует стандартные запросы 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
20. Сканирование хоста с помощью пинга по IP-протоколу.
nmap -PO 192.168.1.1
21. Сканирование хоста с помощью UDP ping.
Это сканирование обходит брандмауэры и фильтры, которые проверяют только TCP:
nmap -PU 192.168.1.1
nmap -PU 2000.2001 192.168.1.1
22. Узнайте наиболее часто используемые TCP-порты с помощью TCP SYN Scan.
### Stealthy scan ###
nmap -sS 192.168.1.1
### Find out the most commonly used TCP ports using TCP connect scan (warning: no stealth scan)
### OS Fingerprinting ###
nmap -sT 192.168.1.1
### Find out the most commonly used TCP ports using TCP ACK scan
nmap -sA 192.168.1.1
### Find out the most commonly used TCP ports using TCP Window scan
nmap -sW 192.168.1.1
### Find out the most commonly used TCP ports using TCP Maimon scan
nmap -sM 192.168.1.1
23. Сканировать хост на наличие служб UDP (сканирование UDP).
Большинство популярных сервисов в Интернете работают по протоколу TCP. DNS, SNMP и DHCP — три наиболее распространенных сервиса UDP. Используйте следующий синтаксис, чтобы узнать службы UDP:
nmap -sU nas03
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
24. Сканирование IP-протокола.
Этот тип сканирования позволяет определить, какие IP-протоколы (TCP, ICMP, IGMP и т. д.) поддерживаются целевыми машинами:
nmap -sO 192.168.1.1
25. Сканируйте брандмауэр на наличие слабых мест в системе безопасности.
Следующие типы сканирования используют тонкую лазейку в TCP и подходят для тестирования безопасности распространенных атак:
## TCP Null Scan to fool a firewall to generate a response ##
## Does not set any bits (TCP flag header is 0) ##
nmap -sN 192.168.1.254
## TCP Fin scan to check firewall ##
## Sets just the TCP FIN bit ##
nmap -sF 192.168.1.254
## TCP Xmas scan to check firewall ##
## Sets the FIN, PSH, and URG flags, lighting the packet up like a Christmas tree ##
nmap -sX 192.168.1.254
Узнайте, как с помощью iptables блокировать рождественские пакеты, синхронные флуды и другие мошеннические атаки.
26. Сканировать брандмауэр на наличие фрагментов пакетов.
Параметр -f
заставляет запрошенное сканирование (включая сканирование ping) использовать крошечные фрагментированные IP-пакеты. Идея состоит в том, чтобы разделить заголовок TCP на несколько пакетов, чтобы фильтрам пакетов, системам обнаружения вторжений и другим неприятностям было сложнее обнаружить то, что вы делаете.
nmap -f 192.168.1.1
nmap -f fw2.nixcraft.net.in
nmap -f 15 fw2.nixcraft.net.in
## Set your own offset size with the --mtu option ##
nmap --mtu 32 192.168.1.1
27. Замаскируйте сканирование с помощью ловушек.
Параметр -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
28. Сканирование брандмауэра на предмет подмены MAC-адресов.
### Spoof your MAC address ##
nmap --spoof-mac MAC-ADDRESS-HERE 192.168.1.1
### Add other options ###
nmap -v -sT -PN --spoof-mac MAC-ADDRESS-HERE 192.168.1.1
### Use a random MAC address ###
### The number 0, means nmap chooses a completely random MAC address ###
nmap -v -sT -PN --spoof-mac 0 192.168.1.1
29. Как сохранить вывод в текстовый файл?
Синтаксис:
nmap 192.168.1.1 > output.txt
nmap -oN /path/to/filename 192.168.1.1
nmap -oN output.txt 192.168.1.1
30.Сканирует веб-серверы и направляет в Nikto для сканирования.
nmap -p80 192.168.1.2/24 -oG - | /path/to/nikto.pl -h -
nmap -p80,443 192.168.1.2/24 -oG - | /path/to/nikto.pl -h -
31. Ускорьте Nmap
Передайте опцию -T
команде nmap:
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)
32. Не любите инструменты командной строки namp?
До сих пор мы видели примеры команд Nmap с использованием параметров командной строки Linux и Unix. Однако не всем нравится CLI. Следовательно, мы можем использовать приложение с графическим интерфейсом под названием Zenmap.
Zenmap — это официальный графический интерфейс сканера безопасности Nmap. Это мультиплатформенное (Linux, Windows, Mac OS X, BSD и т. Д.) Бесплатное приложение с открытым исходным кодом, цель которого — упростить использование Nmap для новичков и предоставить расширенные функции для опытных пользователей Nmap. Часто используемые отсканированные изображения можно сохранять в виде профилей, чтобы упростить их повторный запуск. Создатель команд позволяет интерактивно создавать командные строки Nmap. Результаты сканирования можно сохранить и просмотреть позже. Сохраненные результаты сканирования можно сравнить друг с другом, чтобы увидеть, чем они отличаются. Результаты недавних сканирований хранятся в базе данных с возможностью поиска.
Вы можете установить zenmap, используя следующую команду apt-get или команду apt:
$ sudo apt-get install zenmap
Примеры результатов:
[sudo] password for vivek:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
zenmap
0 upgraded, 1 newly installed, 0 to remove and 11 not upgraded.
Need to get 616 kB of archives.
After this operation, 1,827 kB of additional disk space will be used.
Get:1 http://debian.osuosl.org/debian/ squeeze/main zenmap amd64 5.00-3 [616 kB]
Fetched 616 kB in 3s (199 kB/s)
Selecting previously deselected package zenmap.
(Reading database ... 281105 files and directories currently installed.)
Unpacking zenmap (from .../zenmap_5.00-3_amd64.deb) ...
Processing triggers for desktop-file-utils ...
Processing triggers for gnome-menus ...
Processing triggers for man-db ...
Setting up zenmap (5.00-3) ...
Processing triggers for python-central ...
Введите следующую команду, чтобы запустить zenmap:
$ sudo zenmap
Примеры выходных данных:
Рис.02: zenmap в действии
Как обнаружить и заблокировать сканирование портов на серверах Linux и Unix / BSD?
Попробуйте следующие ресурсы:
- Как использовать инструмент psad для обнаружения и блокировки атак сканирования портов в реальном времени.
- Debian / Ubuntu Linux: установка и настройка брандмауэра Shoreline (Shorewall).
- Руководство по настройке брандмауэра CentOS / Redhat Iptables.
- Linux: 20 примеров Iptables для новых системных администраторов.
- 20 советов по усилению безопасности Linux Server.
Заключение
В этом руководстве вы узнали о команде Nmap с множеством примеров для Linux и использования с различными примерами. Также проверьте справочную страницу команды nmap с помощью команды man:
man nmap
Для получения дополнительной информации см. Следующие ресурсы:
- Официальная домашняя страница проекта Nmap здесь.
У команды Nmap есть много других опций, и, пожалуйста, просмотрите страницу руководства или документацию для получения дополнительной информации. Какие уловки командной строки Nmap вам нравятся больше всего? Поделитесь своими любимыми советами, хитростями и советами в комментариях ниже.