Уроки по Nmap. Урок 2: Примеры сбора информации скриптами NSE

Смотрите также: «Уроки по Nmap. Урок 1: Для чего нужен Nmap, что нового в версии 7, примеры опций»

Если вы используете Nmap, то весьма вероятно, что скрипты NSE работали для вас даже если вы их явно не запускали. Скрипты NSE используются, например, когда вы с помощью Nmap определяете версию удалённой службы или ОС.

Данная заметка не является исчерпывающим руководством по использованию скриптов Nmap или по сбору информации. Она содержит несколько примеров сбора информации, которые позволят вам не только узнать открытые порты и запущенные на них службы, но и, например, выявить в подсети FTP-серверы, позволяющие анонимный вход, серверы MySQL, позволяющие вход с пустым паролем для рута или анонима и автоматизировать сбор других сведений.

Эти NSE скрипты включены в стандартную установку Nmap. Используйте их для сбора дополнительной информации по целям, которые вы сканируете. Эта информация может добавить контекст к хостам, которые вы сканируете, и расширить направление атак на системы, которые вы оцениваете.

Небольшое предупреждение, здесь я писал про «Анонимные сканирования с Nmap, sqlmap и WPScan через Tor». Информация из той статьи не распространяется на скрипты NSE. Т.е. использовать эти (и другие) скрипты NSE нужно в отношении тестовых сетей, по разрешению, либо с предварительной тщательной проверкой рисков деанонимизации.

0. Составление диапазонов IP для сканирования

Есть целая статья по этому вопросу «Как узнать все IP провайдера, города, региона (области, республики) или страны», а также онлайн реализация всех описанных в той статье методов: https://suip.biz/ru/. Поэтому предположим, что диапазоны IP вы уже составили, и переходим к делу.

1. Поиск FTP серверов с анонимным входом

FTP с анонимным входом позволяют читать, а иногда и даже записывать данные на этих серверах без авторизации. Для автоматизации поиска можно воспользоваться скриптом ftp-anon. Получим информацию об этом скрипте:

nmap --script-help ftp-anon
  • Категория: default auth safe
  • Ссылка на сайт: https://nmap.org/nsedoc/scripts/ftp-anon.html
  • Описание: проверяет, разрешает ли FTP сервер анонимный вход. Если анонимы разрешены, получает список корневой директории и подсвечивает исполнимые файлы.

Портом FTP по умолчанию является 21. Мы не будем сканировать другие диапазоны в целях поиска FTP на нестандартных портах. Я исхожу из следующей логики — если администратор догадался перенести FTP на другой порт, то он точно не оставил анонимный вход. Сканирование только одного порта позволит нам сильно сэкономить время.

Поэтому к нашей команде мы добавляем -p 21. Добавим ключ -n — запрет DNS преобразований, это должно также помочь сэкономить время. По умолчанию скрипт ftp-anon не применяется при сканировании, нам нужно указать его явно, это мы делаем с --script "ftp-anon". И, наконец, нам нужно указать файл с IP. Это делается опцией -iL, в моём случае файл называется ftp.ip2. Итак, полная команда приобретает вид:

sudo nmap -p 21 -n --script "ftp-anon" -iL ftp.ip2

Примеры вывода для удачных находок:

Nmap scan report for 5.50.176.104
Host is up (0.11s latency).
PORT   STATE SERVICE
21/tcp open  ftp
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
| drwxrwxrwx  27 guest    administrators     4096 Nov 21 12:20 FILMS [NSE: writeable]
| drwxrwxrwx   9 guest    administrators     4096 Oct  9 18:58 Qmultimedia [NSE: writeable]
| drwxrwxrwx   7 guest    administrators     4096 Nov 11 12:18 home [NSE: writeable]
|_drwxrwxrwt   9 guest    administrators     4096 Jul 27 20:47 homes [NSE: writeable]

Т.е. нам не только открыт доступ на этот сервер, но даже предоставлено право на запись. Также мы видим, что на сервере присутствуют каталоги FILMS, Qmultimedia, home, homes.

Ещё один (без прав на запись):

Nmap scan report for 5.135.27.224
Host is up (0.057s latency).
PORT   STATE SERVICE
21/tcp open  ftp
|_ftp-anon: Anonymous FTP login allowed (FTP code 230)

И ещё один с правами на запись:

Nmap scan report for 1.36.226.252
Host is up (0.17s latency).
PORT   STATE SERVICE
21/tcp open  ftp
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_drwxrwxrwx  13 0        0            4096 Nov  2 14:13 Public [NSE: writeable]

В целом, вывод выглядит примерно так:

07

Там много ненужной информации, которую можно отфильтровать. Обратите внимание, что для FTP кодом удачного входа является 230, т. е. каждый блок, где есть FTP с анонимным входом, имеет строку 'FTP code 230', поэтому мы может отфильтровать их, добавив к нашей исходной команде | grep -E -A 10 'FTP code 230', в моём случае получается так:

sudo nmap -p 21 -n --script "ftp-anon" -iL ftp.ip2 | grep -E -A 10 'FTP code 230'

Чтобы ускорить процесс, можно составить список IP с помощью сканирования программой Masscan.

Например, я хочу просканировать все IP из файла с названием australia.ip, меня интересует только 21 порт, я ставлю ограничение на скорость сканирования --rate=500 и хочу сохранить результаты в файл ftp.ip, тогда моя команда приобретает вид:

sudo masscan -iL australia.ip -p 21 --rate=500 -oL ftp.ip

В файле ftp.ip Masscan сохраняет результаты с открытыми портами в таком формате:

open tcp 21 12.145.187.41 1479829377
open tcp 21 12.188.102.210 1479829377
open tcp 21 14.200.177.76 1479829377
open tcp 21 14.200.183.236 1479829382
open tcp 21 13.75.155.190 1479829382
open tcp 21 12.145.191.78 1479829383
open tcp 21 12.227.189.231 1479829384
open tcp 21 14.200.61.37 1479829388
open tcp 21 14.200.115.30 1479829389
open tcp 21 14.2.20.246 1479829397
.....................................
.....................................
.....................................
.....................................

08

Чтобы выбрать их них только IP, можно использовать программу Awk:

awk '{ print $4 }' ftp.ip

09

Отлично, сохраняем очищенные IP в файл ftp.ip2:

awk '{ print $4 }' ftp.ip > ftp.ip2

А теперь запускаем ту команду, с которой начили:

sudo nmap -p 21 -n --script "ftp-anon" -iL ftp.ip2

Кстати, функциональность скрипта ftp-anon довольно легко эмулировать в программах для онлайн брутфорса. Например, в patator это делается примерно так так:

patator ftp_login host=FILE0 user=anonymous password=test@example.com 0=ftp.ip2

Результат:

06

Если вам нужны только подходящие данные, т. е. чтобы выводились только те FTP сервера, где разрешён анонимный вход, то в patator можно намного более гибко настроить вывод результатов как по возвращаемому коду, так и разнообразным другим параметрам.

Скрипт необязательно применять на диапазоны сетей, можно точечно сканировать отдельные хосты:

04

05

2. Поиск MySQL серверов, позволяющий вход root без пароля или анонимный вход

Для этого имеется скрипт mysql-empty-password:

nmap --script-help mysql-empty-password

Работа с ним в точности аналогична работе с ftp-anon, но нужно использовать другой порт.

Я не могу навскидку вспомнить порт MySQL сервера, поэтому воспользуюсь утилиткой Whatportis:

sudo whatportis mysql
+-------+------+----------+-------------+
| Name  | Port | Protocol | Description |
+-------+------+----------+-------------+
| mysql | 3306 |   tcp    | MySQL       |
| mysql | 3306 |   udp    | MySQL       |
+-------+------+----------+-------------+

Т.е. интересующий меня порт, на котором по умолчанию работают сервера MySQL, это 3306.

Далее всё аналогично (я выполняю предварительное сканирование с Masscan):

sudo masscan -iL australia.ip -p 3306 --rate=500 -oL mysql.ip
awk '{ print $4 }' mysql.ip > mysql.ip2
sudo nmap -p 3306 -n --script "mysql-empty-password" -iL mysql.ip2

3. Брутфорс DNS

Скрипт dns-brute пытается перечислить DNS имён хостов, делая запросы по распространённым поддоменам. Обнаружение поддоменов, связанных с доменом организации, во время оценки безопасности может раскрыть новые цели. Обнаруженные хосты могут быть виртуальными веб-хостами на одном веб-сервере или могут являться отдельными хостами на своих собственных IP адресах, разбросанными в мире по различным датацентрам.

Скрипт dns-brute найдёт действительные DNS (A) записи, перебирая список распространённых поддоменов и находя те, которые успешно преобразовываются.

sudo nmap -p 80 --script "dns-brute" digitalocean.com

Starting Nmap 7.31 ( https://nmap.org ) at 2016-11-23 10:25 MSK
Nmap scan report for digitalocean.com (104.16.77.125)
Host is up (0.017s latency).
Other addresses for digitalocean.com (not scanned): 104.16.78.125 104.16.79.125 104.16.80.125 104.16.81.125
PORT   STATE SERVICE
80/tcp open  http

Host script results:
| dns-brute: 
|   DNS Brute-force hostnames: 
|     info.digitalocean.com - 192.28.144.201
|     news.digitalocean.com - 192.28.144.201
|     ns1.digitalocean.com - 173.245.58.51
|     ns1.digitalocean.com - 2400:cb00:2049:1:0:0:adf5:3a33
|     ns2.digitalocean.com - 173.245.59.41
|     ns2.digitalocean.com - 2400:cb00:2049:1:0:0:adf5:3b29
|     ns3.digitalocean.com - 198.41.222.173
|     ns3.digitalocean.com - 2400:cb00:2049:1:0:0:c629:dead
|     beta.digitalocean.com - 104.16.79.125
|     beta.digitalocean.com - 104.16.77.125
|     beta.digitalocean.com - 104.16.78.125
|     beta.digitalocean.com - 104.16.81.125
|     beta.digitalocean.com - 104.16.80.125
|     blog.digitalocean.com - 104.16.79.125
|     blog.digitalocean.com - 104.16.80.125
|     blog.digitalocean.com - 104.16.81.125
|     blog.digitalocean.com - 104.16.78.125
|     blog.digitalocean.com - 104.16.77.125
|     mail.digitalocean.com - 69.55.54.152
|     www.digitalocean.com - 104.16.25.4
|     www.digitalocean.com - 104.16.24.4
|_    stage.digitalocean.com - 198.211.104.187

Nmap done: 1 IP address (1 host up) scanned in 16.83 seconds

4. Поиск хостов на одном IP

Другая тактика по расширению площади атаки — это поиск виртуальных хостов на одном IP адресе, который вы пытаетесь скомпрометировать (или оценить). Это может быть сделано с использованием скриптов hostmap-*. На данный момент в NSE коллекции таких скриптов три: hostmap-bfk, hostmap-ip2hosts, hostmap-robtex. Они различаются источниками получаемых данных, следовательно, и точностью результатов. Хотя скрипт hostmap-bfk оценивался некоторыми исследователями по качеству результатов выше других, у меня он не работает. Примеры с двумя другими скриптами, 

hostmap-ip2hosts:

nmap -sn --script "hostmap-ip2hosts" spryt.ru

Starting Nmap 7.31 ( https://nmap.org ) at 2016-11-23 10:55 MSK
Nmap scan report for spryt.ru (62.113.208.234)
Host is up (0.068s latency).

Host script results:
| hostmap-ip2hosts: 
|   hosts: 
|     9jap.com
|     www.aegee-samara.org
|     undertale.ru
|     www.html-templates.info
|     anseo.ru
|     www.spryt.ru
|     spryt.ru
|     lindsi.ru
|     defoult.ru
|     videosaver.su
|     storyfinder.ru
|     licharts.ru
|     html-templates.info
|     giatsintov.ru
|     www.allasm.ru
|     ip-calculator.ru
|     allajax.ru
|_    miky.ru

Nmap done: 1 IP address (1 host up) scanned in 1.01 seconds

hostmap-robtex:

nmap -sn --script "hostmap-robtex" spryt.ru

Starting Nmap 7.31 ( https://nmap.org ) at 2016-11-23 10:55 MSK
Nmap scan report for spryt.ru (62.113.208.234)
Host is up (0.068s latency).

Host script results:
| hostmap-robtex: 
|   hosts: 
|     dzen.co
|     9jap.com
|     html-templates.info
|     aegee-samara.org
|     allajax.ru
|     allasm.ru
|     anseo.ru
|     defoult.ru
|     giatsintov.ru
|     lindsi.ru
|     miky.ru
|     spryt.ru
|     storyfinder.ru
|     zooey.ru
|     videosaver.su
|     www.html-templates.info
|     www.allajax.ru
|     *.anseo.ru
|     www.anseo.ru
|     www.giatsintov.ru
|     *.miky.ru
|     mail.miky.ru
|     www.miky.ru
|     *.spryt.ru
|     www.spryt.ru
|     www.storyfinder.ru
|_    appspot.com--1232660.jjwxc.net

Nmap done: 1 IP address (1 host up) scanned in 1.33 seconds

Как можно убедиться, результаты действительно несколько разняться, но имеется достаточно много пересекающихся записей.

5. Traceroute с геолокацией

Выполняет traceroute на ваш целевой IP адрес и на протяжении всего пути показывает геолокационные данные для каждого прыжка. Упрощает корреляцию обратных DNS имён роутеров на вашем пути с географическими расположениями. В качестве опции, сохраняет результаты в файл KML, по которому в Google Earth и Maps можно прочертить маршрут.

sudo nmap --traceroute --script "traceroute-geolocation" -p 80 samy.pl

Starting Nmap 7.31 ( https://nmap.org ) at 2016-11-23 11:06 MSK
Nmap scan report for samy.pl (72.14.179.47)
Host is up (0.18s latency).
rDNS record for 72.14.179.47: namb.la
PORT   STATE SERVICE
80/tcp open  http

Host script results:
| traceroute-geolocation: 
|   HOP  RTT     ADDRESS                                                GEOLOCATION
|   1    1.55    www.asusnetwork.net (192.168.0.1)                      - ,- 
|   2    6.29    100.100.0.1                                            0.000,0.000  ()
|   3    7.81    bras1-asbr2.elcom.ru (84.53.204.205)                   56.136,40.397 Russian Federation (Vladimir)
|   4    26.17   100.64.255.109                                         0.000,0.000  ()
|   5    18.26   100.64.4.1                                             0.000,0.000  ()
|   6    65.05   217.107.67.5                                           55.752,37.616 Russian Federation (Moscow)
|   7    76.45   bbr01.lon01.networklayer.com (195.66.225.183)          51.514,-0.093 United Kingdom (London)
|   8    143.18  ae1.bbr02.tl01.nyc01.networklayer.com (50.97.18.204)   32.930,-96.835 United States (Texas)
|   9    ...
|   10   ...
|   11   ...
|   12   195.46  ae33.bbr02.eq01.dal03.networklayer.com (50.97.17.55)   32.930,-96.835 United States (Texas)
|   13   182.25  ae6.dar01.dal06.networklayer.com (50.97.19.7)          32.930,-96.835 United States (Texas)
|   14   178.95  po61.dsr01.dllstx2.networklayer.com (184.172.118.139)  29.763,-95.363 United States (Texas)
|   15   184.69  po1.car02.dllstx2.networklayer.com (70.87.254.82)      29.763,-95.363 United States (Texas)
|   16   186.45  62.7.1243.static.theplanet.com (67.18.7.98)            29.763,-95.363 United States (Texas)
|   17   177.09  gw-h18.linode.com (173.255.207.1)                      39.490,-74.477 United States (New Jersey)
|_  18   183.64  namb.la (72.14.179.47)                                 39.490,-74.477 United States (New Jersey)

TRACEROUTE (using port 443/tcp)
HOP RTT       ADDRESS
1   1.55 ms   www.asusnetwork.net (192.168.0.1)
2   6.29 ms   100.100.0.1
3   7.81 ms   bras1-asbr2.elcom.ru (84.53.204.205)
4   26.17 ms  100.64.255.109
5   18.26 ms  100.64.4.1
6   65.05 ms  217.107.67.5
7   76.45 ms  bbr01.lon01.networklayer.com (195.66.225.183)
8   143.18 ms ae1.bbr02.tl01.nyc01.networklayer.com (50.97.18.204)
9   ... 11
12  195.46 ms ae33.bbr02.eq01.dal03.networklayer.com (50.97.17.55)
13  182.25 ms ae6.dar01.dal06.networklayer.com (50.97.19.7)
14  178.95 ms po61.dsr01.dllstx2.networklayer.com (184.172.118.139)
15  184.69 ms po1.car02.dllstx2.networklayer.com (70.87.254.82)
16  186.45 ms 62.7.1243.static.theplanet.com (67.18.7.98)
17  177.09 ms gw-h18.linode.com (173.255.207.1)
18  183.64 ms namb.la (72.14.179.47)

Nmap done: 1 IP address (1 host up) scanned in 7.31 seconds
[mial@HackWare ~]$ nmap --script-help traceroute-geolocation

Starting Nmap 7.31 ( https://nmap.org ) at 2016-11-23 11:09 MSK

traceroute-geolocation
Categories: safe external discovery
https://nmap.org/nsedoc/scripts/traceroute-geolocation.html
  Lists the geographic locations of each hop in a traceroute and optionally
  saves the results to a KML file, plottable on Google earth and maps.

6. Поиск интересных файлов на веб-сервере (веб-сайте)

Это более агрессивный тест. Он пытается найти интересные файлы и каталоги на веб-сервере. Поскольку это осуществляется обычным перебором популярных названий, то он оставляет много следов в веб-логах сервера. Они выглядят как сообщения об ошибках при попытке доступа к несуществующим файлам и каталогам (HTTP 404 not found).

sudo nmap --script "http-enum" spryt.ru

Starting Nmap 7.31 ( https://nmap.org ) at 2016-11-23 11:18 MSK
Nmap scan report for spryt.ru (62.113.208.234)
Host is up (0.076s latency).
Not shown: 997 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh
80/tcp  open  http
| http-enum: 
|   /wp-login.php: Possible admin folder
|   /robots.txt: Robots file
|   /phpinfo.php: Possible information file
|_  /phpmyadmin/: phpMyAdmin
443/tcp open  https

Nmap done: 1 IP address (1 host up) scanned in 192.82 seconds
[mial@HackWare ~]$ sudo nmap --script "http-enum" alexblack.wtf

Starting Nmap 7.31 ( https://nmap.org ) at 2016-11-23 11:21 MSK

Ещё один пример, в нём видны как интересные результаты (директория с phpmyadmin, директории с листингами upload и news), так и ложные срабатывания (net является частью ЧПУ, а не реальной директорией):

sudo nmap --script "http-enum" prostolinux.ru

Starting Nmap 7.31 ( https://nmap.org ) at 2016-11-23 11:29 MSK
Nmap scan report for prostolinux.ru (185.58.207.192)
Host is up (0.021s latency).
Not shown: 989 closed ports
PORT     STATE    SERVICE
19/tcp   filtered chargen
22/tcp   open     ssh
25/tcp   open     smtp
53/tcp   open     domain
80/tcp   open     http
| http-enum: 
|   /login.php: Possible admin folder
|   /robots.txt: Robots file
|   /phpmyadmin/: phpMyAdmin
|   /0/: Potentially interesting folder
|   /foto/: Potentially interesting folder
|   /links/: Potentially interesting folder
|   /net/: Potentially interesting folder
|   /news/: Potentially interesting directory w/ listing on 'apache/2.4.10 (debian)'
|   /robot/: Potentially interesting folder
|   /upload/: Potentially interesting directory w/ listing on 'apache/2.4.10 (debian)'
|_  /win/: Potentially interesting folder
110/tcp  open     pop3
143/tcp  open     imap
465/tcp  open     smtps
587/tcp  open     submission
1500/tcp open     vlsi-lm
1900/tcp filtered upnp

Nmap done: 1 IP address (1 host up) scanned in 393.59 seconds

Скрипт имеет дополнительные опции:

  • http-enum.basepath. Указывает начальный (базовый) путь, от которого будет производиться сканирование.
sudo nmap --script "http-enum" --script-args http-enum.basepath='pub/' 192.168.10.55

Nmap scan report for xbmc (192.168.1.5)
Host is up (0.0012s latency).
PORT   STATE SERVICE
80/tcp open  http
| http-enum: 
|   /pub/: Root directory w/ listing on 'apache/2.2.22 (ubuntu)'
|   /pub/images/: Potentially interesting directory w/ listing on 'apache/2.2.22 (ubuntu)'
|_  /pub/js/: Potentially interesting directory w/ listing on 'apache/2.2.22 (ubuntu)'

Nmap done: 1 IP address (1 host up) scanned in 1.03 seconds
  • http-fingerprints.nikto-db-path. Берёт пути из баз данных nikto и добавляет их к текущим отпечаткам, если таких ещё нет. К сожалению, имеются некоторые ограничения, конвертация данных возможна не в полном объёме.
  • http-enum.displayall. Установите этот аргумент, если вы хотите чтобы отображались все коды статусов, которые могут говорить о действительной странице, а не только страницы 200 OK и 401 Authentication Required. Хотя это даёт дополнительные шансы найти скрытые каталоги, при этом генерируется больше ложных срабатываний.
  • http-enum.category. Установить категорию (как они указаны в файле отпечатков). Несколько вариантов 'attacks', 'database', 'general', 'microsoft', 'printer' и т.д.
  • http-enum.fingerprintfile. Указывает другой файл, из которого считывать отпечатки.
  • http.max-cache-size, http.max-pipeline, http.pipeline, http.useragent
  • smbdomain, smbhash, smbnoguest, smbpassword, smbtype, smbusername

7. Сбор названий (title) веб-страниц

Не составит большого труда узнать названия веб-страницы с веб-сервера, скрипт http-title просто облегчает задачу по сбору имён в один набор с диапазона IP адресов.

Имея в результатах сканирования Nmap заголовок страницы, можно лучше понять контекст хоста, это может помочь идентифицировать главную цель веб-сервера и определить, является ли сервер потенциальной целью для атак.

Вот пример сканирования по подсети с VPS:

sudo nmap --script "http-title" -sV -p 80 185.117.153.0/24

Результатов очень много, к сожалению, не-латинские символы выводятся в формате \xXX, т. е. мы видим что-то вроде:

\xD0\xA5\xD0\xBE\xD1\x81\xD1\x82\xD0\xB8\xD0\xBD\xD0\xB3 \xD0\xB8\xD0\xB3\xD1\x80\xD0\xBE\xD0\xB2\xD1\x8B\xD1\x85 \xD1\x81\xD0\xB5\xD1\x80\xD0\xB2\xD0\xB5\xD1\x80\xD0\xBE\xD0\xB2

Это не является серьёзной проблемой. Вариантов постобработки достаточно, например, можно сделать так:

echo -e "$(sudo nmap --script "http-title" -sV -p 80 185.117.153.0/24)"

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

….................................
….................................
Nmap scan report for madecoffee.in (185.117.153.9)
Host is up (0.018s latency).
PORT   STATE SERVICE VERSION
80/tcp open  http    nginx
|_http-server-header: nginx
|_http-title: КОФЕ*IN | Кофейня | Волгодонск — Е...

Nmap scan report for alecs7910.myihor.ru (185.117.153.10)
Host is up (0.018s latency).
PORT   STATE  SERVICE VERSION
80/tcp closed http

Nmap scan report for lifemedia18.ru (185.117.153.11)
Host is up (0.018s latency).
PORT   STATE SERVICE VERSION
80/tcp open  http    nginx 1.10.2
|_http-server-header: nginx/1.10.2
|_http-title: LifeMedia18.ru | Издательство "Лайф-Медиа"

Nmap scan report for gdepokupatt.com (185.117.153.13)
Host is up (0.018s latency).
PORT   STATE SERVICE VERSION
80/tcp open  http    nginx 1.8.0
|_http-server-header: nginx/1.8.0
|_http-title: Поиск по интернет магазинам

Nmap scan report for trapeznikoff.myihor.ru (185.117.153.14)
Host is up (0.018s latency).
PORT   STATE  SERVICE VERSION
80/tcp closed http

Nmap scan report for airomart.ru (185.117.153.15)
Host is up (0.018s latency).
PORT   STATE SERVICE VERSION
80/tcp open  http    nginx
|_http-server-header: nginx
|_http-title: Автоаксессуары для автомобилей - A...

Nmap scan report for ns1.photodns.com (185.117.153.16)
Host is up (0.018s latency).
PORT   STATE    SERVICE VERSION
80/tcp filtered http

Nmap scan report for free.marosnet.net (185.117.153.17)
Host is up (0.018s latency).
PORT   STATE SERVICE VERSION
80/tcp open  http    nginx
|_http-server-header: nginx
|_http-title: 502 Bad Gateway

Nmap scan report for autosecurity.ru (185.117.153.18)
Host is up (0.018s latency).
PORT   STATE SERVICE VERSION
80/tcp open  http    nginx 1.6.2
|_http-server-header: nginx/1.6.2
| http-title: Услуги автотехцентра в Москве, пр�...
|_Requested resource was http://www.autosecurity.ru/

Nmap scan report for fastread.club (185.117.153.19)
Host is up (0.018s latency).
PORT   STATE SERVICE VERSION
80/tcp open  http?
|_http-title: fastread.club

Nmap scan report for q.temaremonta.ru (185.117.153.21)
Host is up (0.018s latency).
PORT   STATE SERVICE VERSION
80/tcp open  http    nginx
|_http-server-header: nginx
|_http-title: Пчеловодство.РУ - пчеловодство в Р...

….................................
….................................

8. Запуск всех скриптов для сбора информации о веб-сервере и веб-сайте

Вместо указания конкретного скрипта, можно указывать группы. В зависимости от хостов (персональный компьютер, сервер, хост в корпоративной сети), а также в зависимости от целей (поиск скомпрометированных машин, поиск заражённых вирусами машин, проверка надёжности паролей, анализ состояния хоста, анализ репутации, разведка и т. д.) выбор групп может быть различным. Например, для веб-сайта можно использовать группы auth, discovery, version (аутентификация, обнаружение, определение версий). Пример команды:

sudo nmap --script "auth,discovery,version" -p 80,443 suip.biz

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

echo -e "$(sudo nmap --script "auth,discovery,version" -p 80,443 suip.biz)"

Выводимые данные будут содержать информацию о заголовках, содержимом веб-страницы, используемых технологиях, участия в партнёрских программах, числится ли сайт в базах заражённых, комментарии в HTML коде, whois информация, информация о репутации, версии ПО, сертификатах и др.

9. Получение информации о системах от SMB

Скрипт smb-os-discovery пытается определить операционную систему, имя компьютера, домен, рабочую группу и текущее время по протоколу SMB (порты 445 или 139). Это выполняется запуском сессии с анонимным аккаунтом (или с реальным пользовательским аккаунтом, если дан; это не имеет особой разницы); в ответе начала сессии, сервер отправит всю эту информацию.

Таким образом можно находить в больших сетях компьютеры с Windows XP. Находятся даже системы, которые не прикреплены к домену.

Пример запуска:

sudo nmap -p 445 --script "smb-os-discovery" 192.168.0.1/24

Заключение

В данной заметке показаны азы использования и только некоторые из возможных функций скриптов Nmap. Специально подобраны «разносортные» примеры, чтобы показать широту разнообразия задач, которые можно решить с помощью скриптов NSE. Хотя вряд ли это возможно в заметке такого размера, поскольку одних только поставляемых с Nmap скриптов более полутысячи, плюс пользовательские скрипты.

Кстати, какие ваши любимые скрипты Nmap? Напишите о них в комментариях.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *