Nmap — свободная утилита, предназначенная для разнообразного настраиваемого сканирования IP-сетей с любым количеством объектов, определения состояния объектов сканируемой сети (портов и соответствующих им служб). Можно сказать просто культовая утилита которая развивается уже на протяжение 20 лет. Ну что ж , начнем разбираться и пробовать .
root@debian:~# apt-get install nmap
Магия начинается с простой команды:
root@debian:~# nmap 192.168.0.1
Выполненным под root он полностью берет на себя формирование пакетов и управление соединение. Nmap посылает SYN, машина отвечает SYN/ACK, Nmap посылает FIN закрывая полуоткрытое соединение. Это называется TCP SYN сканирование. Отбрасывание пакеты SYN без SYN/ACK или FIN помогает сканеру определитель брандмауэр(Not shown: 998 filtered ports).
Starting Nmap 6.47 ( http://nmap.org ) at 2017-06-20 21:56 MSK Host is up (0.20s latency). Not shown: 998 filtered ports PORT STATE SERVICE 21/tcp open ftp 80/tcp open http Nmap done: 1 IP address (1 host up) scanned in 26.83 seconds
Nmap по умолчанию сканируете только системные порты с 0 по 1000. Конечно мы не увидим здесь нестандартные порты выходящие за 1000. Давайте расширим диапазон префиксом -p:
root@debian:~# nmap -p 1-3000 192.168.0.1
Starting Nmap 6.47 ( http://nmap.org ) at 2017-06-20 21:56 MSK Host is up (0.44s latency). Not shown: 2997 filtered ports PORT STATE SERVICE 21/tcp open ftp 80/tcp open http 2223/tcp open unknown Nmap done: 1 IP address (1 host up) scanned in 106.75 seconds
Как мы видим появился порт 2223 правда unknown и время выросло до 107 секунд. Правда мы можем ускориться. Nmap умеет сканировать с разной скоростью, опция T0-T5.
- T0 отключает многопоточное сканирование и ставит интервал между сканированием порта 5 минут. Возможно это вас спасет от обнаружения сканирования, тем более что порты сканируются в случайном порядке.
- T1 задержка 15 секунд.
- T2 задержка 0.4 секунды.
- T3 задержка 10 миллисекунд, дефолтное значение.
- T4 задержка 5 миллисекунд.
- T5 самый агрессивный режим.
root@debian:~# nmap -p 1-3000 -T4 192.168.0.1
Nmap scan report for semen1.trololo.fvds.ru (82.146.61.182) Host is up (0.48s latency). Not shown: 2997 filtered ports PORT STATE SERVICE 21/tcp open ftp 80/tcp open http 2223/tcp open unknown Nmap done: 1 IP address (1 host up) scanned in 101.17 seconds
Так же мы можем попытаться определить название и версию сервиса на порту опцией -sV. Все правила индификаций служб и их версии определены в файле /usr/share/nmap/nmap-service-probe.
root@debian:~# nmap -p 1-3000 -T4 -sV 192.168.0.1
Not shown: 2997 filtered ports PORT STATE SERVICE VERSION 21/tcp open ftp ProFTPD 1.3.5 80/tcp open http Apache httpd 2.4.10 2223/tcp open ssh OpenSSH 6.7p1 Debian 5+deb8u3 (protocol 2.0) Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel Service detection performed. Please report any incorrect results at http://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 44.89 seconds
Вот мы и узнали что за сервис на порту 2223 ))) И опять же это не все, давайте попробуем точнее определить версию и название ОС флагом -O. Файл где лежат образы /usr/share/nmap/nmap‐os‐db.
root@debian:~# nmap -p 1-3000 -T4 -O 192.168.0.1
Host is up (0.017s latency). Not shown: 2997 filtered ports PORT STATE SERVICE 21/tcp open ftp 80/tcp open http 2223/tcp open unknown Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port Device type: general purpose Running: Linux 3.X OS CPE: cpe:/o:linux:linux_kernel:3 OS details: Linux 3.11 - 3.14
Повторим натиск с более детальным исследованием опцией -A.
root@debian:~# nmap -p 1-3000 -T4 -A 192.168.0.1
Host is up (0.015s latency). Not shown: 2997 filtered ports PORT STATE SERVICE VERSION 21/tcp open ftp ProFTPD 1.3.5 | ssl-cert: Subject: organizationName=linuxblog/stateOrProvinceName=ru/countryName=ru | Not valid before: 2017-06-16T20:14:40+00:00 |_Not valid after: 2018-06-16T20:14:40+00:00 |_ssl-date: 2011-09-22T21:18:41+00:00; -5y270d22h51m27s from local time. 80/tcp open http Apache httpd 2.4.10 |_http-title: Apache2 Debian Default Page: It works 2223/tcp open ssh OpenSSH 6.7p1 Debian 5+deb8u3 (protocol 2.0) |_ssh-hostkey: ERROR: Script execution failed (use -d to debug) Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port Device type: general purpose Running: Linux 3.X OS CPE: cpe:/o:linux:linux_kernel:3 OS details: Linux 3.11 - 3.14 Network Distance: 9 hops Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel
Немного запутаем следа как зайцы! Флаг -D позволяет нам запустить несколько потоков с разными ip адресами, среди которых будет только один настоящий:
root@debian:~# nmap -p 1-3000 -T4 -D адрес1,адрес2,адрес3 192.168.0.1
Или заполнить этот параметр рендомно,в данном случае 10 IP:
root@debian:~# nmap -p 1-3000 -T4 -D RND:10 192.168.0.1
Вам совершенно не кто не мешает использовать не стандартные пакеты для сканирования, что может помочь определить брандмауер. Пакеты без единого флага( -sN ), FIN пакеты ( -sF ), Xmas пакеты содержащие флаг FIN, PSH и URG( -sX ). Или использовать ACK-сканирование -sA:
root@debian:~# nmap -p 1-3000 -T4 -sA 192.168.0.1
Host is up (0.012s latency). Not shown: 2997 filtered ports PORT STATE SERVICE 21/tcp unfiltered ftp 80/tcp unfiltered http 2223/tcp unfiltered unknown
Nmap done: 1 IP address (1 host up) scanned in 37.56 seconds
Одна из фишек Nmap возможность определения хостов и очень быстро в большой сети. По умолчанию перед сканирование портов Nmap посылает несколько пакетов что бы убедиться в доступности хоста:
- ICMP Echo request — аналог того, как работает ping;
- SYN‐пакет на порт 443;
- ACK‐пакет на порт 80;
- ICMP timestamp request.
Но фишка не в этом ,а в возможности отключить сканирование портов опцией -sn:
root@debian:~# nmap -sn 192.168.0.1-255
root@debian:~# nmap -sn 192.168.0.1.*
Или целую подсеть:
root@debian:~# nmap -sn 192.168.0.0/24
Или записать необходимые адреса в файл и указать к нему путь:
root@debian:~# nmap -sn -iL /путь/до файла
Самих техник пингования Nmap поддерживает много, например можно указать порт и пакет для определения хоста:
- SYN пакет на порт 80 > -PS80;
- ACK пакет на порт 80 > -PA80;
- UDP пакет на порт 53 > -PU53;
- ICMP Echo request >-PE;
- ICMP timestamp request > -PP;
Так же можно их комбинировать:
root@debian:~# nmap -sn -PE -PS443 -PA80 -PP 192.168.0.0/24
Относительно новая фишка Nmap это поддержка скриптов расшивающую функциональность сканера. В базовом комплекте их очень много на все случаи жизни , даже для брутфорса. Сами скрипты , вместе с описанием расположены /usr/share/nmap/scripts. Для примера попробуем http‐enum выполняющий дирбастинг HTTP‐сервера:
root@debian:~# nmap ‐p80 ‐‐script «http‐enum» 192.168.0.1
Host is up (0.012s latency). PORT STATE SERVICE 80/tcp open http | http-enum: |_ /phpmyadmin/: phpMyAdmin Nmap done: 1 IP address (1 host up) scanned in 3.40 seconds
Мы с вами рассмотрели только чать самых полезных функций. Например можно запустить сразу целую группу скриптов раздела html:
root@debian:~# nmap ‐p80 ‐‐script «http‐*» 192.168.0.1
Так же можно выводить все результаты в файл:
root@debian:~# nmap ‐p80 ‐‐script «http‐*» -oN <file> 192.168.0.1
- -oN обычный формат,
- -oX XML формат,
- -oG Grepable форма.
Если вы хотите рассказать о каких то полезных хитростях для более опытных пользователей, мы с удовольствием опубликуем вашу статью ))) Удачи….