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

Инструмент для разведки, созданный для лабораторий OSCP, позволяющий автоматизировать сбор информации и перечисление служб, а также создающий структуру каталогов для хранения результатов, находок и эксплойтов, используемых для каждого хоста, рекомендуемые команды для выполнения и структуры каталогов для хранения добычи и флагов.
Вклад приветствуется!
Reconnoitre, хотя и является любимым инструментом, который я поддерживаю уже несколько лет, на мой взгляд, уступает по функциональности созданию собственного подхода к перечислению в рамках Interlace. Я настоятельно рекомендую всем, кто хочет выйти за рамки OSCP, уделить время изучению этого проекта.
Этот инструмент основан на работе, опубликованной Майком Цумаком (T_v3rn1x) в его обзоре OSCP (ссылка), а также на значительном влиянии и коде, взятом из mix-recon от Re4son (ссылка). Сканирование виртуальных хостов изначально адаптировано из работы teknogeek, на которую сильно повлиял скрипт обнаружения виртуальных хостов от jobertabma (ссылка). Дополнительный код сканирования виртуальных хостов адаптирован из проекта, созданного Тимом Кентом и мной, доступного здесь (ссылка).
Чтобы установить Reconnoitre, сначала сделайте локальную копию репозитория, выполнив следующую команду в том месте, где вы хотите его разместить:
git clone https://github.com/codingo/Reconnoitre.git
После этого запустите setup.py следующей командой:
python3 setup.py install
После завершения setup, Reconnoitre будет доступен в вашем PATH (как reconnoitre), и вы сможете запускать его из любого места с помощью:
reconnoitre <аргументы>
Этот инструмент можно использовать и копировать для личного использования свободно, однако следует указывать авторство и благодарить Майка Цумака, который изначально начал процесс автоматизации этой работы.
Обратите внимание, что это лишь некоторые примеры, дающие представление о возможных сценариях использования этого инструмента. Командные строки можно добавлять или удалять в зависимости от того, что вы хотите выполнить с помощью своего сканирования.
reconnoitre -t 192.168.1.5 -o /root/Documents/labs/ --services
Пример вывода будет выглядеть так:
root@kali:~/# reconnoitre -t 192.168.1.5 --services -o /root/Documents/labs/
__
|"""\-= RECONNOITRE
(____) An OSCP scanner
[#] Performing service scans
[*] Loaded single target: 192.168.1.5
[+] Creating directory structure for 192.168.1.5
[>] Creating scans directory at: /root/Documents/labs/192.168.1.5/scans
[>] Creating exploit directory at: /root/Documents/labs/192.168.1.5/exploit
[>] Creating loot directory at: /root/Documents/labs/192.168.1.5/loot
[>] Creating proof file at: /root/Documents/labs/192.168.1.5/proof.txt
[+] Starting quick nmap scan for 192.168.1.5
[+] Writing findings for 192.168.1.5
[>] Found HTTP service on 192.168.1.5:80
[>] Found MS SMB service on 192.168.1.5:445
[>] Found RDP service on 192.168.1.5:3389
[*] TCP quick scan completed for 192.168.1.5
[+] Starting detailed TCP/UDP nmap scans for 192.168.1.5
[+] Writing findings for 192.168.1.5
[>] Found MS SMB service on 192.168.1.5:445
[>] Found RDP service on 192.168.1.5:3389
[>] Found HTTP service on 192.168.1.5:80
[*] TCP/UDP Nmap scans completed for 192.168.1.5
Что также запишет следующий файл с рекомендациями в папке scans для каждой цели:
[*] Found HTTP service on 192.168.1.50:80
[>] Use nikto & dirb / dirbuster for service enumeration, e.g
[=] nikto -h 192.168.1.50 -p 80 > /root/Documents/labs/192.168.1.50/scans/192.168.1.50_nikto.txt
[=] dirb http://192.168.1.50:80/ -o /root/Documents/labs/192.168.1.50/scans/192.168.1.50_dirb.txt -r -S -x ./dirb-extensions/php.ext
[=] java -jar /usr/share/dirbuster/DirBuster-1.0-RC1.jar -H -l /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -r /root/Documents/labs/192.168.1.50/scans/192.168.1.50_dirbuster.txt -u http://192.168.1.50:80/
[=] gobuster -w /usr/share/seclists/Discovery/Web_Content/common.txt -u http://192.168.1.50:80/ -s '200,204,301,302,307,403,500' -e > /root/Documents/labs/192.168.1.50/scans/192.168.1.50_gobuster_common.txt -t 50
[=] gobuster -w /usr/share/seclists/Discovery/Web_Content/cgis.txt -u http://192.168.1.50:80/ -s '200,204,301,307,403,500' -e > /root/Documents/labs/192.168.1.50/scans/192.168.1.50_gobuster_cgis.txt -t 50
[>] Use curl to retreive web headers and find host information, e.g
[=] curl -i 192.168.1.50
[=] curl -i 192.168.1.50/robots.txt -s | html2text
[*] Found MS SMB service on 192.168.1.5:445
[>] Use nmap scripts or enum4linux for further enumeration, e.g
[=] nmap -sV -Pn -vv -p445 --script="smb-* -oN '/root/Documents/labs/192.168.1.5/nmap/192.168.1.5_smb.nmap' -oX '/root/Documents/labs/192.168.1.5/scans/192.168.1.5_smb_nmap_scan_import.xml' 192.168.1.5
[=] enum4linux 192.168.1.5
[*] Found RDP service on 192.168.1.5:3389
[>] Use ncrackpassword cracking, e.g
[=] ncrack -vv --user administrator -P /root/rockyou.txt rdp://192.168.1.5
reconnoitre -t 192.168.1.1-252 -o /root/Documents/testing/ --pingsweep --hostnames
reconnoitre -t 192.168.1.1-252 -o /root/Documents/testing/ --pingsweep --services --quick
Это просканирует все службы в целевом диапазоне, чтобы создать структуру файлов для живых хостов, а также записать рекомендации для других команд, которые следует выполнить на основе обнаруженных на этих машинах служб. Удаление --quick приведет к более глубокому опросу, но значительно увеличит время выполнения.
reconnoitre -t 192.168.1.1-252 -o /root/Documents/testing/ --pingsweep --services
Минимальные требования для сканирования хостов и служб в этом инструменте — наличие установленных nbtscan и nmap. Если вы не используете сканирование хостов и хотите выполнить только ping-сканирование и сканирование служб, можно обойтись только установкой nmap. Выходной файл findings.txt часто будет рекомендовать дополнительные инструменты, которые могут быть недоступны в вашем дистрибутиве, если вы не используете Kali Linux. Все требования и рекомендации являются родными для Kali Linux, который является рекомендуемым (хотя и не обязательным) дистрибутивом для использования этого инструмента.
В дополнение к этим требованиям в выводах часто упоминаются списки слов, которые вам может потребоваться найти. Если вы проходите OSCP, их можно найти в теме «List of Recommended Tools» от g0tmilk. Если нет, то большинство из них можно найти в Интернете или уже в установке Kali Linux.
Первый шаг — установить docker, если он еще не установлен. Установка Docker
Базовое использование:
cd <каталог Reconnoitre>
docker build -t reconnoitre .
docker run reconnoitre -o outputdir -t 127.0.0.1
Если вы хотите, чтобы файлы сохранялись локально, вы можете смонтировать каталог в контейнер Docker
cd <каталог Reconnoitre>
docker build -t reconnoitre .
mkdir /путь/к/каталогу
docker run -v /путь/к/каталогу:/outputdir --services -o outputdir -t 127.0.0.1
| Аргумент | Описание |
|---|
| -h, --help | Показать справочное сообщение и выйти |
| -t TARGET_HOSTS | Установить либо диапазон адресов, либо один хост для атаки. Также может быть файл, содержащий хосты. |
| -o OUTPUT_DIRECTORY | Установить целевой каталог, куда будут записываться результаты. |
| -w WORDLIST | Опционально укажите свой собственный список слов для использования в предварительно скомпилированных командах или выполняемых атаках. |
| --pingsweep | Записать новый файл target.txt в OUTPUT_DIRECTORY, выполнив ping-сканирование и обнаружив живые хосты. |
| --dns, --dnssweep | Найти DNS-серверы из списка целей. |
| --snmp | Найти хосты, отвечающие на SNMP-запросы из списка целей. |
| --services | Выполнить сканирование служб на целевых хостах и записать рекомендации для дальнейших команд. |
| --hostnames | Попытаться обнаружить имена хостов и записать их в hostnames.txt. |
| --virtualhosts | Попытаться обнаружить виртуальные хосты, используя указанный список слов. Может быть расширено с помощью обнаруженных имен хостов. |
| --ignore-http-codes | Разделённый запятыми список HTTP-кодов, которые следует игнорировать при сканировании виртуальных хостов. |
| --ignore-content-length | Игнорировать длину содержимого указанного размера. Это может быть полезно, когда сервер возвращает статическую страницу при каждой попытке угадать виртуальный хост. |
| --quiet | Подавить баннер и заголовки, ограничить вывод только grep-совместимыми результатами. |
| --quick | Перейти к следующей цели после выполнения быстрого сканирования и записи рекомендаций первого раунда. |
| --no-udp | Отключить сканирование UDP-служб, которое по умолчанию включено. |