Поиск по сайту:

Как использовать сценарии Nmap Script Engine (NSE) в Linux


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

Одной из интересных особенностей Nmap является Nmap Script Engine (NSE), который обеспечивает еще большую гибкость и эффективность. Он позволяет вам писать свои собственные сценарии на языке программирования Lua и, возможно, делиться этими сценариями с другими пользователями Nmap.

Читайте также: 29 практических примеров команд Nmap для Linux

Существует четыре типа сценариев NSE, а именно:

  • Скрипты предварительного правила – это сценарии, которые запускаются перед любой операцией сканирования Nmap. Они выполняются, когда Nmap еще не собрал никакой информации о цели.
  • Скрипты хоста — это скрипты, выполняемые после того, как Nmap выполнил обычные операции, такие как обнаружение хоста, сканирование портов, определение версии и обнаружение ОС на целевом хосте.
  • Скрипты служб – это сценарии, запускаемые для определенных служб, прослушивающих целевой хост.
  • Скрипты Postrule – это скрипты, которые запускаются после того, как Nmap просканировал все свои целевые хосты.

Затем эти сценарии группируются по различным категориям, включая сценарии для аутентификации (auth), обнаружения хостов (broadcast), атак методом перебора для подбора учетных данных аутентификации (brute<), узнать больше о сети (обнаружение), вызвать отказ в обслуживании (dos), использовать некоторую уязвимость (эксплойт) и т. д. Ряд сценариев относятся к категории по умолчанию.

Примечание. Прежде чем двигаться дальше, вам следует принять к сведению следующие ключевые моменты:

  • Не выполняйте скрипты третьих лиц, не просмотрев их критически или только если вы доверяете авторам. Это связано с тем, что эти сценарии не запускаются в «песочнице» и, таким образом, могут неожиданно или злонамеренно повредить вашу систему или вторгнуться в вашу конфиденциальность.
  • Во-вторых, многие из этих сценариев могут работать как сценарии prerule или postrule. Учитывая это, в целях единообразия рекомендуется использовать предварительное правило.
  • Nmap использует базу данных scripts/script.db для определения доступных сценариев и категорий по умолчанию.

Чтобы увидеть расположение всех доступных сценариев NSE, запустите на терминале утилитуlocate, например:

locate *.nse

/usr/share/nmap/scripts/acarsd-info.nse
/usr/share/nmap/scripts/address-info.nse
/usr/share/nmap/scripts/afp-brute.nse
/usr/share/nmap/scripts/afp-ls.nse
/usr/share/nmap/scripts/afp-path-vuln.nse
/usr/share/nmap/scripts/afp-serverinfo.nse
/usr/share/nmap/scripts/afp-showmount.nse
/usr/share/nmap/scripts/ajp-auth.nse
/usr/share/nmap/scripts/ajp-brute.nse
/usr/share/nmap/scripts/ajp-headers.nse
/usr/share/nmap/scripts/ajp-methods.nse
/usr/share/nmap/scripts/ajp-request.nse
/usr/share/nmap/scripts/allseeingeye-info.nse
/usr/share/nmap/scripts/amqp-info.nse
/usr/share/nmap/scripts/asn-query.nse
...

Сценарии NSE загружаются с использованием флага --script, который также позволяет запускать ваши собственные сценарии, указывая категории, имена файлов сценариев или имена каталогов, в которых расположены ваши сценарии.

Синтаксис включения сценариев следующий:

nmap -sC target     #load default scripts
OR
nmap --script filename|category|directory|expression,...   target    

Вы можете просмотреть описание скрипта с помощью опции --script-help. Кроме того, вы можете передавать аргументы некоторым сценариям с помощью параметров --script-args и --script-args-file, последний используется для указания имени файла, а не аргумент командной строки.

Чтобы выполнить сканирование с использованием большинства сценариев по умолчанию, используйте флаг -sC или альтернативно используйте --script=default, как показано.

nmap -sC scanme.nmap.org
OR
nmap --script=default scanme.nmap.org
OR
nmap --script default scanme.nmap.org
Пример вывода
Starting Nmap 7.01 ( https://nmap.org ) at 2017-11-15 10:36 IST
Nmap scan report for scanme.nmap.org (45.33.32.156)
Host is up (0.0027s latency).
Not shown: 999 filtered ports
PORT   STATE SERVICE
80/tcp open  http
|_http-title: Go ahead and ScanMe!

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

Чтобы использовать скрипт по назначению, вы можете, прежде всего, получить краткое описание того, что он на самом деле делает, например, http-headers.

nmap --script-help http-headers scanme.nmap.org
Пример вывода
Starting Nmap 7.01 ( https://nmap.org ) at 2017-11-15 10:37 IST

http-headers
Categories: discovery safe
https://nmap.org/nsedoc/scripts/http-headers.html
  Performs a HEAD request for the root folder ("/") of a web server and displays the HTTP headers returned.

Загрузка сценариев NSE для выполнения сканирования Nmap

Вы можете выбрать или загрузить сценарии для выполнения сканирования различными методами, описанными ниже.

Использование имени сценария

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

nmap --script http-headers scanme.nmap.org
Starting Nmap 7.01 ( https://nmap.org ) at 2017-11-15 10:39 IST
Nmap scan report for scanme.nmap.org (45.33.32.156)
Host is up (0.27s latency).
Not shown: 996 closed ports
PORT      STATE    SERVICE
22/tcp    open     ssh
80/tcp    open     http
| http-headers: 
|   Date: Wed, 15 Nov 2017 05:10:04 GMT
|   Server: Apache/2.4.7 (Ubuntu)
|   Accept-Ranges: bytes
|   Vary: Accept-Encoding
|   Connection: close
|   Content-Type: text/html
|   
|_  (Request type: HEAD)
179/tcp   filtered bgp
31337/tcp open     Elite

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

Использование категорий

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

nmap --script default,broadcast 192.168.56.1

Использование * подстановочного знака

Это полезно, когда вы хотите выбрать сценарии с заданным шаблоном имени. Например, чтобы загрузить все скрипты с именами, начинающимися с ssh, выполните на терминале следующую команду:

nmap --script "ssh-*" 192.168.56.1

Использование логических выражений

Вы также можете выбирать сценарии с помощью логических выражений, которые можно создавать с помощью операторов and, or и not. Имена в логическом выражении могут быть категорией, именем файла из script.db или всем вместе.

Следующая команда загрузит сценарии из категорий по умолчанию или широковещательных категорий.

nmap --script "default or broadcast" 192.168.56.10

Что эквивалентно:

nmap --script default,broadcast 192.168.56.10

Чтобы загрузить все сценарии, кроме тех, которые входят в категорию vuln, запустите эту команду на терминале.

nmap --script "not vuln" 192.168.56.10

Следующая команда выглядит немного сложной, но ее легко понять: она выбирает сценарии по умолчанию или категории широковещания, исключая те, имена которых начинаются с ssh-:

nmap --script "(default or broadcast) and not ssh-*" 192.168.56.10

Важно отметить, что для загрузки сценариев можно комбинировать категории, имена сценариев, каталог, содержащий ваши пользовательские сценарии, или логическое выражение:

nmap --script broadcast,vuln,ssh-auth-methods,/path/to/custom/scripts 192.168.56.10

Передача аргументов в сценарии NSE

Ниже приведен пример, показывающий, как передавать аргументы сценариям с помощью опции –script-args:

nmap --script mysql-audit --script-args "mysql-audit.username='root', \
mysql-audit.password='password_here', mysql-audit.filename='nselib/data/mysql-cis.audit'"

Чтобы передать номер порта, используйте параметр -p nmap:

nmap -p 3306 --script mysql-audit --script-args "mysql-audit.username='root', \ 
mysql-audit.password='password_here' , mysql-audit.filename='nselib/data/mysql-cis.audit'"

Приведенная выше команда запускает проверку конфигурации безопасности сервера базы данных MySQL на соответствие частям теста CIS MySQL v1.0.2. Вы также можете создавать свои собственные полезные файлы аудита для других аудитов MySQL.

На данный момент это все. Вы можете найти дополнительную информацию на странице руководства Nmap или проверить использование NSE.

Чтобы начать писать собственные сценарии NSE, ознакомьтесь с этим руководством: https://nmap.org/book/nse-tutorial.html.

Заключение

Nmap — это действительно мощный и полезный инструмент, который нужен каждому системному или сетевому администратору в арсенале безопасности. NSE просто повышает его эффективность.

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