Nmap — как сканировать, как обнаружить уязвимость и как пользоваться сканером?

Nmap - как сканировать, как обнаружить уязвимость и как пользоваться hacker

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

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

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

sudo apt install nmap

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

В данной статье вы узнаете как:

  • как использовать nmap в Windows и Linux
  • как просканировать порты на удаленном хосте через nmap
  • nmap в примерах
  • как с помощью nmap просканировать определенный порт
  • как просканировать сеть с помощью nmap
  • сканирование через nmap диапазон ip адресов
  • сканирование локальной подсети через nmap
  • как сканировать на уязвимости через nmap
  • как найти уязвимость сервера через nmap

Как пользоваться Nmap

Если запустить nmap без каких либо параметров можно почитать вывод справки или почитать на оф сайте (именно английской версии ) справка по ключам и командам nmap

Самая полная справка на русском по nmap на 2023 год

Nmap 7.92SVN ( https://nmap.org )
Использование: nmap [Scan Type(s)] [Options] {target specification}
СПЕЦИФИКАЦИЯ ЦЕЛИ:
  Может передавать имена хостов, IP-адреса, сети и т.д.
  Например: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254
  -iL <inputfilename>: Ввод из списка хостов/сети
  -iR <num hosts>: Выбрать случайные цели
  --exclude <host1[,host2][,host3],...>: Исключить хосты/сети
  --excludefile <exclude_file>: Исключить список из файла
ОБНАРУЖЕНИЕ ХОСТОВ:
  -sL: List Scan - просто перечислить цели для сканирования.
  -sn: Ping Scan - отключить сканирование портов
  -Pn: Рассматривать все хосты как онлайн - пропустить обнаружение хостов.
  -PS/PA/PU/PY[portlist]: Обнаружение TCP SYN/ACK, UDP или SCTP на заданных портах.
  -PE/PP/PM: ICMP эхо, временная метка и запрос маски сети.
  -PO[список протоколов]: IP Protocol Ping
  -n/-R: Никогда не выполнять разрешение DNS/Всегда выполнять разрешение [по умолчанию: иногда]
  --dns-servers <serv1[,serv2],...>: указать пользовательские DNS-серверы
  --system-dns: Использовать DNS-резольвер операционной системы
  --traceroute: Отслеживать путь к каждому хосту
МЕТОДЫ СКАНИРОВАНИЯ:
  -sS/sT/sA/sW/sM: сканирование TCP SYN/Connect()/ACK/Window/Maimon
  -sU: UDP сканирование
  -sN/sF/sX: сканирование TCP Null, FIN и Xmas
  --scanflags <флаги>: Настроить флаги сканирования TCP
  -sI <zombie host[:probeport]>: сканирование вхолостую
  -sY/sZ: Сканирование SCTP INIT/COOKIE-ECHO
  -sO: сканирование IP-протокола
  -b <FTP relay host>: Сканирование отскока FTP
СПЕЦИФИКАЦИЯ ПОРТОВ И ПОРЯДОК СКАНИРОВАНИЯ:
  -p <диапазон портов>: Сканировать только указанные порты
    Например: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9
  --exclude-ports <диапазон портов>: Исключить указанные порты из сканирования.
  -F: Быстрый режим - сканирование меньшего количества портов, чем сканирование по умолчанию.
  -r: Сканировать порты последовательно - не рандомизировать
  --top-ports <число>: Сканировать <число> наиболее распространенных портов
  --port-ratio <ratio>: Сканировать порты, более распространенные, чем <ratio>.
ОПРЕДЕЛЕНИЕ СЛУЖБ И ИХ ВЕРСИЙ:  
  -sV: Проверить открытые порты для определения информации о сервисе/версии.
  --version-intensity <уровень>: Установить от 0 (светло) до 9 (попробовать все зонды)
  --version-light: Ограничиться наиболее вероятными зондами (интенсивность 2)
  --version-all: Пробовать все зонды (интенсивность 9)
  --version-trace: Показать подробную активность сканирования версии (для отладки).
СКАНИРОВАНИЕ С ИСПОЛЬЗОВАНИЕМ СКРИПТОВ:
  -sC: эквивалентно --script=default
  --script=<Lua скрипты>: <Lua скрипты> - это список, разделенный запятыми, состоящий из
           каталогов, скрипт-файлов или скрипт-категорий
  --script-args=<n1=v1,[n2=v2,...]>: предоставляет аргументы для скриптов
  --script-args-file=filename: предоставить аргументы сценария NSE в файле
  --script-trace: Показать все отправленные и полученные данные
  --script-updatedb: Обновить базу данных скриптов.
  --script-help=<Lua scripts>: показать справку о скриптах.
           <Lua скрипты> - это список скрипт-файлов или
           категорий сценариев.
ОПРЕДЕЛЕНИЕ ОС:
  -O: Включить обнаружение ОС
  --osscan-limit: Ограничить обнаружение ОС перспективными целями
  --osscan-guess: Guess OS more aggressively
ОПЦИИ УПРАВЛЕНИЯ ВРЕМЕНЕМ И ПРОИЗВОДИТЕЛЬНОСТЬЮ: 
Опции, принимающие аргумент <время>, задаются в миллисекундах, пока вы не добавите 's' (секунды), 'm' (минуты),или 'h' (часы) к значению (напр. 30m).      
       -T[0-5]: Установить шаблон настроек управления временем (больше - быстрее)      
       --min-hostgroup/max-hostgroup <колхостов>: Установить размер групп для параллельного сканирования
      --min-parallelism/max-parallelism <колхостов>: Регулирует распараллеливание запросов       
      --min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <время>: Регулирует время ожидания ответа на запрос      
      --max-retries <количествопопыток>: Задает максимальное количество повторных передач запроса
      --host-timeout <время>: Прекращает сканирование медленных целей
      --scan-delay/--max-scan-delay <время>: Регулирует задержку между запросами
      --min-rate <число>: Посылать запросы с интенсивностью не меньше чем <число> в секунду
      --max-rate <число>: Посылать запросы с интенсивностью не больше чем <число> в секунду
ОБХОД БРАНДМАУЭРОВ/IDS:
  -f; --mtu <val>: fragment packets (optionally w/given MTU)
  -D <decoy1,decoy2[,ME],...>: Маскировка сканирования приманками
  -S <IP_адрес>: подделывать адрес источника
  -e <iface>: Использовать указанный интерфейс
  -g/--source-port <portnum>: Использовать заданный номер порта
  --proxies <url1,[url2],...>: Ретранслировать соединения через HTTP/SOCKS4 прокси.
  --data <hex-строка>: Добавлять пользовательскую полезную нагрузку к отправляемым пакетам.
  --data-string <строка>: Добавить пользовательскую ASCII-строку в отправляемые пакеты.
  --data-length <num>: Добавить случайные данные в отправляемые пакеты
  --ip-options <options>: Отправлять пакеты с указанными ip-опциями.
  --ttl <val>: Устанавливает поле времени жизни IP-адреса.
  --spoof-mac <mac-адрес/префикс/имя производителя>: подделать ваш MAC-адрес
  --badsum: Отправлять пакеты с фальшивой контрольной суммой TCP/UDP/SCTP.
ВЫВОД РЕЗУЛЬТАТОВ:
  -oN/-oX/-oS/-oG <файл>: Вывод сканирования в обычном, XML, s|<rIpt kIddi3,
     и Grepable формате, соответственно, в заданное имя файла.
  -oA <basename>: Вывод сразу в трех основных форматах.
  -v: Повысить уровень многословности (для большего эффекта используйте -vv или более).
  -d: Повысить уровень отладки (для большего эффекта используйте -dd или больше)
  --reason: Отображать причину, по которой порт находится в определенном состоянии.
  --open: Показывать только открытые (или возможно открытые) порты.
  --packet-trace: Показать все отправленные и полученные пакеты
  --iflist: Вывести интерфейсы хоста и маршруты (для отладки)
  --append-output: Добавлять в указанные выходные файлы, а не уничтожать их.
  --resume <filename>: Возобновить прерванное сканирование
  --noninteractive: Отключить взаимодействие с клавиатурой во время выполнения
  --stylesheet <путь/URL>: Таблица стилей XSL для преобразования XML-вывода в HTML
  --webxml: Ссылаться на таблицу стилей с сайта Nmap.Org для более переносимого XML
  --no-stylesheet: Предотвратить ассоциацию таблицы стилей XSL с выводом XML.
РАЗЛИЧНЫЕ ОПЦИИ:
  -6: Включить сканирование IPv6
  -A: Включить обнаружение ОС, определение версии, сканирование сценариев и traceroute
  --datadir <dirname>: Указать местоположение файла данных Nmap.
  --send-eth/--send-ip: Отправлять с помощью необработанных кадров ethernet или IP-пакетов.
  --privileged: Предполагать, что пользователь полностью привилегирован.
  --unprivileged: Предполагать, что пользователь не имеет привилегий для необработанных сокетов.
  -V: Вывести номер версии
  -h: Вывести эту краткую страницу справки.
ПРИМЕРЫ использования Nmap:
  nmap -v -A scanme.nmap.org
  nmap -v -sn 192.168.0.0/16 10.0.0.0/8
  nmap -v -iR 10000 -Pn -p 80

ДОПОЛНИТЕЛЬНЫЕ ПАРАМЕТРЫ И ПРИМЕРЫ СМ. НА СТРАНИЦЕ MAN (https://nmap.org/book/man.html)

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

nmap [Тип(ы) Сканирования] [Опции] {цель сканирования}

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

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

Статус состояния портов

СТАТУСЧТО ОЗНАЧАЕТ
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.

Nmap - как сканировать, как обнаружить уязвимость и как пользоваться сканером?

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

Nmap - как сканировать, как обнаружить уязвимость и как пользоваться сканером?

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

-PS / -PA / -PU — Это команды для получения списка портов. Разница только в пакетах, которые будут отправлены хосту: PS — это TCP SYN, PA — это TCP ACK. Принципиальной разницы на самом деле нет. Но если есть вероятность, что соединение блокируется брандмауэр, лучше использовать TCP ACK. Ну, а PU (нужен root) — это UDP пингование. Используется для получения ICMP пакета с ошибкой «порт недостежим». Все остальные ошибки, в том числе отсутствие ответа говорят о том что хост не работает.

В дополнение к указанным опциям можно указать какие именно типы ICMP пакетов использовать. Делается это опциями -PE; -PP; -PM — это эхо запрос, запрос временной метки и запрос адресной маски соответственно. Останавливаться отдельно на них не буду потому что такие запросы с большой долей вероятности будут заблокированы хостом или брандмауэром.

Nmap - как сканировать, как обнаружить уязвимость и как пользоваться сканером?

-PO — Команда для получения списка протоколов пингованием с использованием IP протокола (для запуска необходим root). В этом случае должны приходить ответы по протоколу указанному в запросе. Это означает что протокол активен. Если приходит ответ что хост не достижим, это даёт понять, что протокол не поддерживается.

Nmap - как сканировать, как обнаружить уязвимость и как пользоваться сканером?

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

Nmap - как сканировать, как обнаружить уязвимость и как пользоваться сканером?

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

Nmap - как сканировать, как обнаружить уязвимость и как пользоваться сканером?

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

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

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

Nmap - как сканировать, как обнаружить уязвимость и как пользоваться сканером?

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

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

Nmap - как сканировать, как обнаружить уязвимость и как пользоваться сканером?

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

Nmap - как сканировать, как обнаружить уязвимость и как пользоваться сканером?

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

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

Для того чтобы вручную выбрать порты или диапазон портов для сканирования, используется параметр:

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

sudo nmap -sS -sU -p 22,80,111,U:53,137 scanme.nmap.org
Nmap - как сканировать, как обнаружить уязвимость и как пользоваться сканером?

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

Примечание

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

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

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

Nmap - как сканировать, как обнаружить уязвимость и как пользоваться сканером?

—version-intensity — Опция устанавливающая интенсивность, определяет какие запросы будут использоваться при сканировании. Можно установить значение от 1 до 9. Чем ниже значение, тем быстрее пройдет сканирование. Чем выше — тем медленнее, но больше вероятность правильного определения службы. Если опция не указанна используется значение по умолчанию — 7, которого достаточно в большинстве случаев. Если есть желание использовать максимальную интенсивность, используй параметр —version-all, это гарантирует, что каждый единичный запрос будет направлен на каждый порт (и запасись терпением, это может занять какое-то время)

-O — Включить режим определения ОС. При включении этой опции Nmap посылает несколько TCP и UDP пакетов на хост, а полученные результаты сравниваются с данными из файла nmap-os-db (лежит в папке nmap) и если обнаруживает совпадения, показывает ответ для какой ОС и какой её версии типично такое поведение. По этим же совпадениям Nmap попытается определить тип устройства и его производителя

Nmap - как сканировать, как обнаружить уязвимость и как пользоваться сканером?

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

Примечание

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

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

С полным списком скриптов и их описанием можно ознакомится здесь.

Категории скриптов 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 (как я уже писал выше лучше использовать опцию —А)

Nmap - как сканировать, как обнаружить уязвимость и как пользоваться сканером?

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

Nmap - как сканировать, как обнаружить уязвимость и как пользоваться сканером?

—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
Nmap - как сканировать, как обнаружить уязвимость и как пользоваться сканером?

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

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

-Т шаблон

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

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

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

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

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

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

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 как пользоваться
  • nmap windows как пользоваться
  • nmap открытые порты
  • nmap полное сканирование
  • nmap сканирование портов
  • nmap сканирование сети
  • nmap сканировать сеть
  • udp сканирование nmap
  • использование nmap
  • сканер портов nmap
  • сканирование локальной сети nmap
  • скачать nmap для windows
nibbl
Оцените автора
NIBBL
Добавить комментарий