Перейти к публикации
Rabb1tRun

NMAP в практике пентеста.

Рекомендованные сообщения

Intro

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

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

1b10174b5315836100cc3.png
 

Шпаргалка по основным командам

Сканировать Множество IP Адресов:

$ nmap 192.168.1.1 192.168.1.2 192.168.1.3
$ namp 192.168.1.1,2,3

Сканировать Подсеть:

$ nmap 192.168.1.0/24
$ nmap 192.168.1.*

Сканировать Диапазон IP Адресов (192.168.1.0 — 192.168.1.200):

$ nmap 192.168.1.0-200

Сканировать сеть в поиске Активных Хостов:

$ nmap -sn 192.168.1.0/24

Сканирование списка хостов/сетей из Файла:

$ nmap -iL input.txt

Формат файла:

# Записи могут быть представлены в любом из форматов, с которыми работает
# Nmap из командной строки (IP адреса, имена хостов, CIDR, IPv6, или октетные
# диапазоны). Записи должны разделятся одним или более пробелами, табуляциями
# или переходами на новую строку.

$ cat input.txt
server.social_engineering_club.com
192.168.1.0/24
192.168.2.1,2,3
192.168.3.0-200

Исключить Цели из сканирования Nmap-ом:

$ nmap 192.168.1.0/24 --exclude 192.168.1.1
$ nmap 192.168.1.0/24 --exclude 192.168.1.1 192.168.1.5
$ nmap 192.168.1.0/24 --exclude 192.168.1.1,2,3

Исключить Список хостов, взятых из файла:

$ nmap 192.168.1.0/24 --excludefile @social_engineering_club
.txt

Формат файла с исключенными хостами аналогичен приведенному выше.

Сканировать Один Порт:

$ nmap -p 80 192.168.1.1

Сканировать Несколько Портов:

$ nmap -p 80,443 192.168.1.1

Сканировать Диапазон Портов:

$ nmap -p 80-1000 192.168.1.1

Сканировать Все Порты:

$ nmap -p "*" 192.168.1.1

Сканировать несколько самых Распространенных Портов:

$ nmap --top-ports 5 192.168.1.1
$ nmap --top-ports 10 192.168.1.1

Определить какие IP Протоколы (TCP, UDP, ICMP, и т.д.) поддерживает сканируемый хост:

$ nmap -sO 192.168.1.1

Сканировать все TCP Порты:

$ nmap -sT 192.168.1.1

Сканировать все UDP Порты:

$ nmap -sU 192.168.1.1

Объединение сканирования разных портов:

$ nmap -p U:53,79,113,T:21-25,80,443,8080 192.168.1.1

Активировать Быстрый Режим сканирования:

$ nmap -F 192.168.1.1

Включить Определение ОС:

$ nmap -O 192.168.1.1

Включить Определение Версии Сервисов:

$ nmap -sV 192.168.1.1

Узнать, защищен ли компьютер какими-либо Пакетными Фильтрами или Фаерволом:

$ nmap -sA 192.168.1.1

Подменить MAC Адреса:

$ nmap --spoof-mac 00:11:22:33:44:55 192.168.1.1

Подменить MAC Адрес Случайным MAC-ом:

$ nmap --spoof-mac 0 192.168.1.1

Сканирование Фаервола на Уязвимости

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

TCP Null сканирование:

$ nmap -sN 192.168.1.1

TCP Fin сканирование:

$ nmap -sF 192.168.1.1

TCP Xmas сканирование:

$ nmap -sX 192.168.1.1

Скрытое Сканирование

TCP SYN сканирование:

$ nmap -sS 192.168.0.1

Никогда не производить обратное преобразование DNS имен для каждого обнаруженного активного IP адреса:

$ nmap -n 192.168.1.1

Сохранить результат сканирования Nmap в Текстовый Файл:

$ nmap 192.168.1.1 > output.txt
$ nmap -oN output.txt 192.168.1.1
$ nmap tg chanel @Social_Engineering_club
533132e0cb608d0f5ca2c.png
Cheat Sheet nmap
1b10174b5315836100cc3.png
 

Юзаем скрипты NSE для автоматизации

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

Короче говоря, NSE позволяет не только использовать всю мощь Nmap, но и автоматизировать многие действия.

1b10174b5315836100cc3.png
 

Готовые библиотеки NSE

Чтобы сделать программирование скриптов на Lua еще более эффективным, в Nmap встроено много дополнительных библиотек, специально заточенных под выполнение различных сетевых проверок. Все они находятся в папке %nmap%/nselib. Чтобы ты не изобретал велосипед, придумывая, например, как выполнить запрос к DNS, привожу список наиболее часто используемых библиотек:

  • backdoor — простейшая реализация бэкдора в системе;
  • bin — работа с двоичными данными;
  • datafiles — библиотека для работы со встроенными файла Nmap (например, nmapprotocols — описанием и номерами портов различных протоколов);
  • default — наиболее часто используемые сетевые сценарии;
  • dns — работа с DNS;
  • http — работа с HTTP;
  • msrpc — библиотека для работы с вызовами MSRPC;
  • mysql — некоторые операции с MySQL;
  • netbios — работа с NetBIOS-трафиком;
  • nmap — взаимодействие с ядром сканера;
  • packer — манипулирование с пакетами в RAW-виде;
  • proxy — работа с прокси;
  • shortport — работа с портами;
  • smb — работа с SMB-протоколом;
  • sss1/ssh2 — работа с SSH.
1b10174b5315836100cc3.png
 

Примеры использования скриптов NSE

1.Поиск MySQL серверов, позволяющий вход root без пароля или анонимный вход

Для этого имеется скрипт mysql-empty-password:

nmap --script-help mysql-empty-password

2.Брутфорс DNS

Скрипт dns-brute пытается перечислить DNS имён хостов, делая запросы по распространённым поддоменам. Обнаружение поддоменов, связанных с доменом организации, во время оценки безопасности может раскрыть новые цели.

nmap -p 80 --script "dns-brute" digitalocean.com

3.Поиск хостов на одном IP

Другая тактика по расширению площади атаки — это поиск виртуальных хостов на одном IP адресе, который вы пытаетесь скомпрометировать (или оценить). Это может быть сделано с использованием скриптов hostmap-*. На данный момент в NSE коллекции таких скриптов три: hostmap-bfk, hostmap-ip2hosts, hostmap-robtex. 

nmap -sn --script "hostmap-ip2hosts" spryt.ru

4.Поиск интересных файлов на веб-сервере (веб-сайте)

Это более агрессивный тест. Он пытается найти интересные файлы и каталоги на веб-сервере. Поскольку это осуществляется обычным перебором популярных названий, то он оставляет много следов в веб-логах сервера. Они выглядят как сообщения об ошибках при попытке доступа к несуществующим файлам и каталогам (HTTP 404 not found).

nmap --script "http-enum" spryt.ru

5.Запуск всех скриптов для сбора информации о веб-сервере и веб-сайте

Вместо указания конкретного скрипта, можно указывать группы. В зависимости от хостов (персональный компьютер, сервер, хост в корпоративной сети), а также в зависимости от целей (поиск скомпрометированных машин, поиск заражённых вирусами машин, проверка надёжности паролей, анализ состояния хоста, анализ репутации, разведка и т. д.) выбор групп может быть различным. Например, для веб-сайта можно использовать группы auth, discovery, version (аутентификация, обнаружение, определение версий). Пример команды:

nmap --script "auth,discovery,version" -p 80,443 suip.biz

С исправлением надписей на русском:

echo -e "$(sudo nmap --script "auth,discovery,version" -p 80,443 suip.biz)"
1b10174b5315836100cc3.png
 

Симбиоз nmap и Metasploit 'а

Сканирование портов можно провести с помощью команды db_nmap – утилиты-«обертки» для nmap в Metasploit Framework, которая позволяет сохранять результаты сканирования в базу данных и потом заюзать ее для выбора спл0йта и атаки.

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

Из результатов сканирования портов мы можем узнать не только какие сетевые порты открыты, но и версии служб, если использовали ключ -sV, а также предположительную версию операционной систем (ключ -О).

jw2fqc41fsuexber1djus0lhg3a.png
 

После завершения сканирования сети имеет смысл выгрузить данные из базы Metasploit с помощью команды db_export и импортировать получившийся xml-файл в MS Excel или LibreOffice Calc. В дальнейшем данный файл можно использовать для поиска узлов с определенными портами и вести рабочие заметки с результатами тестирования каждого узла.

mygxhnh5dwl9tjekvsf7pshsap0.png
 

1.Поиск общедоступных сетевых папок

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

Для поиска SMB-ресурсов необходимо воспользоваться модулем auxiliary/scanner/smb/smb_enumshares, а для NFS: auxiliary/scanner/nfs/nfsmount.

drq1pyfgn1bdxeruaqukpa0ls50.png
 
izqxz9i02br1grv30aste1721ay.png
 

2.Поиск СУБД

Для поиска СУБД MS SQL имеет смысл использовать модуль auxiliary/scanner/mssql/mssql_ping, так как он позволяет не только обнаружить серверы СУБД по открытому UDP порту 1434, но и определить TCP-порт, по которому база данных ждет подключения.

3.Определение имен NetBIOS

Зачастую полезно определить имена NetBIOS, так как в них тоже может содержаться полезная информация (например, к какой системе относится тот или иной узел). Для этого можно воспользоваться модулем auxiliary/scanner/netbios/nbname.

0hiojlpcfwr_zezblgh-qcobsti.png
 
1b10174b5315836100cc3.png
 

Убойная вещь nmap with CVE

Это крутецкая шутка, так как сканируя nmap'ом вражескую сеть ты сразу получаешь CVE листинг уязвимостей, а значит готов ринуться в бой. Для этого нам нужно прикрутить плагин\скрипт NorthernSec/CVE-Scan.

Наш сканер юзает базы данных nmap-vulners and vulscan дял обнаружения дыр.

Вот так выглядит скрин обычного скана nmap'а

86ea22678867e9144c314.png
Обычный скан

А вот с опцией CVE-Scan

415318c5ee630be76601a.png
CVE-Scan

Погнали дальше!

1b10174b5315836100cc3.png
 

Установка движка

Открывай терминал и пиши заклинания:

/nmap/scripts/
git clone https://github.com/vulnersCom/nmap-vulners.git
easily-detect-cves-with-nmap-scripts.w14
 

Теперь ставим сам Vulscan

git clone https://github.com/scipag/vulscan.git

Смотрим какие базы подгружены

ls vulscan/*.csv
easily-detect-cves-with-nmap-scripts.w14
 

Vulscan supports a numbered of excellent exploit databases. Here is a complete list:

Обновляем наше барахло:

cd vulscan/utilities/updater/

Запускам скрипт апдейта, он все сделает сам))

chmod +x updateFiles.sh
./updateFiles.sh

И смотрим листинг

easily-detect-cves-with-nmap-scripts.w14
 
1b10174b5315836100cc3.png
 

А вот и сам Scan Using Nmap-Vulners

Общий синтаксис такой

nmap --script nmap-vulners -sV <target IP>
easily-detect-cves-with-nmap-scripts.w14
Палим веб сервер
easily-detect-cves-with-nmap-scripts.w14
Палим тачку

Если ты хочешь юзать какую-то особенную БД то вот тебе помощь:

nmap --script vulscan --script-args vulscandb=database_name -sV <target IP>
nmap --script vulscan --script-args vulscandb=scipvuldb.csv -sV <target IP>
nmap --script vulscan --script-args vulscandb=exploitdb.csv -sV <target IP>
nmap --script vulscan --script-args vulscandb=securitytracker.csv -sV <target IP>
easily-detect-cves-with-nmap-scripts.w14
 

Полный скан сразу в одной команде

nmap --script nmap-vulners,vulscan --script-args vulscandb=scipvuldb.csv -sV <target IP>
easily-detect-cves-with-nmap-scripts.w14
 
1b10174b5315836100cc3.png
 

Python скрипты для визуализации и форматинга

CVE-Scan is composed of 3 major functions:

  • converter.py - Converts the nmap xml to the CVE-Scan json format
  • analyzer.py - Analyses either an nmap xml or a CVE-Scan json and queries CVE-Search to obtain vulnerability information
  • visualizer.py - Visualizes the results of analyzer.py

and Nmap2CVE-Search.py, which does all of the above in 1 go.

You can either run python3 Nmap2CVE-Search.py output.xml to enhance and visualize the report, or python3 analyzer.py -x output.xml enhanced.json, to create the enhanced report, followed by python3 visualizer.py enhanced.json to visualize the report (default webserver on localhost:5050. Add -t for terminal view)

All scripts in the bin folder can be called with the -h flag, to get more information about it.


Просмотреть полную article

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Это прям энциклопедия

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Скорее пошаговое руководство

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.


×
×
  • Создать...