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

Nmap — переключатели и типы сканирования в Nmap


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

Базовый синтаксис Nmap:

$ nmap [FLAGS] [IP]

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

Переключатели Nmap

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

  • -h: распечатать страницу сводки справки
  • -sS: выполнить сканирование TCP SYN
  • -sU: выполнить сканирование UDP
  • -sV: исследовать открытые порты для определения информации о сервисе/версии
  • -O: включить определение ОС
  • -v: включить детализацию. Вы даже можете установить уровень детализации как таковой:
    • -vv: уровень детализации 2. Рекомендуемый минимальный уровень детализации.
    • -v3: Детализация уровня 3. Вы всегда можете указать уровень детализации, указав число, подобное этому.

    • -oN: перенаправить обычный вывод в файл с заданным именем
    • -oX: создавать выходные данные в чистом формате XML и сохранять их в заданном файле
    • -oG: создание выходных данных, которые могут быть получены с помощью grepable, и сохранение их в файле. Устаревший формат, так как пользователи теперь переходят на выходные данные XML.

    • nmap -p 80 127.0.0.0.1: сканирует порт 80 на локальном хосте
    • nmap -p 1-100 127.0.0.1: сканирование портов с 1 по 100 на локальном хосте
    • nmap -p- 127.0.0.1: сканирует все порты на локальном хосте

    Типы сканирования в Nmap

    Nmap поддерживает множество различных типов сканирования. Однако самые популярные из них:

    1. Сканирование TCP-соединения (-sT)

    В этом типе сканирования Nmap отправляет TCP-пакет на порт с установленным флагом SYN. В этом случае могут произойти две вещи:

    • Цель отвечает пакетом RST, который означает, что порт закрыт.
    • Target вообще не отвечает, вероятно, из-за того, что брандмауэр отбрасывает все входящие пакеты, и в этом случае порт будет считаться отфильтрованным.
    • Цель отвечает TCP-пакетом с установленными флагами SYN/ACK, которые будут означать, что порт открыт, а затем Nmap ответит TCP-пакетом с установленным флагом ACK и, следовательно, завершит трехстороннее рукопожатие TCP. .

    Это не очень надежный метод сканирования, так как легко настроить правило брандмауэра, чтобы оно отвечало пакетами RST или отбрасывало все входящие пакеты. Кроме того, этот метод очень медленный, поскольку он ожидает всего трехэтапного рукопожатия TCP.

    2. SYN «полуоткрытые» сканы (-sS)

    Сканирование SYN, также известное как «Полуоткрытое» или «Скрытое сканирование», является улучшением по сравнению с предыдущим методом. В предыдущем методе, когда мы отправляли обратно TCP-пакет с установленным флагом ACK после получения пакета SYN/ACK, теперь мы отправляли пакет RST. Это предотвращает повторные попытки сервера выполнить запросы и значительно сокращает время сканирования.

    Этот метод является усовершенствованием предыдущих, потому что:

    • Они быстрее
    • Возможно, они смогут обойти некоторые примитивные брандмауэры.
    • Часто SYN-сканирование не регистрируется приложениями, работающими на портах, поскольку большинство приложений начинают регистрировать соединение только после того, как оно полностью установлено, чего нельзя сказать о SYN-сканировании.

    Однако не рекомендуется запускать сканирование SYN в производственных средах, так как это может привести к поломке некоторых нестабильных приложений. Также следует отметить, что для сканирования SYN также требуются привилегии sudo, поскольку для этого необходимо создавать необработанные пакеты.

    Фактически, при запуске с привилегиями sudo nmap по умолчанию использует сканирование SYN, в противном случае по умолчанию используется сканирование TCP.

    3. UDP-сканирование (-sU)

    Сканирование UDP гораздо менее надежно, чем два предыдущих, поскольку UDP-соединения по своей природе не имеют состояния. Это означает, что нет «механизма обратной связи», подобного TCP. UDP работает по принципу «выстрелил и забыл», что означает, что он отправляет пакеты, направленные на цели, на определенные порты и надеется, что они это сделают. При этом больше внимания уделяется скорости, чем качеству. Однако отсутствие механизма обратной связи затрудняет идентификацию открытых портов.

    Когда пакет UDP отправляется на целевой порт, может быть три сценария:

    • Обычно ответ не получен, и в этом случае nmap помечает порт как открытый|отфильтрованный. Если ответ еще не получен, он отправляет еще один UDP-пакет для двойной проверки, и если снова не получен ответ, он помечает порт как открытый|отфильтрованный и движется дальше
    • Он может получить ответ UDP, что случается очень редко. В таком случае порт помечается как открытый
    • Если порт закрыт и он получает эхо-запрос ICMP, что означает, что порт недоступен.

    Специальные сканы в Nmap

    Помимо этого, есть несколько менее популярных типов сканирования, которые даже «более незаметны», чем сканирование TCP SYN. К ним относятся:

    1. Нулевое сканирование TCP (-sN)

    При нулевом сканировании TCP отправленные пакеты TCP не имеют установленных флагов. Согласно RFC, при таких обстоятельствах цель должна ответить RST, если порт закрыт.

    2. Сканирование TCP FIN (-sF)

    Это очень похоже на пустое сканирование TCP, за исключением того факта, что вместо отправки полностью пустого пакета TCP он отправляет пакет с установленным флагом FIN, который используется для корректного закрытия соединения. Соответственно, цель должна ответить RST для закрытых портов в соответствии с RFC.

    3. Сканирование TCP Xmas (-sX)

    Сканирование TCP Xmas также очень похоже на два последних метода сканирования, за исключением того факта, что они используют пакеты TCP с установленными флагами PSH, URG и FIN. Как и два последних типа сканирования, здесь также ожидаются RST-пакеты для закрытых портов согласно RFC.

    Ограничения

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

    • open|filtered: когда ответ не получен, порт классифицируется как this, потому что отсутствие ответа может означать только две вещи:
      • Порт открыт
      • Порт защищен брандмауэром, поэтому он фильтруется

      Следует также отметить, что, хотя RFC 793 требует, чтобы сетевые узлы отвечали на искаженные пакеты TCP-пакетом RST для закрытых портов и вообще не отвечали для открытых портов, некоторые системы отвергают это соглашение. Такое поведение в основном наблюдается на серверах Microsoft Windows и некоторых устройствах CISCO, где все некорректно сформированные пакеты по умолчанию отбрасываются.

      Сканирование сети на наличие хостов с помощью Nmap

      Одна из самых важных вещей, которые нужно сделать при подключении к сети, — это получить список всех активных хостов в сети, прежде чем продолжить исследование. Это можно сделать с помощью Ping Sweep, который, как следует из названия, включает в себя отправку ICMP-пакета на все IP-адреса в сети и ожидание ответов. Узлы, которые отвечают ICMP-пакетом, считаются активными в этом случае.

      Вы можете указать целевые диапазоны IP-адресов с помощью дефисов или через CIDR следующим образом:

      $ nmap -sn 192.168.0.1-254
      

      Или,

      $ nmap -sn 192.168.0.0/24
      

      Флаг -sn подавляет любое сканирование портов и заставляет nmap полагаться исключительно на эхо-пакеты ICMP (или запросы ARP при запуске с привилегиями суперпользователя) для идентификации активных хостов в сети. Он также отправляет пакет TCP SYN на целевой порт 443 и запрос TCP ACK (TCP SYN при запуске с привилегиями суперпользователя) на целевой порт 80.

      Скриптовый движок Nmap

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

      Доступно много категорий. Некоторые полезные категории включают в себя:

      • безопасно: не влияет на цель
      • навязчивый: – небезопасный: может повлиять на цель
      • vuln: – поиск уязвимостей.
      • exploit: – попытаться использовать уязвимость
      • auth: – Попытка обойти аутентификацию для запущенных служб.
      • брут: – попытка подбора учетных данных для запущенных служб.
      • обнаружение: — попытка запроса запущенных служб для получения дополнительной информации о сети (

      Чтобы запустить скрипт, нам нужно указать его как --script=

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

      Некоторым сценариям также требуется аргумент, который можно указать с помощью --script-args <args>

      Некоторые скрипты имеют встроенные справочные меню, на которые можно ссылаться:

      $ nmap --script-help <script-name>
      

      Полный список скриптов можно найти здесь.

      Заключение

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