nmap теория и практика использования для сканирования сети

  • Что такое nmap вкратце проще всего посмотреть через whatis 😉
~$ whatis nmap
nmap (1) - Network exploration tool and security / port scanner
ОПЦИИ

УСКОРЕНИЕ

  • ZMap – в случае необходимости сканов “Internet-wide”. Им пользуются хакеры в том числе.
The ZMap Project is a collection of open source tools that enable researchers to perform large-scale studies of the hosts and services that compose the public Internet. 

ZMap is a fast single-packet network scanner optimized for Internet-wide network surveys. On a computer with a gigabit connection, ZMap can scan the entire public IPv4 address space in under 45 minutes. With a 10gigE connection and PF_RING, ZMap can scan the IPv4 address space in 5 minutes.

-T[1-5] – опция с номером позволяет регулировать скорость работы nmap.

Ускорение достигается путем увеличения количество потоков обработки, уменьшения групп в каждом потоке, уменьшением времени ожидания ответа, уменьшением времени задержки между сканами. Каждый из этих параметров можно крутить вручную или использовать предшаблоны -T1 – T5.

Options which take <time> are in seconds, or append 'ms' (milliseconds),
's' (seconds), 'm' (minutes), or 'h' (hours) to the value (e.g. 30m).
-T<0-5>: Set timing template (higher is faster)
--min-hostgroup/max-hostgroup <size>: Parallel host scan group sizes
--min-parallelism/max-parallelism <numprobes>: Probe parallelization
--min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <time>: Specifies
probe round trip time.
--max-retries <tries>: Caps number of port scan probe retransmissions.
--host-timeout <time>: Give up on target after this long
--scan-delay/--max-scan-delay <time>: Adjust delay between probes
--min-rate <number>: Send packets no slower than <number> per second
--max-rate <number>: Send packets no faster than <number> per second

Чем выше номер, тем быстрее работа, но меньше надежность результата (высокая задержка может посчитаться как полное отсутствие ответа). Крайне желательно использовать T4/T5 если в скане предвидится большое количество неотвечающих устройств (например, полный скан сетей) т.к. в опциях предусмотрено уменьшение таймаута ожидания ответа.

$ nmap -sP 192.168.0.0/24
Nmap done: 256 IP addresses (0 hosts up) scanned in 52.06 seconds
$ nmap -T4 -sP 192.168.0.0/24
Nmap done: 256 IP addresses (0 hosts up) scanned in 26.03 seconds
nmap -T5 -sP 192.168.0.0/24
Nmap done: 256 IP addresses (0 hosts up) scanned in 13.02 seconds

К примеру, сеть /8 с более чем 16 млн. адресов при использовании опции -T5 можно опросить в относительно быстрые 64 часа (менее трех суток).

/usr/bin/nmap -T5 -sP 10.0.0.0/8 | grep "scan report for" | awk '{print $NF}'

Если нужен многопоточный скан нескольких сетей одновременно средствами bash – см. xargs. Схема классическая – делаем скрипт для одной сети/одного IP (с любым из сканов представленных ниже, например), далее делаем список сетей/IP, открываем его через cat и натравляем скрипт через xargs.

cat nets | xargs -n 1 -I ^ -P 10 bin/test.sh ^
Порты

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

  • Open – порт на конечном хосте открыт, приложение слушает порт.
  • Closed – порт на конечном хосте доступен, но его не слушает никакое приложение.
  • Filtered – файрволл блокирует порт, Nmap неизвестно открыт порт или закрыт.

nmap <ip/net> – без опций сканирует 1-1024 порты + ~2400 портов известных как nmap-services в файле /etc/services.

The default is to scan all ports between 1 and 1024 as well as any ports listed in the services file which comes with nmap.
~$ grep " [1-9]/" /etc/services | head -5
tcpmux 1/tcp # TCP port service multiplexer
tcpmux 1/udp # TCP port service multiplexer
rje 5/tcp # Remote Job Entry
rje 5/udp # Remote Job Entry
echo 7/tcp
~$ nmap 80.87.194.88
Starting Nmap 6.40 ( http://nmap.org ) at 2016-10-19 23:35 MSK
Nmap scan report for weril.me (80.87.194.88)
Host is up (0.50s latency).
Not shown: 997 filtered ports
PORT STATE SERVICE
22/tcp closed ssh
80/tcp open http
443/tcp open https
Nmap done: 1 IP address (1 host up) scanned in 72.98 seconds

nmap -F <ip/net> – Fast Scan Mode – сканирует только ~2400  портов известных как nmap-services в файле /etc/services, не сканируя 1-1024 порты.

Specifies that you only wish to scan for ports listed in the services file which comes with nmap (or the protocols file for -sO). This is obviously much faster than scanning all 65535 ports on a host.
~$ nmap -F 80.87.194.88
Starting Nmap 6.40 ( http://nmap.org ) at 2016-10-19 23:35 MSK
Nmap scan report for weril.me (80.87.194.88)
Host is up (0.071s latency).
Not shown: 97 filtered ports
PORT STATE SERVICE
22/tcp closed ssh
80/tcp open http
443/tcp open https
Nmap done: 1 IP address (1 host up) scanned in 7.28 seconds
nmap -F –oG – <ip/net> – Grepable Output – способ представления результата, который позволяет отфильтровать результат через grep и аналоги (результат содержит IP и состояние в одной строке). Судя по ману deprecated и лучше использовать xml.
~$ nmap -F -oG - 80.87.194.88
# Nmap 6.40 scan initiated Sun Oct 23 01:55:14 2016 as: nmap -F -oG - 80.87.194.88
Host: 80.87.194.88 (weril.me) Status: Up
Host: 80.87.194.88 (weril.me) Ports: 22/closed/tcp//ssh///, 80/open/tcp//http///, 443/open/tcp//https/// Ignored State: filtered (97)
# Nmap done at Sun Oct 23 01:55:29 2016 -- 1 IP address (1 host up) scanned in 14.12 seconds

nmap -PN <ip/net> – проверяет доступность портов без предварительной проверки доступности хоста (не пингует).

-PN: Treat all hosts as online -- skip host discovery
By default, Nmap only performs heavy probing such as port scans, version detection, or OS detection against hosts that are found to be up. Disabling host discovery with –PN causes Nmap to attempt the requested scanning functions against every target IP address specified.
nmap -PN -p <port/list> <ip/net> – сканируем конкретный порт/список портов на IP/сети. Можно указать последовательность портов через запятую [80,443,3389], диапазон портов через дефиз [1-2] или все порты через [“*”].
~$ nmap -p 80,443,3389 80.87.194.88
Starting Nmap 6.40 ( http://nmap.org ) at 2016-10-24 01:13 MSK
Nmap scan report for weril.me (80.87.194.88)
Host is up (0.029s latency).
PORT STATE SERVICE
80/tcp open http
443/tcp open https
3389/tcp filtered ms-wbt-server
Nmap done: 1 IP address (1 host up) scanned in 0.22 seconds

~$ nmap -T5 -PN -p 80 -oG - 80.87.194.88 | awk '/open/{print $2}'
# Nmap 6.40 scan initiated Sun Oct 23 02:04:11 2016 as: nmap -T5 -PN -p 80 -oG - 80.87.194.88
Host: 80.87.194.88 (weril.me) Status: Up
Host: 80.87.194.88 (weril.me) Ports: 80/open/tcp//http///
# Nmap done at Sun Oct 23 02:04:11 2016 -- 1 IP address (1 host up) scanned in 0.14 seconds
Доступность

sudo nmap -sT -sU login.p1.worldoftanks.eu # scan TCP/UDP портов

sudo nmap -sU 78.107.63.120 -p 69 # scan UDP портов

nmap -sP <ip/net> – если нужно выгрузить список IP из результата nmap можно так же как с портами использовать опцию -oG, либо проще отфильтровать левые строки через grep/awk. Разницы в скорости никакой, поэтому использовал второй способ.
nmap -T5 -sP -oG - 192.168.10.0/25 | sed '1d' | sed '$d' | awk '{print $2}' 
nmap -T5 -sP 192.168.10.0/25 | grep "scan report for" | awk '{print $NF}'
nmap -sP -PA23 <ip/net> – функция nmap -sP помимо ICMP по умолчанию проверяет доступность 80-го порта по TCP ACK. В некоторых случаях этот порт может быть зафильтрован и нужно использовать другой как workaround. Мы так столкнулись с ZTE-5928 и использовали вместо 80-го порта 23-й.
The -sP option sends an ICMP echo request and a TCP ACK packet to port 80 by default.

nmap –sP -iL <file_name> – cкан с текстового файла file_name c IP адресами устройств/подсетями. Показывает только живые IP адреса. Причем формат записи не важен, IP/сети могут идти в колонку, в строку или подряд.

  -iL <inputfilename>: Input from list of hosts/networks

~$ cat >sw
10.8.167.165
10.8.152.156 10.8.152.158 10.8.152.159 10.8.152.157
10.8.238.36 10.8.238.34
10.8.4.179/29

~$ nmap -sP -iL sw
Starting Nmap 6.40 ( http://nmap.org ) at 2016-10-24 01:05 MSK
Nmap scan report for 10.8.167.165
Host is up (0.0041s latency).
Nmap scan report for 10.8.152.156
Host is up (0.0025s latency).
Nmap scan report for 10.8.152.158
Host is up (0.0021s latency).
Nmap scan report for 10.8.152.159
Host is up (0.0024s latency).
Nmap scan report for 10.8.152.157
Host is up (0.0035s latency).
Nmap scan report for 10.8.238.36
Host is up (0.0019s latency).
Nmap scan report for 10.8.238.34
Host is up (0.0019s latency).
Nmap scan report for 10.8.4.176
Host is up (0.0037s latency).
Nmap scan report for 10.8.4.177
Host is up (0.0036s latency).
Nmap scan report for 10.8.4.178
Host is up (0.0033s latency).
Nmap scan report for 10.8.4.179
Host is up (0.0026s latency).
Nmap scan report for 10.8.4.180
Host is up (0.0027s latency).
Nmap scan report for 10.8.4.181
Host is up (0.0025s latency).
Nmap done: 15 IP addresses (13 hosts up) scanned in 1.29 seconds

ОС

nmap -0 <ip> – определение операционки

Leave a Reply