Уроки по 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]
В целом, вывод выглядит примерно так:
Там много ненужной информации, которую можно отфильтровать. Обратите внимание, что для 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 ..................................... ..................................... ..................................... .....................................
Чтобы выбрать их них только IP, можно использовать программу Awk:
awk '{ print $4 }' ftp.ip
Отлично, сохраняем очищенные 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
Результат:
Если вам нужны только подходящие данные, т. е. чтобы выводились только те FTP сервера, где разрешён анонимный вход, то в patator можно намного более гибко настроить вывод результатов как по возвращаемому коду, так и разнообразным другим параметрам.
Скрипт необязательно применять на диапазоны сетей, можно точечно сканировать отдельные хосты:
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? Напишите о них в комментариях.
Связанные статьи:
- sshprank: массовая проверка учётных данных SSH и быстрый сбор SSH баннеров (78.8%)
- Инструкция по использованию Masscan — лучшего массового сканера больших сетей (76.6%)
- Инструкция по работе с IVRE в Kali Linux: Массовый сбор подробных сведений о хостах в больших сетях (72.8%)
- Уроки по Nmap. Урок 1: Для чего нужен Nmap, что нового в версии 7, примеры опций (67.9%)
- Аудит безопасности RDP (67.5%)
- Как узнать точное расположение пользователя (RANDOM - 53.8%)