Скриптовый движок Nmap(NSE - Nmap Scripting Engine)
Скриптовый движок Nmap (NSE) это одна из наиболее мощных и гибких возможностей Nmap. Он позволяет пользователям писать (и делиться ими) простые скрипты (используя язык программирования Lua, ) для автоматизации широкого круга сетевых задач. Эти скрипты выполняются со скоростью и эффективность ожидаемой вами от Nmap. Пользователи могут использовать разнообразный и постоянно расширяющийся набор скриптов, которые поставляются вместе с Nmap, или написать свои скрипты под свои собственные нужды.
Когда мы создавали эту систему, считалось, что она будет использоваться для задач исследования сети, более изощренного варианта определения версии, исследования уязвимостей. NSE может быть использован даже для обнаружения уязвимостей.
Чтобы отразить все многообразие возможностей использования скриптов и при этом упростить выбор необходимого скрипта, каждый из них содержит поле, где указано к какой категории он принадлежит. Сейчас определены следующие категории: safe,(intrusive), malware, version, discovery, vuln, auth и default. Все они описаны в https://nmap.org/book/nse-usage.html#nse-categories.
Скриптовый движок Nmap детально описан на https://nmap.org/book/nse.html и настраивается с помощью следующих опций:
-sC
Осуществляет сканирование на основе скриптов. Эквивалентно опции --script=default. Некоторые их применяемых здесь скриптов относятся к категории intrusive (навязчивые) и не должны быть использованы для сканирования целевой сети без разрешения.
--script <категории-скриптов>|<директория>|<имя_файла>|all
Осуществляет сканирование на основе скриптов (как -sC) используя разделенный запятыми список категорий скриптов, отдельных файлов скриптов или директорий содержащих скрипты вместо стандартного набора скриптов. Сначала Nmap пытается интерпретирует все аргументы как категории, затем (в случае неудачи) как файлы или директории. Файл скрипта или директория скриптов могут быть определены с использованием абсолютного или относительного пути. Абсолютные пути используются так, как вы их зададите. Относительные пути будут определяться относительно: --datadir/; $NMAPDIR/; ~/.nmap/(не используется в Windows); NMAPDATADIR/ или ./. Также все эти папки будут проверяться на наличие поддиректории scripts/
Если вы определили директорию со скриптами, и она была найдена, то Nmap загружает все NSE скрипты (все файлы с расширением .nse) из этой директории. Файлы без расширения nse игнорируются. Nmap не производит рекурсивный поиск скриптов во всех поддиректориях. Если вы указываете конкретный файл, то его расширение не обязательно должно быть nse.
По умолчанию скрипты Nmap хранятся в папке scripts - поддиректории основного каталога Nmap. Для большей производительности, все скрипты проиндексированы в базе данных scripts/script.db, где указано к какой категории или категориям принадлежит каждый скрипт. Для исполнения всех скриптов из базы данных Nmap задайте атрибут all.
Злонамеренные скрипты запускаются не в "песочнице" (sandbox) и поэтому могут повредить вашу систему или нарушить вашу анонимность. Никогда не используйте скрипты от третьих лиц до тех пор, пока не будете доверять автору или сами тщательно просмотрите скрипт.
--script-args <имя1>=<значение1>, <имя2>={<имя3>=<значение3>}, <имя4>=<значение4>
Позволяет вам передавать аргументы NSE скриптам. Аргументы передаются как пары имя=значение. Передаваемый аргумент обрабатывается и хранится в Lua таблице, к которой имеют доступ все скрипты. Имена передаются как строки (должны быть буквенно-цифровыми значениями) и используются в качестве ключей в argument-table. Значения могут быть также строками или в свою очередь таблицами (заключенными в ‘{’ и ‘}’). Такие подтаблицы позволяют переопределить аргументы для конкретных скриптов (например, если вы хотите предоставить различным скриптам различные пары login/password). Например, вы можете определить аргументы через запятые: user=bar, password=foo и anonFTP={password=nobody@foobar.com}. Если вы хотите переопределить опцию для скрипта, вы должны проиндексировать подтаблицу с помощью id скрипта, т.к. это единственный способ указать скрипту на наличие специального аргумента.