kbook


Project maintained by atilla777 Hosted on GitHub Pages — Theme by mattgraham
Главная страница
Информационная безопасность
Сканирование

Nmap

Общие сведения

Порядок указания опций nmap

Сначала перечисляются опции и последним указывается цель (хост или диапазон/подсеть).

nmap -опция1 параметр_опции -опция2 -опция3 хост

Пример

nmap -n -oX результат.xml -Pn -sV 192.168.1.1

При запуске nmap для сканирования портов (по умолчанию без указания опций) из под непривилегированного пользователя устанавливается TCP соединение (используется системный вызов connect()), что медленней чем просто отправка пакета SYN (Stealth Scan) которая происходит при запуске из под суперпользователя.

В качестве быстрого старта (не думаем об опциях, получаем максимум информации - сканирование с предустановленным набором опций -O -sV –traceroute -sC):

nmap -A <хост>

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

Поиск рабочих хостов - выполнить только фазу обнаружения без сканирования портов (хосты определяются с помощью различных методик, в том числе через ARP request):

nmap -sn сеть

Ping диапазона, для определения рабочих хостов, работает даже в случае блокирования PING request и response (если ICMP ответы не приходят, то есть запрещены на хосте или заблокированы МЭ), посылается SYN запрос, и, если в ответ приходит SYN/ACK или RST хост считается рабочим

nmap –sP диапазон адресов

Состояние портов

Оптимизация времени выполнения сканирования

Не проверять, что хост активен (по умолчанию nmap делает такую порверку послав ICMP echo request, SYN пакет на 443 порт, ACK пакет на порт 80 и ICMP timestamp)

nmap -Pn -sS <хост>

Не выполнять обратное преобразование просканированных IP-адресов в DNS имена

nmap -n -sS <хост>

Опции T0 - T5 задают шаблоны временных параметров используемых nmap

С помощью опции -T4 можно указать что сканирование порта не должно превышать 10 мс.

Выбор/указание хостов

Примеры задания перечня сканируемых хостов

Выбор/указание портов

По умолчанию nmap сканирует первые 1000 портов хоста. Для указания конкретного порта или диапазона используется опция -p

nmap -p 80,110-111 <хост>

Все (65535) порты (-)

nmap -p- <хост>

Топ “популярных” портов

nmap --top-ports <количество> <хост>

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

Посмотреть список популярных портов можно одним из следующих способов

nmap --top-ports 2000 localhost -v -oG -

или

sort -r -k3 /usr/share/nmap/nmap-services

Варианты (методики) сканирования портов

Сканирование без установления TCP соединения

nmap –sS <хост>

Цели посылается SYN, если в ответ приходит SYN/ACK – порт открыт (opened), соединение сбрасывается пакетом RST и не фиксируется в журналах атакуемой системы как установленное соединение,) если в ответ приходит RST – порт закрыт (не используется) если в ответ ничего не приходит – порт фильтруется

Сканирование UDP портов

nmap –sU <хост>

Если в ответ на UDP пакет цель пришлет ICP port unreachable, порт считается закрытым (не используется), если ответа нет, порт считается или открытым (UDP не устанавливает соединения и ответа об успешном получении пакета хостом жертвой не будет) или фильтруемым МЭ)

ACK сканирование портов, позволяет выяснить какой МЭ на хосте используется statefull или stateless

nmap –sA <хост>

Хосту посылается ACK пакет, пропускаемый stateless МЭ

Сканирование с установлением TCP соединения

nmap –sT <хост>

Обнаружение сервисов и определение версии ОС

Версия ОС

nmap –O <хост>

Название и версия запущенных сетевых служб

nmap –sV <хост>

Версия ОС и версия сервиса возвращается в формате CPE (Common Platform Enumeration - стандарт MITRE для описания объектов защиты - программ, платформ и систем).

Для управления количеством различных проверок версии ОС и сервиса задается опция (фактически - управление временем проверки)

**–version-intensity <число>**

где число может быть от 0 до 9 (по умолчанию 7)

При указании 0 - информация о службе берется из файла, в котором номер порта сопоставлен с названием службы

Сохранение результатов

в удобном для чтении формате

-oN имя <файл.tt>

в XML

-oX <файл.xml>

для использования с grep

-oG <файл.xml>

Для того, чтобы nmap выдавал подробный отчет о своих действиях используется опция -v -v -v или v3

nmap -sS -v3 10.1.1.1

Прочее

Сканирование IP6

nmap –6 <хост>

Обход фаерволов

Фрагментировать посылаемые пакеты

-f

С какого порта выполнять сканирование

–source-port <порт>

Длина пакета

–data-length

Сколько параллельных сканирований хоста

–max-parallelism

С какой задержкой посылать пакеты

–scan-delay

NSE скрипты

Скрипты — это текстовые файлы на языке lua.

Они размещены в папке /scripts, которая расположена в папке программы nmap.

NSE скрипты поделены на категории по их назначению, опасности/безопасности и т.п

Один скрипт может принадлежать нескольким категориям.

Выполнить сканирование портов и задействовать скрипты NSE (это тоже самое, что и nmap –script defaults)

nmap -sС <хост>

При этом перечень скриптов выбирается nmap самостоятельно, в зависимости от выполнения условий (значения хостов или портов), заданных в предопределенных правилах

Выполнить сканирование портов и вручную указать используемые скрипты или категории

nmap --script <скрипт> <хост>

или

nmap --script <категория> <хост>

где скрипт это или сам скрипт (файл в папке scripts), категория скриптов или папка со скриптами.

Одновременно можно выбрать несколько скриптов

nmap --script <скрипт1>, <скрипт2> <хост>

Также можно выбрать несколько скриптов используя wildcard (будут выбраны все скрипты, начинающиеся с ssl)

nmap --script ssl* -p 443 jumpnowtek.com

Указать аргумент скрипта

nmap --script <скрипт> --script-args <аргумент>=<значение> <хост>

Используемые скрипты можно указывать через условия

Пример запуска всех скриптов из категории оценки наличия уязвимостей (категория vuln)

nmap --script vuln <хост>

База не включенных в поставку nmap скриптов https://secwiki.org/w/Nmap/External_Script_Library

Обновить базу скриптов

1) положить новые скрипты в папку /scripts 2) выполнить

nmap --script-updatedb

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

nmap --script <скрипт>.nse <хост>

Основные скрипты NSE

broadcast - получение информации о сети через широковещательные запросы (netbios мастер браузеры, устройства upnp)

nmap --script broadcast

broadcast-listener - снифинг широковещательного трафика и выявление использование протоколов CDP, HSRP, Spotify, DropBox, DHCP, ARP:

nmap --script broadcast-listener

vulscan

Сторонний (не включен в базовую поставку) скрипт описка уязвимостей по локальной копии баз osvdb, cve и т.п.

http://www.computec.ch/projekte/vulscan/

nmap -Pn -sV --script vulscan.nse хост

где опция -sV обязательна

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

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

–script-args vulscanversiondetection=0

Работа с HTTP

Сбор информации о веб-сервере (HTTP заголовки сервера, HTTP методы сервера, title сайта, SSL сертификат)

nmap -Pn -p80 --script http-headers, http-title, ssl-cert, http-methods http.useragent="Mozilla 42" <хост>

http-enum - «интересные» папки веб сервера

nmap -Pn -p80 --script http-enum <хост>

Нижеследующие скрипты по умолчанию используют базы логинов и паролей unpwdb из папки Nmap\nselib\data.

http-brute - подбор логина/пароля для входа на сайт:

nmap -p 80 - script http-brute <хост>

http-form-brute - подбор логина/пароля для входа на сайт через форму:

nmap -p 80 - script http-form-brute хост

Можно указать имена полей формы для логина/пароля

http-form-brute.uservar=имя

http-form-brute.passvar=имя

ftp-brute - подбор логина/пароля для входа на ftp

nmap -p 21 - script ftp-brute <хост>