Инструкция по Nmap. Обнаружение, сканирование, NSE (часть 2)

Инструкция по Nmap. Обнаружение, сканирование, NSE (часть 2)

@Leakinfo

Это продолжении первой части статьи

Скриптовый движок Nmap (NSE – Nmap Scripting Engine)

Одна из ключевых возможностей Nmap это использование скриптов при сканировании. Скриптов в комплекте поставляется огромное количество, их около 600 и лежат они в */nmap/scripts, в том же каталоге лежит база данных скриптов в файле script.db. Для удобства использования все скрипты разбиты на категории. Фишка в том, что можно запускать скрипты сразу по категориям (по одной или по несколько), это избавляет от необходимости запоминания названий отдельных скриптов, хотя некоторые скрипты стоит запомнить (но об этом позже). Также важно помнить, что некоторые скрипты оставляют много следов на целевой системе, а потому использовать их стоит аккуратно и помня про средства анонимизации.

С полным списком скриптов и их описанием можно ознакомится здесь: https://nmap.org/nsedoc/index.html

Категории скриптов Nmap:

  • auth

Категория скриптов которая работает с учетными данными аутентификации на исследуемой системе

  • broadcast

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

  • brute

Скрипты для проведения brute force атак с целью получения учётных данных аутентификации.

  • default

Базовый набор скриптов, определенных разработчиками как “скрипты по умолчанию” для расширения функционала Nmap. Именно они запускаются командой -sC или -A

  • discovery

Скрипты этой категории собирают учетные, регистрационные и статистические данные о исследуемой системе

  • dos

Эти скрипты проверяют исследуемую систему на уязвимости к атакам методом отказа в обслуживании

  • exploit

Nmap попытается эксплуатировать некоторые известные уязвимости

  • external

Эти скрипты отправляют информацию в сторонние базы данных или ресурсы, например: whois, virus total, robtex, geoplugin, ipinfo ну и т.д. для получения дополнительных данных о исследуемой цели

  • fuzzer

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

  • intrusive

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

  • malware

Эти скрипты проверяют целевую систему на предмет заражения вредоносным ПО и наличия бекдоров.

  • safe

Скрипты из этой категории предназначены для сбора общей информации и исследования сети, они не выполняют активных действий направленных на выявление или эксплуатацию уязвимостей, не подразумевают негативных последствий для работоспособности целевой системы

  • version

Это скрипты расширения функционала опции определения версий, их нельзя запустить отдельно, они срабатывают по мере необходимости при выборе параметра определения версий (-sV)

  • vuln

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

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

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

  • -sC

Сканирование на основе скриптов. Тоже самое, что и script=default, т.е. запускает сканирование с использованием набора скриптов из категории default (как я уже писал выше лучше использовать опцию –А)

  • –script-help

Информация о скрипте или категории. При выборе этой опции можно указать конкретный скрипт или категорию, при этом на экран будет выведено описание скрипта (категории) и ссылка на страницу справки по нему.

  • –script скрипт,категория скриптов,файл

Используя эту опцию можно указать конкретный скрипт, или через запятую несколько скриптов, которые нужно запустить, также можно указать категорию (или несколько), либо запустить скрипт из указанного файла, например:

  • sudo nmap –script whois-domain scanme.nmap.org
  • запустит только скрипт whois-domain, а
  • sudo nmap –script default,safe,whois-domain scanme.nmap.org
  • запустит все скрипты из категорий default и safe и скрипт whois-domain
  • Вообщем смысл в том, что можно комбинировать категории и скрипты так как тебя нужно, каких-либо ограничений здесь нет, даже если ты что-то впишешь неправильно Nmap тебе подскажет где ошибка.
  • –script-args имя1=значение1, имя2=значение2

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

nmap -p 3306 --script mysql-audit --script-args mysql-audit.username='nselib/data/usernames.lst',mysql-audit.password='nselib/data/passwords.lst',mysql-audit.filename='nselib/data/mysql-cis.audit' no-jus.com

Подобная команда проверит настройки сервера базы данных MySQL в сравнении с эталонами CIS Oracle MySQL Benchmarks, при этом перебор имен пользователей будет проводится по списку из из файла usernames.lst, а пароли будут перебираться по словарю passwords.lst (оба словаря – это стандартные словари Nmap, можно указать свои словари или отдельно указать нужные значения).

Примечание:

Обрати внимание, что я не ставил пробелы после запятых, это нужно для того чтобы Nmap понимал какие аргументы к какой опции относятся, так происходит потому что командный интерпретатор обрабатывает каждый элемент отдельно. Пробелы можно ставить, но тогда группы аргументов нужно заключать в кавычки, чтобы это воспринималось интерпретатором как один объект, например так:

–script-args mysql-audit.username=’nselib/data/usernames.lst’, mysql-audit.password=’nselib/data/passwords.lst’, mysql-audit.filename=’nselib/data/mysql-cis.audit’

Опции управления временем и производительностью

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

  • шаблон

Самих шаблонов существует 6, их можно так и выбирать, просто указывая цифру от 0 до 6:

  1. paranoid(паранойдный) (0) – используется для обхода IDS т.е. системы обнаружения вторжений;
  2. sneaky(хитрый) (1) – аналогичен предыдущему;
  3. polite(вежливый) (2) – снижает интенсивность сканирования с целью меньшего потребления пропускной способности и машинных ресурсов;
  4. normal(обычный) (3) – режим используемый по-умолчанию;
  5. aggressive(агрессивный) (4) – режим повышенной интенсивности сканирования, требователен к скорости и надежности соединения;
  6. insane(безумный) (5) – самый быстрый и самый не точный режим

Обход брандмауэров / IDS

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

  • -f

Фрагментация пакетов. При включении этой опции Nmap при всех видах сканирования будет использовать небольшие фрагментированные IP пакеты. Это означает что TCP заголовок будет разбит на части, и эти части будут посылаться цели в различных пакетах, в такой ситуации есть вероятность что фильтр просто не поймёт что мы хотим сделать, а соответственно не будет реагировать. По-умолчанию Nmap разбивает пакеты на части по 8 байт. Это значение можно задать в ручную используя опцию –mtu (размер должен быть кратным 8)

  • -D фиктивный_хост1,фиктивный_хост2,фиктивный_хост3,ME,фиктивный_хост5

Сканирование с использованием фиктивных хостов. Для цели это будет выглядеть как-будто её сканируют все перечисленные тобой хосты, при этом довольно трудно будет понять откуда происходило настоящее сканирование. Фиктивные хосты нужно указывать через запятую, без пробелов. Параметром ME можно задать каким в списке будет твой настоящий адрес, если этот параметр не указывать Nmap поставит его рандомно

  • –data-length число

Эта опция добавит к пакету заданное количество байт. Иногда позволяет запутать системы фильтрации

  • –spoof-mac MAC-адрес

Подмена mac-адреса. В качестве значения можно указать желаемый mac-адрес, если указать 0 – будет сгенерирован рандомный mac, также можно указать префикс или название производителя (список префиксов производителей есть в файле nmap-mac-prefixes в паке программы) тогда Nmap будет использовать префикс для первой части mac-адреса и рандомное значение для второй

Вывод результатов Nmap

Если не указывать никаких параметров вывода результатов Nmap выедет полученные данные в терминале. Это вполне приемлемо для сканирования одиночной цели, но не всегда удобно (а точнее всегда не удобно) для анализа больших массивов данных. Для нашего удобства разработчики сделали возможность сохранять результаты сразу в файл, причем есть несколько вариантов:

  • -oN имя_файла

Стандартный вывод. Данные сканирования будут сохранены в указанный файл в таком виде, в каком мы их видим в терминале

  • -oX имя_файла

XML-вывод. Формат удобный для последующей обработки результатов сторонними парсерами или ZenMap

  • -oG имя_файла

Grepable вывод. При таком выводе данные каждого хоста будут выведены в одну строку, он нужен если есть необходимость использовать для обработки утилиты командой строки grep, cut и т.д.

  • –resume имя_файла

Продолжить прерванное сканирование. Если сканирование, по каким либо причинам не было завершено, но его результаты сохранялись в файл (только -oN или -oG) его можно продолжить с момента оканочания командой: nmap –resume имя_файла. Другие опции задавать не нужно, сканирование продолжиться с теми же опциями с которыми было начато изначально

Различные опции Nmap

  • -6

Включить IPv6 сканирование. При таком сканирование используются такие же опции как и при обычном, с той разницей, что IP адрес нужно указывать в формате IPv6

  • -A

Опции агрессивного сканирования. Как я упоминал ранее, запускает определение ОС (-O), сканирование с целью, определения версии (-sV), сканирование с использованием скриптов (-sC) и трассировку (–traceroute)

  • -v

Увеличить уровень вербальности. При включении этой опции на экран (и в результатах) будет выводится больше информации т.е. она будет более детальной. При продолжительном сканировании будет показываться приблизительное время завершения, а полученные результаты будут выводится по мере их получения, а не после окончания сканирования.

Сканирование уязвимостей с помощью Nmap. Использование Vulscan

Nmap вполне успешно можно использовать в качестве сканера уязвимостей. Для этого нужно скачать скрипт Vulscan (https://github.com/scipag/vulscan) который, в значительной мере расширит стандартные возможности Nmap.

git clone https://github.com/scipag/vulscan scipag_vulscan 
ln -s `pwd`/scipag_vulscan /usr/share/nmap/scripts/vulscan 

В скрипт уже интегрированы базы данных уязвимостей:

В случае необходимости, их можно обновить с сайта разработчиков:

https://www.computec.ch/projekte/vulscan/download/cve.csv
https://www.computec.ch/projekte/vulscan/download/exploitdb.csv
https://www.computec.ch/projekte/vulscan/download/openvas.csv
https://www.computec.ch/projekte/vulscan/download/osvdb.csv
https://www.computec.ch/projekte/vulscan/download/scipvuldb.csv
https://www.computec.ch/projekte/vulscan/download/securityfocus.csv
https://www.computec.ch/projekte/vulscan/download/securitytracker.csv
https://www.computec.ch/projekte/vulscan/download/xforce.csv

Скачанные обновления нужно будет поместить в каталог: nmap\scripts\vulscan\

Запуск этого скрипта происходит точно также, как и любого другого, единственное что нужно помнить, что его нужно совмещать с командой определения версий (-sV):

nmap -sV --script=vulscan/vulscan.nse 10.0.1.14

Дополнительно, для скрипта Vulscan, командой –script-args можно передать дополнительные аргументы:

  • vulscandb=база_данных

Использовать указанную базу данных (из списка выше), по умолчанию будут задействованы все существующие базы

  • –script-args vulscaninteractive=1

Включить интерактивный режим

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

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

Первая часть





Report Page