Одним из первых этапов планирования и дальнейшей реализации теста на проникновение является первичный сбор информации об объекте тестирования, то есть в нашем конкретном случае это nmap сканирование сканирование сети, идентификация машин, сетевых устройств, версий ОС и ПО, доступных сервисов и т. д. Все это поможет нам преодолеть атакованные цели (ведь ломать нужно только те машины, которые действительно что-то дают злоумышленнику) и подобрать для них подходящие инструменты.
Сегодня для этих целей мы будем использовать сканер nmap и все примочки что у него есть, чтобы упростить задачу и получить максимальный эффект.
Шпаргалка по основным командам
Сканировать Множество 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.shellhacks.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 exclude.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 --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 разных портов:
$ nmap -p U:53,79,113,T:21-25,80,443,8080 192.168.1.1
Активировать Быстрый Режим сканирования nmap:
$ 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
Сканирование Фаервола на Уязвимости
Эти три типа сканирования nmap используют незаметную лазейку в 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
Cheat Sheet nmap
Юзаем скрипты NSE для автоматизации
Скриптовый движок Nmap (NSE) это одна из наиболее мощных и гибких возможностей Nmap. Он позволяет пользователям писать (и делиться ими) простые скрипты (используя язык программирования Lua) для автоматизации широкого круга сетевых задач. NSE может быть исполльзован даже для обнаружения уязвимостей.
Короче говоря, NSE позволяет не только использовать всю мощь сканирования Nmap, но и автоматизировать многие действия.
Готовые библиотеки 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.
Примеры использования скриптов 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)"
Симбиоз nmap и Metasploit ‘а
Сканирование nmap портов можно провести с помощью команды db_nmap – утилиты-«обертки» для nmap в Metasploit Framework, которая позволяет сохранять результаты сканирования в базу данных и потом заюзать ее для выбора спл0йта и атаки.
Необходимо помнить, что если мы явно не задаем диапазон портов, то будет просканировано 1000 самых распространенных портов, если укажем ключ -F, то 100, а если -p-, то все 65535.
Из результатов сканирования портов мы можем узнать не только какие сетевые порты открыты, но и версии служб, если использовали ключ -sV, а также предположительную версию операционной систем (ключ -О).
После завершения сканирования сети имеет смысл выгрузить данные из базы Metasploit с помощью команды db_export и импортировать получившийся xml-файл в MS Excel или LibreOffice Calc. В дальнейшем данный файл можно использовать для поиска узлов с определенными портами и вести рабочие заметки с результатами тестирования каждого узла.
1.Поиск общедоступных сетевых папок
Как мы уже рассмотрели выше, в общедоступных сетевых папках может быть масса полезной для злоумышленника информации. Имеет смысл искать данные папки как с анонимной учетной записью (пустой логин/пустой пароль), так и с учетной записью обычного пользователя.
Для поиска SMB-ресурсов необходимо воспользоваться модулем auxiliary/scanner/smb/smb_enumshares
, а для NFS: auxiliary/scanner/nfs/nfsmount.
2.Поиск СУБД
Для поиска СУБД MS SQL имеет смысл использовать модуль auxiliary/scanner/mssql/mssql_ping
, так как он позволяет не только обнаружить серверы СУБД по открытому UDP порту 1434, но и определить TCP-порт, по которому база данных ждет подключения.
3.Определение имен NetBIOS
Зачастую полезно определить имена NetBIOS, так как в них тоже может содержаться полезная информация (например, к какой системе относится тот или иной узел). Для этого можно воспользоваться модулем auxiliary/scanner/netbios/nbname.
Убойная вещь nmap with CVE
Это охуенно крутецкая шутка, так как сканируя nmap’ом вражескую сеть ты сразу получаешь CVE листинг уязвимостей, а значит готов ринуться в бой. Для этого нам нужно прикрутить плагин\скрипт NorthernSec/CVE-Scan.
Наш сканер юзает базы данных nmap-vulners and vulscan дял обнаружения дыр.
Вот так выглядит скрин обычного скана nmap’а
Обычный скан
А вот с опцией CVE-Scan
CVE-Scan
Установка движка
Открывай терминал и пиши заклинания:
/nmap/scripts/
git clone https://github.com/vulnersCom/nmap-vulners.git
Теперь ставим сам Vulscan
git clone https://github.com/scipag/vulscan.git
Смотрим какие базы подгружены
ls vulscan/*.csv
Vulscan supports a numbered of excellent exploit databases. Here is a complete list:
- scipvuldb.csv
- cve.csv
- osvdb.csv
- securityfocus.csv
- securitytracker.csv
- xforce.csv
- expliotdb.csv
- openvas.csv
Обновляем наше барахло:
cd vulscan/utilities/updater/
Запускам скрипт апдейта, он все сделает сам))
chmod
+x updateFiles.sh
./updateFiles.sh
И смотрим листинг
А вот и сам Scan Using Nmap-Vulners
Общий синтаксис такой
nmap --script nmap-vulners -sV <target IP>
Палим веб сервер
Палим тачку
Если ты хочешь юзать какую-то особенную БД то вот тебе помощь:
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>
Полный скан сразу в одной команде
nmap --script nmap-vulners,vulscan --script-args vulscandb=scipvuldb.csv -sV <target IP>
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.