Nmap: Сканирование портов для обнаружения служб и уязвимостей

В этом руководстве объясняется, как использовать Nmap для поиска серверов и уязвимостей за портами.

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

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

Сканирование портов для обнаружения служб с помощью Nmap

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

Как показано на первом скриншоте, обычное сканирование Nmap вернет открытые порты из 1 000 наиболее часто используемых. По умолчанию Nmap сканирует 1 000 наиболее популярных портов.

Порты ассоциируются с соответствующими протоколами обслуживания. В следующем выводе Nmap обнаруживает открытые порты 22, 80, 9928 и 31337.

nmap scanme.nmap.org

Пользователь знает, что порты 22, 80, 9928 и 31337 открыты. Например, он знает, что в порту 22 находится SSH-сервер. Но пользователь хочет узнать программное обеспечение SSH и все остальные службы.

Чтобы узнать программное обеспечение и его версии, можно передать флаг -sV (Version), как показано на скриншоте ниже.

nmap scanme.nmap.org -sV

На нем видно, что обнаружены OpenSSH 6.6.1.

Флаг -A также возвращает версии служб вместе с информацией об операционной системе.

nmap scanme.nmap.org -A

Флаг -A показал, что целью является операционная система Linux.

В следующем разделе этого руководства описываются техники NSE (Nmap Scripting Engine). Этот практический пример показывает, как используется флаг -script для включения скрипта захвата баннера в процесс сканирования.

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

В следующем примере сценарий захвата баннера выполняется при сканировании порта 22, выявляя SSH-сервер OpenSSH.

nmap --script=banner scanme.nmap.org -p 22

Чтобы закончить этот раздел и продолжить рассмотрение типов сканирования уязвимостей, в практическом примере ниже показано применение флага -O (Operating System) для угадывания целевой операционной системы.

В данном случае Nmap на 95% уверен, что цель имеет Linux с ядром 4.4.

sudo nmap -O scanme.nmap.org

Это наиболее известные методы Nmap для обнаружения служб и версий ОС.

Обнаружение уязвимостей с помощью NSE (Nmap Scripting Engine)

В этом разделе описаны некоторые методы обнаружения уязвимостей при сканировании Nmap с помощью NSE (Nmap Scripting Engine).

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

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

Чтобы обновить NSE, выполните следующую команду:

sudo nmap --script-updatedb

После обновления базы данных пользователь может запускать различные сценарии для поиска уязвимостей. Сценарии классифицируются по категориям, которые вы можете увидеть на сайте https://nmap.org/nsedoc/categories/.

В следующем примере флаг -script вызывает скрипты из категории vuln, сканируя около 150 популярных уязвимостей.

sudo nmap --script vuln scanme.nmap.org -v

Как вы можете видеть на следующем снимке экрана, Nmap сообщает, что некоторые уязвимости отброшены, а другие вероятны:

Обнаружение уязвимостей с помощью NSE (Nmap Scripting Engine)

Сценарий http-csrf позволяет пользователям сканировать веб-сайты для поиска уязвимостей csrf (Cross Scripting Request Forgery).

Как вы можете видеть ниже, при указании параметра verbosity (-v) Nmap выводит результаты всех проверок, которые он проводит на сайте.

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

Nmap Scripting Engine может нацеливаться на целые сети для обнаружения компьютеров, зараженных вредоносным ПО. Это отличная техника для администраторов, позволяющая подходить к возможным вторжениям вредоносного ПО.

Доступные сценарии вредоносного ПО можно найти на сайте https://nmap.org/nsedoc/categories/malware.html.

Обнаружение уязвимостей с помощью Nmap и Vulscan

Vulscan - это дополнительный набор скриптов для NSE, который не включен в Nmap по умолчанию.

Vulscans подробно описан в учебнике Nmap Vulscan, но в этом разделе предлагается краткий обзор, установка и основные инструкции.

Vulscan - это скрипт Nmap Scripting Engine для помощи в задачах обнаружения уязвимостей,

Чтобы получить его, клонируйте vulscan с помощью команды git, как показано ниже:

Создайте мягкую ссылку на каталог скриптов NSE, выполнив следующую команду:

Теперь Vulscan доступен для вызова с помощью флага -script для запуска дополнительных проверок на уязвимости.

Синтаксис следующий:

Когда Vulscan обнаруживает вероятную брешь в системе безопасности, он выполняет все связанные с ней сценарии.

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

Используйте следующую команду для клонирования Nmap-vulners в каталог скриптов NSE:

Запустите Nmap с помощью vulners, используя следующий синтаксис:

О NSE (Nmap Scripting Engine)

NSE (Nmap Scripting Engine) является одной из самых необходимых функций Nmap.

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

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

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

Скрипты делятся на следующие категории: auth, broadcast, default, discovery, dos, exploit, malware, intrusive, fuzzer, external, safe, version и vuln - категория, использованная в первом примере использования в разделе NSE.

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

Сценарии NSE классифицируются по определенным критериям, основанным на моменте выполнения сценария, цели сценария и функциональности.

Первая классификация, основанная на моменте выполнения, включает четыре типа скриптов:

  • Предписывающие скрипты: Они выполняются перед любой фазой сканирования Nmap, например, скрипты, используемые для генерации новых целей.
  • Хост-скрипты: Хост-скрипты выполняются в процессе сканирования.
  • Служебные скрипты: Эти скрипты выполняются после сканирования каждой партии целей, как и скрипты хоста.
  • Скрипты постправил: Пострулевые скрипты выполняются после процесса сканирования; эти скрипты могут использовать уязвимости, обнаруженные в процессе сканирования.

Вторая классификация основана на безопасности и целях сценария.

Цель и безопасность определяют категорию скрипта. Категории были перечислены ранее в этом документе.

Заключение

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

Nmap - самый старый из ныне живущих сканеров портов, первоначально разработанный Федором Васьковичем в 1997 году для обнаружения сервисов и картирования сетей. Изначально написанный на языке C, он был переписан на C++ и значительно улучшен сообществом Open Source во втором релизе в 1998 году. Он продолжает добавлять функции и улучшения и сегодня.

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

Понравилась статья? Поделиться с друзьями:
Добавить комментарий