Анонс скрипта по сбору технологий

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

Начну немного издалека, а именно с того как вообще происходит процесс пентеста у меня.

Перед тем как искать уязвимости, проводится OSINT компании: из общедоступных источников собирается информация о том, какими сервисами она владеет и что у неё доступно с внешнего периметра.

Для себя я разделяю данный процесс на два больших блока: 1. Сбор активов компании 2. Сбор технологий, которые используются на найденных активах

К активам можно отнести домены, поддомены, IP-адреса, открытые порты и работающие на них сервисы.

После этого уже начинается определение технологий: • веб-серверов; • CMS; • JavaScript-библиотек; • frontend- и backend-фреймворков; • языков и платформ; • версий сервисов и библиотек.

Такой подход я считаю позволяет ещё на раннем этапе увидеть потенциальные точки входа для дальнейшего анализа.

Например, если на одном из активов обнаруживается старая версия WordPress, React, nginx, OpenSSH или какой-либо другой технологии, можно сразу проверить, какие уязвимости для неё известны и насколько она вообще актуальна.

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

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

В какой-то момент я и подумал про оптимизацию этого процесса, так появился проект: technology-fingerprint-pipelinehttps://github.com/eZer-Net/technology-fingerprint-pipeline

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

Работает это примерно так: 1. Указываем один актив или передаём JSON-отчёт со списком активов 2. Скрипт разделяет их на web и infra 3. Проверяет HTTP и HTTPS, редиректы, коды ответов и открытые порты 4. Обходит страницы и JavaScript-файлы 5. Ищет скрытые и характерные для технологий пути 6. Определяет библиотеки, фреймворки, CMS, языки и версии 7. Объединяет одинаковые результаты 8. Формирует готовый JSON-отчёт с привязкой технологии к активу

Под капотом используется несколько инструментов. ➤ httpx проверяет доступность HTTP-сервисов, заголовки, редиректы и выполняет базовый tech-detect.

➤ Katana обходит страницы, HTML и JavaScript, собирает подключённые файлы, API endpoints и скрытые пути.

➤ ffuf проверяет технологические пути по готовым спискам. Например, пути WordPress, Drupal, Joomla, Spring Boot и других технологий.

➤ WhatWeb и Wappalyzer выполняют широкий fingerprinting по заголовкам, HTML, cookies, подключённым ресурсам и другим признакам.

➤ Retire.js анализирует JavaScript-файлы и пытается определить библиотеки и их версии.

➤ Sourcemapper восстанавливает исходники из доступных source map, а Syft анализирует найденные manifests и lock-файлы.

Если предварительно обнаруживается CMS, запускаются уже узконаправленные инструменты. Например, WPScan уточняет версию WordPress, тему и плагины.

Для IP-адресов и неизвестных сервисов используются данные Nmap и дополнительные проверки открытых портов.

При этом в консоль не вываливается весь технический шум. Для каждого актива выводится только краткая сводка по найденным технологиям.

Ну и подсвечу, что любой инструмент в пентесте — это всего лишь фонарик. Он помогает подсветить то, что сложно заметить руками, но если начать светить им в чужие окна без разрешения, однажды могут прийти и спросить, чем именно вы там занимаетесь)

А на картинке, кстати, изображён мой основной проект из сообщества Pentester Dashboard. Мы его постоянно обновляем, добавляем новый функционал и улучшаем существующий. Его также можно найти у меня на GitHub.

#AppSec #CyberSecurity #BugBounty #IT #OSINT

Анонс скрипта по сбору технологий | Сетка — социальная сеть от hh.ru