August 27, 2020

Разведка цели: Работаем с AutoRecon

Привет, Аноним. Сегодня я расскажу тебе о том, почему этап разведки занимает так много времени и как можно его оптимизировать с помощью AutoRecon - https://github.com/Tib3rius/AutoRecon. Разберемся, что это за инструмент, для чего он нужен и чем он лучше Nmap. Также просканируем несколько целей, чтобы понять, какие результаты можно увидеть по завершению работы этого "чуда". AutoRecon действительно является уникальным решением в своем роде и позволяет существенно улучшить процесс.

Введение

Хотелось бы написать два слова о том, как в целом устроены сайты, веб-приложения и как потенциально можно найти уязвимости. Давай представим, что существует некий сайт site.com и размещен он на физическом сервере, который выходит в мир с IP 195.208.131.1. Предположим, что наш сайт site.com доступен по 80(HTTP) и 443(HTTPS) порту, имеет базу данных на порту 5432(PostgreSQL) и еще несколько других сервисов на разных портах. И у нас есть задача, проверить безопасность сайта site.com и сервера 195.208.131.1.

Первое, что нужно сделать — просканировать хост с IP 195.208.131.1 и понять какие порты открыты и какие сервисы запущены. Это можно сделать с помощью Nmap.

$ nmap -sC -sV -p- 195.208.131.1

Пример логов:

nmap -sC -sV -p- 195.208.131.1
PORT   STATE SERVICE    VERSION
21/tcp  open ftp      Microsoft ftpd
|_ftp-anon: Anonymous FTP login allowed (FTP code 230)
80/tcp  open http  fuelCMS 1.4.1
111/tcp  open rpcbind    2-4 (RPC #100000)
135/tcp  open msrpc     Microsoft Windows RPC
139/tcp  open netbios-ssn  Microsoft Windows netbios-ssn
443/tcp  open fuelCMS 1.4.1
445/tcp  open microsoft-ds?
2049/tcp open mountd    1-3 (RPC #100005)
5432/tcp openc PostgreSQL

Таким образом, у нас есть список портов и установленных сервисов. Дальше нам нужно проверить, является ли эта версия уязвимой и возможно для этой версии есть готовые эксплоиты. Для этого мы можем воспользоваться установленной утилитой searchsploit (в одном из сканов мы нашли версию):

$ searchsploit fuelCMS 1.4.1

Видим, что для этой версии есть уязвимость RCE и есть эксплоит 47138.py. Поэтому, логическая цепочка происходит именно таким образом. Сначала мы сканируем хост, находим открытые порты и сервисы, проверяем их на уязвимость или на небезопасную конфигурацию. Это и будет нашей потенциальной точкой входа.

Без разведки — никуда

Из предыдущего блока становится понятно, почему нам всегда начинаем со сканирования. Нужно получить список портов TCP/UDP, собрать версии установленных компонентов, собрать информацию по SMB, пройти по WEB-части и т.д. Это достаточно большой кусок работы, который нужно выполнять каждый раз. Тем более что по каждому из пунктов приходиться использовать по 3-4 утилиты. По каждому инструменту есть логи, и это нужно как-то обрабатывать и хранить. Особенно сложно работать, если в работе сразу несколько хостов. Я думаю каждый, кто с этим сталкивался, понимает сколько времени на это уходит.

Для ускорения и упрощения процесса разведки был создан инструмент AutoRecon. Это универсальное решение, которое позволяет автоматически просканировать и проанализировать результаты и на выходе получить полную картину в понятном и удобном формате.

При запуске AutoRecon первым делом проверяет открытые порты на хосте с помощью Nmap. По умолчанию одновременно запускается 3 сканирования:

  • полное сканирование топ 1000 TCP портов;
  • полное сканирование всех TCP портов;
  • сканирование топ 20 UDP портов.

AutoRecon выполняет одновременно два сканирования по TCP-портам с целью получить быстрее открытые порты и проанализировать результаты, не дожидаясь полного сканирования TCP портов. Таким образом, можно быстрее получить точку входу. После того, как были найдены открытые порты, AutoRecon запускает проверку сервисов на этих портах, используя вспомогательные скрипты и инструменты. Например, если будет найден Web сервер, то AutoRecon запустит Whatweb, Nikt, Gobuster, Nmap скрипты для Web серверов, попробует скачать robots.txt и т.д. По результатам работы инструментов будут собраны результаты и добавлены в логи.

Как установить AutoRecon?

Установку я буду выполнять на Kali Linux2020.2. Более детальный мануал с другими вариантами установки можно найти по ссылке. Для работы AutoRecon нужен Python3. Поэтому установка будет начинаться с инструментов для работы с Python3. Если на машине уже есть Python3 и Pip3, то этот шаг можно пропустить.

$ sudo apt install python3
$ sudo apt install python3-pip

Для своей работы AutoRecon использует большое количество компонентов. Ниже список того, что может быть задействовано при сканировании. AutoRecon может работать и без них, но качество результатов будет намного ниже. Можно попросту пропустить точку входа, а в логах останется только фейл при вызове какого-то инструмента.

curl
enum4linux
gobuster
nbtscan
nikto
nmap
onesixtyone
oscanner
smbclient
smbmap
smtp-user-enum
snmpwalk
sslscan
svwar
tnscmd10g
whatweb
wkhtmltoimage

Для установки этих всех компонентов нужно выполнить команду (будет работать на Kali Linux). С помощью второй команды можно убедиться, что все инструменты установлены.

$ sudo apt install seclists
$ sudo apt install seclists curl enum4linux gobuster nbtscan nikto nmap onesixtyone oscanner smbclient smbmap smtp-user-enum snmp sslscan sipvicious tnscmd10g whatweb wkhtmltopdf

Для установки AutoRecon нужно выполнять команду:

$ python3 -m pip install git+https://github.com/Tib3rius/AutoRecon.git

После этого AutoRecon будет успешно установлен и можно запустить с опцией -h:

$ autorecon -h

AutoRecon в боевых условиях

Проверим AutoRecon в действии. Для этого запустим скан для нескольких целей, и увидим результаты работы. Для базового скана выполняем команду с флагом -o для указания директории для хранения логов, для одновременного сканирования нескольких хостов нужно использовать флаг -t:

$ autorecon 10.10.10.180 -o ./
$ autorecon -t targets.txt -o ./
Работа AutoRecon

После начала работы создается папка с IP и туда добавляется вся информация по ходу проверки. Структура имеет достаточно понятный вид:

├── exploit/
├── loot/
├── report/
│   ├── local.txt
│   ├── notes.txt
│   ├── proof.txt
│   └── screenshots/
└── scans/
    ├── _commands.log
    ├── _manual_commands.txt
    └── xml/
Содержание папки scans

По названию папок и файлов понятно их содержимое. Больше всего нас интересует папка scans. Внутри логи всех инструментов, которые позволяют проанализировать и увидеть полную картину. Качество и подход к работе впечатляют, проверено все и даже больше. Вбивать каждую команду руками заняло бы достаточное количество времени. Например, в папке scans был отчет с названием tcp_111_nfs_nmap.txt. AutoRecon показал, что есть раздел /site_backups с данными сайта. А это уже является потенциальной точкой входа. Но для этого мы запустили только одну команду и ничего больше.

Стоит также отметить, что в папке scans есть другие интересные файлы:

  • _commands.log — список выполненных команд в результате работы AutoRecon.
  • _manual_commands.txt —команды, которые могут потенциально нанести вред таргету (брутфорс и т.д.). Поэтому такие команды лучше запускать вручную с дополнительной настройкой.
  • _errors.log ошибки, которые возникли в ходе работы. Можно проанализировать, какие инструменты не работают, или почему так, или иначе не была проведена проверка.

Заключение

AutoRecon— полезный и функциональный инструмент, который оптимизирует время на сканирование и анализ сервисов. Его можно использовать, как для тренировочных площадок, CTF, так и для реальных задач. Инструмент позволяет сканировать сразу несколько целей одновременно (5 по дефолту). Также все логи сохраняются отдельно по папкам с понятной структурой. Таким образом, этот инструмент решает достаточно серьезный запрос и позволяет использовать дополнительное время на проведение атак и эксплуатацию уязвимостей.