Анонс скрипта по сбору технологий
Всем привет! Сегодня хочу рассказать про то, как я автоматизировал для себя сбор технологий на активах компании и что из этого получилось.
Начну немного издалека, а именно с того как вообще происходит процесс пентеста у меня.
Перед тем как искать уязвимости, проводится OSINT компании: из общедоступных источников собирается информация о том, какими сервисами она владеет и что у неё доступно с внешнего периметра.
Для себя я разделяю данный процесс на два больших блока: 1. Сбор активов компании 2. Сбор технологий, которые используются на найденных активах
К активам можно отнести домены, поддомены, IP-адреса, открытые порты и работающие на них сервисы.
После этого уже начинается определение технологий: • веб-серверов; • CMS; • JavaScript-библиотек; • frontend- и backend-фреймворков; • языков и платформ; • версий сервисов и библиотек.
Такой подход я считаю позволяет ещё на раннем этапе увидеть потенциальные точки входа для дальнейшего анализа.
Например, если на одном из активов обнаруживается старая версия WordPress, React, nginx, OpenSSH или какой-либо другой технологии, можно сразу проверить, какие уязвимости для неё известны и насколько она вообще актуальна.
Раньше я делал сбор технологий руками через расширение Wappalyzer в браузере, дополнительно смотрел заголовки, исходный код страницы, JavaScript-файлы и характерные пути и для пары активов этого вполне хватает.
Но когда активов становится несколько десятков, а иногда и сотни, открывать каждый вручную, смотреть исходники и выписывать технологии становится уже не очень весело.
В какой-то момент я и подумал про оптимизацию этого процесса, так появился проект: technology-fingerprint-pipeline ➤ https://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.
· 31.07
Хорошая автоматизация, но в таких пайплайнах обычно боль не в детекте, а в шуме: ложные совпадения, дубли и «устарело вчера». Я бы сразу добавил приоритет по критичности актива и контроль дрейфа технологий. У вас есть метрика точности на свежих срезах?
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
коммент удалён
· 01.08
Хай! Детект технологий происходит по нескольким факторам, и у каждого свой вес для статуса: точно/вероятно/не точно.
А по поводу актуальности ну если сигнатур технологий в коде или специфичных путей нет, то и записи в финальном отчёте не будет)
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
ответ удалён