Nmap не работает windows

Как пользоваться Nmap для сканирования сети

Nmap — это очень популярный сканер сети с открытым исходным кодом, который может использоваться как в Windows, так и в Linux. Программа Nmap или Network Mapper была разработана Гордоном Луоном и на данный момент используется специалистами по безопасности и системными администраторами по всему миру.

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

Например, с помощью скриптов можно автоматически обнаруживать новые уязвимости безопасности в вашей сети. Namp может использоваться с хорошими и плохими намерениями, будьте аккуратны, чтобы не использовать nmap против закона. В этой инструкции мы рассмотрим как пользоваться namp для сканирования портов в операционной системе Linux. Но сначала нужно попытаться понять как работает эта утилита.

Как работает Nmap?

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

Но об этом вы, наверное, уже знаете. Более интересно то как Nmap узнает какие сервисы запущены на машине. Суть работы всех сетевых программ основана на портах. Чтобы получить сообщение из сети, программа должна открыть порт на вашем компьютере и ждать входящих соединений. А для отправки сообщения по сети нужно подключиться к уже другой программой (адресатом) порту. Затем программе необходимо будет открыть порт, на котором она будет ждать ответа.

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

Синтаксис Nmap

Команда запуска Nmap очень проста для этого достаточно передать ей в параметрах целевой IP адрес или сеть, а также указать опции при необходимости:

$ nmap опции адрес

Теперь давайте рассмотрим основные опции, которые понадобятся нам в этой статье.

  • -sL — просто создать список работающих хостов, но не сканировать порты nmap;
  • -sP — только проверять доступен ли хост с помощью ping;
  • -PN — считать все хосты доступными, даже если они не отвечают на ping;
  • -sS/sT/sA/sW/sM — TCP сканирование;
  • -sU — UDP сканирование nmap;
  • -sN/sF/sX — TCP NULL и FIN сканирование;
  • -sC — запускать скрипт по умолчанию;
  • -sI — ленивое Indle сканирование;
  • -p — указать диапазон портов для проверки;
  • -sV — детальное исследование портов для определения версий служб;
  • -O — определять операционную систему;
  • -T3 — скорость сканирования, чем больше, тем быстрее;
  • -D — маскировать сканирование с помощью фиктивных IP;
  • -S — изменить свой IP адрес на указанный;
  • -e — использовать определенный интерфейс;
  • —spoof-mac — установить свой MAC адрес;
  • -A — определение операционной системы с помощью скриптов.

Теперь, когда мы рассмотрели все основные опции, давайте поговорим о том, как выполняется сканирование портов nmap.

Как пользоваться Nmap для сканирования портов в Linux

Дальше рассмотрим примеры nmap. Сначала давайте рассмотрим как найти все подключенные к сети устройства, для этого достаточно использовать опцию -sL и указать маску нашей сети. в моем случае это 192.168.1.1/24. Маску вашей локальной сети вы можете найти, выполнив команду:

Из вывода для используемого интерфейса возьмите число после слеша, а до слэша укажите ip вашего роутера. Команда на сканирование сети nmap будет выглядеть вот так:

nmap -sL 192.168.1.1/24

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

nmap -sn 192.168.1.1/24

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

sudo nmap 192.168.1.1

Теперь мы можем видеть, что у нас открыто несколько портов, все они используются каким-либо сервисом на целевой машине. Каждый из них может быть потенциально уязвимым, поэтому иметь много открытых портов на машине небезопасно. Но это еще далеко не все, что вы можете сделать, дальше вы узнаете как пользоваться nmap.

Чтобы узнать более подробную информацию о машине и запущенных на ней сервисах вы можете использовать опцию -sV. Утилита подключится к каждому порту и определит всю доступную информацию:

sudo nmap -sV 192.168.1.1

На нашей машине запущен ftp, а поэтому мы можем попытаться рассмотреть эту службу подробнее с помощью стандартных скриптов nmap. Скрипты позволяют проверить порт более детально, найти возможные уязвимости. Для этого используйте опцию -sC и -p чтобы задать порт:

sudo nmap -sC 192.168.56.102 -p 21

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

sudo find /usr/share/nmap/scripts/ -name ‘*.nse’ | grep ftp

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

sudo nmap —script-help ftp-brute.nse

Этот скрипт будет пытаться определить логин и пароль от FTP на удаленном узле. Затем выполните скрипт:

sudo nmap —script ftp-brute.nse 192.168.1.1 -p 21

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

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

sudo nmap -A 192.168.1.1

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

Выводы

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

Information Security Squad

stay tune stay secure

  • Home
  • 2017
  • Декабрь
  • 5
  • Как установить NMAP в Windows с примерами использования в реальном времени

Как установить NMAP в Windows с примерами использования в реальном времени

NMAP (Network Mapper), один из известных инструментов с открытым исходным кодом для выполнения сетевого сканирования, проверки безопасности и поиска уязвимостей в сетевой инфраструктуре.

Одним из популярных способов использования NMAP является поиск открытых портов в сети. NMAP можно установить на Windows, Linux, OSX

Установка NMAP

Перейдите по ссылке загрузки nmap и загрузите последнюю стабильную версию

или, используйте прямую ссылку здесь, чтобы скачать nmap

Перейдите в папку, куда загружен файл

Щелкните правой кнопкой мыши на EXE-файле и нажмите «Run as administrator», чтобы запустить от имени администратора.

Он начнет процесс установки, примите лицензионное соглашение

Вы можете выбрать компоненты для установки, но было бы неплохо установить их все

По умолчанию он будет установлен в папке C:\Program Files (x86)\Nmap, но при необходимости измените его путь

Читайте также:  Git download linux mint

Это начнет установку NMAP и после того, как она будет выполнена; вы получите подтверждение

Идем вперед и поиграем с инструментами, чтобы понять, как это работает.

Вот некоторые из примеров.

Обнаружение версии

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

-sV аргумент команды будет определять версии и состояние запущенных служб

Проверка информации сертификатов

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

Однако вы также можете выполнять некоторые действия с NMAP.

Если вам интересно, ssl-cert.nse – это скрипт, который устанавливается вместе с NMAP.

Он доступен по умолчанию: C:\Program Files x86)\ Nmap\scripts

Проверка информации шифрования

Скрипт ssl-enum-cihpers.nse может использоваться для проверки информации шифрования SSL.

Каждый набор шифров отображается с буквой (от A до F), указывающей силу соединения.

Оценка основана на криптографической силе обмена ключами и потокового шифрования.

Выбор алгоритма целостности сообщения (хеш) не является фактором.

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

Чтобы обнаружить уязвимость DH (Diffie-Hellman), вы можете использовать синтаксис ниже:

Я надеюсь, что эта краткая инструкция поможет вам установить и ознакомиться с NMAP в операционной системе Windows.

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

Вся информация в данной статье представлена исключительно в образовательных и ознакомительных целях, и не является призывом к действию. Не применяйте полученные знания для исследования систем и сетей, к которым вы не имеете отношения без письменного согласия владельца. Помните, что по законодательству некоторых стран, даже сканирование портов является вмешательством в работу информационной системы и может квалифицироваться как правонарушение.
Вы можете исследовать ресурс с адресом scanme.nmap.org с целью тестирования программы. При этом разрешено использование исключительно программы Nmap и запрещено тестирование эксплойтов и проведение атак отказа в обслуживании (DOS – атак).

Если ты планируешь изучать всё то, что обобщенно, принято называть информационной безопасностью, то рано или поздно (причем скорее рано) ты услышишь или узнаешь про такую утилиту как Nmap. Кто-то может сказать: “А, да что там? Просто порты посканировать”. Не слушай этих людей. Знание возможностей этой утилиты и умение её применять, само по себе уже даёт серьёзные возможности в практике пентеста. И в этой статье я постараюсь показать тебе основы и дать наиболее необходимые рецепты использования Nmap, а также объяснить как он работает.

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

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

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

Если запустить nmap без каких либо параметров, то мы увидим файл справки:

Логика использования утилиты довольно проста. Как видно из справки:

запуская утилиту nmap мы сразу можем задать цель сканирования, с нужными нам настройками. Тут важно понимать, что всё что не является функционалом программы т.е. опциями и аргументами, nmap будет расценивать как цель, а значит мы можем вводить несколько объектов в качестве целей, а целями могут быть сетевые адреса, ip адреса, диапазоны ip адресов, сети, подсети и т.д.

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

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

СТАТУС ЧТО ОЗНАЧАЕТ
1. открыт
open
Приложение принимает на порт пакет или запросы на соединение
2. закрыт
closed
Порт отвечает на запросы, но не используется ни каким приложением
3. фильтруется
filtered
Запросы не доходят до этого порта, а значит невозможно определить открыт он или нет
4. не фильтруется
unfiltered
Порт доступен, но Nmap не может определить закрыт он или открыт. Как правило помогает использование другого способа сканирования
5. открыт|фильтруется
open|filtered
Не получается определить открыт порт или фильтруется. Возникает если открытый порт не отвечает. Как правило помогает использование другого способа сканирования
6. закрыт|фильтруется
closed|filtered
Не получается определить закрыт порт или фильтруется. Как правило помогает использование другого способа сканирования

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

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

Обнаружение хостов

Как, мы видим из справки Nmap первым пунктом идет обнаружение хостов. Само по себе это понятие довольно широкое, и состоит из первоначального обнаружения активных IP адресов, этот этап ещё принято называть пинг сканированием, тут нужно понимать что можно сканировать как, всем привычными, ICMP запросами, так и комбинируя их с TCP, UDP и ARP запросами. Обнаружив хост Nmap автоматически просканирует его порты если не задан параметр отменяющий это действие.

Опции Nmap для обнаружения хостов:

  • -sL
    Сканирование с целью составления списка.
    При выборе данной опции будет перечислен весь диапазона IP адресов в сети с присвоенными им именами (если такие есть). В конце списка будет отображено общее количество найденных IP. Если в качестве цели будет задано доменное имя то будет показан IP и его Reverse DNS.

  • -sP
    Пинг сканирование.
    Эта опция определяет активные хосты т.е. те которые отвечают на запросы и выводит их список. Если запустить эту опцию с правами root, то, также будут задействованы ARP запросы, благодаря чему мы узнаем mac-адреса работающих устройств в сети.

  • -Pn
    Пропустить пинг сканирование.
    При использовании этой опции Nmap будет считать, что все IP в исследуемой сети активны и будет сканировать весь диапазон IP адресов, в том числе все порты на каждом IP.
  • -PS / -PA / -PU
    Это команды для получения списка портов, Разница только в пакетах, которые будут отправлены хосту: PS – это TCP SYN, PA – это TCP ACK. Принципиальной разницы на самом деле нет, но если есть вероятность, что соединение блокируется брандмауэр, лучше использовать TCP ACK. Ну, а PU (нужен root) – это UDP пингование – используется для получения ICMP пакета с ошибкой “порт недостежим”, все остальные ошибки, в том числе отсутствие ответа говорят о том что хост не работает.
    В дополнение к указанным опциям можно указать какие именно типы ICMP пакетов использовать, делается это опциями -PE; -PP; -PM – это эхо запрос, запрос временной метки и запрос адресной маски соответственно, останавливаться отдельно на них не буду потому что такие запросы с большой долей вероятности будут заблокированы хостом или брандмауэром.

  • -PO
    Команда для получения списка протоколов пингованием с использованием IP протокола (для запуска необходим root). В этом случае должны приходить ответы по протоколу указанному в запросе, это означает что протокол активен, если приходит ответ что хост не достижим, это даёт понят, что протокол не поддерживается.
Читайте также:  Wallpapers для mac os

  • -PR
    Это ARP пингование. Наиболее оптимальный способ сканирования, позволяющий определить активные хосты, службы и порты ими использующиеся (для запуска необходим root).

  • –traceroute
    Опция позволяющая выполнить трасировку т.е. отследить путь к хосту, она применяется вместе с любым видом сканирования и работает на основании данных полученных в результате него (для запуска необходим root)

Приёмы сканирования

Мы подошли к разделу посвященному приемам сканирования портов. Почти все указанные в этом разделе опции требуют для запуска root, это нужно учитывать. Также единовременно можно использовать только один метод (исключение UDP сканирование (-sU) его можно комбинировать с любым видом TCP сканирования.

  • -sS
    TCP SYN сканирование. Это наиболее популярный и достаточно незаметный тип сканирования т.к. при его использовании TCP соединение никогда не устанавливается до конца. Работает это так: Nmap посылает SYN пакет, для хоста это выглядит как будто с ним хотят установить реальное соединение. Если приходит ответ SYN/ACK – значит порт открыт, а если RST – значит закрыт, если ответ не приходит или пришло ICMP-сообщение об ошибке – значит порт фильтруется.

  • -sU
    UDP сканирование. Позволяет сканировать порты используемые UDP службами, может быть скомбинировано с TCP сканированием (например: -sS -sU). Работает путём отправки пустого UDP заголовка на соответствующие порты. Если приходит ошибка “порт недостижим”, то в зависимости от типа ошибки Nmap определяет – порт закрыт или фильтруется, если в ответ пришел UDP – пакет значит порт открыт, а если ответа нет – будет присвоен статус open|filtered, в этой ситуации чтобы уточнить данные можно использовать опцию определения версии (-sV). Работает UDP сканирование крайне медленно, потому что бы ускорить процесс, есть смысл задать список интересующих портов (например -p U:53)

  • -sA
    TCP ACK сканирование которое используется для определения правил брандмауэров и фильтруемых ими портов.

  • -sO
    Сканирование IP протокола, таким способом можно определить какие IP протоколы поддерживаются целью. При получении любого ответа по любому протоколу, такой порт помечается как открытый, если получена ICMP ошибка “протокол недостежим” он будет помечен как закрытый, а иногда фильтруемый, если ответ не пришел то – “открыт|фильтруется”.

Определение портов и порядка сканирования

Иногда возникает необходимость просканировать какой-то конкретный порт или диапазон портов, причём если сразу известно какие порты являются целью, лучше так и делать, это может серьёзно сократить время и оставит меньше следов. Если не указывать порты которые мы хотим сканировать, то Nmap, по-умолчанию, будет сканировать все порты до 1024 включительно и все порты указанные в файле */nmap/nmap-services для протокола который будет сканироваться.

Для того чтобы вручную выбрать порты или диапазон портов для сканирования, используется параметр:
-p
означающий, что мы хотим сканировать только определенные порты. Мы должны сначала указать тип сканирования, а потом порты которые хотим сканировать, также можно указать протокол TCP (опция T:) или UDP (опция U:) (если не указывать задействуются оба), при этом не забывай, что чтобы применялось UDP сканирование должна использоваться опция -sU, а для TCP сканирования использоваться опция -sS (или аналогичная), например:

Примечание
Также есть чуть менее распространенные способы определения целевых портов, если мы укажем параметр -F, то будет просканировано 100 самых распространенных портов, а если -p-, то все 65535.

Определение служб, их версий и операционной системы

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

  • -sV
    Определение версий. Обнаружив порт Nmap начинает посылать на него соответствующие запросы, что бы определить какая именно служба этот порт использует, для этого используется информация из базы данных nmap-service-probes (лежит в папке nmap), где содержаться запросы и и перечислены виды ответов на них, для распознавания соответствующих служб.

  • –version-intensity
    Опция устанавливающая интенсивность, определяет какие запросы будут использоваться при сканировании. Можно установить значение от 1 до 9. Чем ниже значение, тем быстрее пройдет сканирование, чем выше – тем медленнее, но больше вероятность правильного определения службы. Если опция не указанна используется значение по умолчанию – 7, которого достаточно в большинстве случаев. Если есть желание использовать максимальную интенсивность, используй параметр –version-all, это гарантирует, что каждый единичный запрос будет направлен на каждый порт (и запасись терпением, это может занять какое-то время)
  • -O
    Включить режим определения ОС. При включении этой опции Nmap посылает несколько TCP и UDP пакетов на хост, а полученные результаты сравниваются с данными из файла nmap-os-db (лежит в папке nmap) и если обнаруживает совпадения, показывает ответ для какой ОС и какой её версии типично такое поведение. По этим же совпадениям Nmap попытается определить тип устройства и его производителя

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

Скриптовый движок 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
    Скрипты проверяющие наличие известных уязвимостей, результаты будут показаны только в случае их обнаружения
Читайте также:  Rufus download windows 10

Использование скриптов 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
    Эта опция позволяет передавать аргументы скриптам, для более точной настройки. Можно указывать сразу несколько аргументов, перечисляя их через запятую, в качестве значения можно указывать фиксированные значения, либо значения из файла. Например:

Подобная команда проверит настройки сервера базы данных 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-macMAC-адрес
    Подмена 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.

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

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

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

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

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

  • vulscandb=база_данных
    Использовать указанную базу данных (из списка выше), по умолчанию будут задействованы все существующие базы
  • –script-args vulscaninteractive=1
    Включить интерактивный режим

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

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

Оцените статью