Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
subcrawl — Модульная платформа для обнаружения и анализа открытых каталогов в интернете. Сканирует URL-адреса, извлекает содержимое, применяет сканирование YARA/ClamAV и выводит результаты в MISP, SQLite или консоль для анализа угроз. | Kitploit
Инструменты/GitHubGitHub/hpthreatresearch/subcrawl
OSINT (Разведка открытых источников)Анализ уязвимостейСбор информацииВеб-безопасностьРазведка угрозКраулер
GitHubhpthreatresearch/subcrawl

subcrawl

Модульная платформа для обнаружения и анализа открытых каталогов в интернете. Сканирует URL-адреса, извлекает содержимое, применяет сканирование YARA/ClamAV и выводит результаты в MISP, SQLite или консоль для анализа угроз.

Репозиторий
1503682 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

SubCrawl

SubCrawl — это фреймворк, разработанный Патриком Шлепфером, Джошем Штрошайном и Алексом Холландом из команды Threat Research компании HP Inc. SubCrawl предназначен для поиска, сканирования и анализа открытых директорий. Фреймворк модульный и состоит из четырёх компонентов: модулей ввода, модулей обработки, модулей вывода и основного движка сканирования. Основными входными значениями являются URL-адреса, которые фреймворк разбирает и добавляет в систему очередей перед сканированием. Разбор URL-адресов — важный первый шаг: он берёт переданный URL и генерирует дополнительные URL-адреса для сканирования, последовательно удаляя поддиректории, пока таковых не останется. Этот процесс обеспечивает более полную попытку сканирования веб-сервера и может привести к обнаружению дополнительного контента. Важно отметить, что SubCrawl не использует метод перебора для обнаружения URL-адресов. Весь сканируемый контент поступает из входных URL-адресов, процесса разбора URL и обнаружения во время сканирования. Когда обнаруживается открытая директория, движок сканирования извлекает из неё ссылки для оценки. Движок определяет, является ли ссылка другой директорией или файлом. Директории добавляются в очередь сканирования, а файлы подвергаются дополнительному анализу модулями обработки. Результаты генерируются и сохраняются для каждого сканированного URL, например, SHA256 и нечёткие хеши содержимого, информация о том, была ли найдена открытая директория, или совпадения с правилами YARA. Наконец, данные результатов обрабатываются одним или несколькими модулями вывода, которых на данный момент три. Первый обеспечивает интеграцию с MISP, второй просто выводит данные в консоль, а третий сохраняет данные в базу SQLite. Поскольку фреймворк модульный, легко не только настроить нужные модули ввода, обработки и вывода, но и разработать новые модули.

Архитектура фреймворка Рисунок 1 — Архитектура SubCrawl

SubCrawl поддерживает два различных режима работы. Во-первых, SubCrawl можно запустить в режиме однократного выполнения. В этом режиме пользователь предоставляет URL-адреса для сканирования в файле, где каждое входное значение отделяется разрывом строки. Второй режим — сервисный. В этом режиме SubCrawl работает в фоновом режиме и полагается на модули ввода для предоставления URL-адресов для сканирования. На рисунке 1 показан обзор архитектуры SubCrawl. Компоненты, используемые в обоих режимах работы, окрашены в синий цвет, компоненты режима однократного выполнения — в жёлтый, а компоненты сервисного режима — в зелёный.

Требования

В зависимости от выбранного режима выполнения необходимо выполнить и другие предварительные условия.

Требования для режима однократного выполнения

SubCrawl написан на Python3. Кроме того, перед запуском SubCrawl требуется несколько пакетов. Для установки всех необходимых пакетов можно использовать следующую команду. Выполните её из каталога crawler:

root@kitploit:~
$ sudo apt install build-essential
$ pip3 install -r requirements.txt

Требования для сервисного режима

Если SubCrawl запускается в сервисном режиме, это можно сделать с помощью Docker. Поэтому требуется установка Docker и Docker Compose. Подходящие инструкции по установке можно найти на сайте Docker.com.

  • Установка Docker Engine
  • Установка Docker Compose

Получение справки

SubCrawl имеет встроенную справку через аргумент -h/--help или при простом выполнении скрипта без аргументов.

root@kitploit:~
  ********         **        ******                               **
 **//////         /**       **////**                             /**
/**        **   **/**      **    //  ******  ******   ***     ** /**
/*********/**  /**/****** /**       //**//* //////** //**  * /** /**
////////**/**  /**/**///**/**        /** /   *******  /** ***/** /**
       /**/**  /**/**  /**//**    ** /**    **////**  /****/**** /**
 ******** //******/******  //****** /***   //******** ***/ ///** ***
////////   ////// /////     //////  ///     //////// ///    /// /// 
~~ Harvesting the Open Web ~~

usage: subcrawl.py [-h] [-f FILE_PATH] [-k] [-p PROCESSING_MODULES] [-s STORAGE_MODULES]

optional arguments:
  -h, --help            show this help message and exit
  -f FILE_PATH, --file FILE_PATH
                        Path of input URL file
  -k, --kafka           Use Kafka Queue as input
  -p PROCESSING_MODULES, --processing PROCESSING_MODULES
                        Processing modules to be executed comma separated.
  -s STORAGE_MODULES, --storage STORAGE_MODULES
                        Storage modules to be executed comma separated.

  Available processing modules: 
  - ClamAVProcessing
  - JARMProcessing
  - PayloadProcessing
  - TLSHProcessing
  - YARAProcessing

  Available storage modules: 
  - ConsoleStorage
  - MISPStorage
  - SqliteStorage

Режим однократного выполнения

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

root@kitploit:~
python3 subcrawl.py -f urls.txt -p YARAProcessing,PayloadProcessing -s ConsoleStorage

Сервисный режим

С помощью сервисного режима можно сканировать большее количество доменов и сохранять результаты. В зависимости от выбранного модуля хранения данные можно затем более подробно анализировать и оценивать. Чтобы сделать запуск сервисного режима как можно более простым для пользователя, мы встроили все функциональные возможности в образ Docker. В сервисном режиме домены для сканирования получаются через модули ввода. По умолчанию новые вредоносные URL-адреса и фишинговые URL-адреса загружаются с URLhaus и PhishTank и ставятся в очередь на сканирование. Нужные модули обработки и хранения можно указать непосредственно в config.yml. По умолчанию активированы следующие модули обработки, использующие хранилище SQLite:

  • ClamAVProcessing
  • JARMProcessing
  • TLSHProcessing
  • YARAProcessing

В дополнение к модулю хранения SQLite был разработан простой веб-интерфейс, позволяющий просматривать и управлять сканированными доменами и URL-адресами.

Веб-интерфейс для модуля хранения SQLite

Однако, если этого интерфейса недостаточно для последующей оценки данных, можно альтернативно или дополнительно активировать модуль хранения MISP. Соответствующие настройки необходимо выполнить в config.yml в разделе MISP.

Следующих двух команд достаточно, чтобы клонировать GIT-репозиторий, создать контейнер Docker и сразу его запустить. После этого веб-интерфейс будет доступен по адресу https://localhost:8000/. Обратите внимание: после запуска контейнеров модули ввода начнут добавлять URL-адреса в очередь обработки, а движок начнёт сканирование хостов.

root@kitploit:~
git clone https://github.com/hpthreatresearch/subcrawl.git

docker-compose up --build 

Модули SubCrawl

Модули ввода

Модули ввода используются только в сервисном режиме. Если SubCrawl запущен в режиме однократного выполнения, необходимо предоставить файл с URL-адресами для сканирования. Реализованы следующие два модуля ввода.

URLhaus

URLhaus — это известный веб-сервис для отслеживания вредоносных URL-адресов. Веб-сервис также предоставляет экспорт с новыми обнаруженными URL-адресами. Эти вредоносные URL-адреса отлично подходят для нашего сканера, поскольку мы в основном хотим анализировать вредоносные домены. Извлекаются недавно отправленные URL-адреса, и результаты поиска не уточняются через API-запрос (например, с помощью тегов или других доступных параметров). HTTP-запрос, выполняемый в этом модуле ввода к API URLHaus, можно модифицировать для дальнейшего уточнения получаемых результатов.

PhishTank

PhishTank — это веб-сайт, собирающий фишинговые URL-адреса. Пользователи могут отправлять новые найденные фишинговые страницы. С помощью этого веб-сервиса через API можно создать и загрузить экспорт с активными фишинговыми URL-адресами. Так что это также идеальный источник для нашего сканера.

Модули обработки

SubCrawl поставляется с несколькими модулями обработки. Все модули обработки следуют схожему поведению при передаче результатов обратно основному движку. Если найдены совпадения, результаты возвращаются основному движку и позже передаются модулям хранения. Ниже приведён список модулей обработки.

SDHash

Модуль обработки SDHash используется для вычисления хеша схожести HTTP-ответа. Минимальный размер содержимого для успешного вычисления хеша должен составлять 512 байт. Это, вероятно, самый сложный для установки модуль обработки, так как он требует Protobuf и, в зависимости от целевого хоста, может потребовать перекомпиляции. Поэтому по умолчанию этот модуль обработки отключён. Готовую скомпилированную версию можно найти в каталоге crawler/processing/minisdhash/, для которой требуются protobuf-2.5.0 и python3.6. Эти бинарные файлы были скомпилированы на Ubuntu 18.04.5 LTS x64. Следуйте инструкциям по установке:

root@kitploit:~
# Установка Protobuf
> apt-get update
> apt-get -y install libssl-dev libevent-pthreads-2.1-6 libomp-dev g++
> apt-get -y install autoconf automake libtool curl make g++ unzip
> wget https://github.com/protocolbuffers/protobuf/releases/download/v2.5.0/protobuf-2.5.0.zip
> unzip protobuf-2.5.0.zip
> cd protobuf-2.5.0
> ./configure
> make
> sudo make install

# Установка Python3.6
> apt-get install python3.6-dev
> sudo ldconfig

# Установка SDHash
> git clone https://github.com/sdhash/sdhash.git
> cd sdhash
> make
> make install
> ldconfig

JARM

JARM — это инструмент для снятия отпечатков TLS-соединений, разработанный Salesforce. Модуль обработки JARM выполняет сканирование домена и возвращает хеш JARM вместе с доменом основному движку. В зависимости от конфигурации веб-сервера TLS-рукопожатие имеет различные свойства. Вычисляя хеш атрибутов этого рукопожатия, эти различия можно использовать для отслеживания конфигураций веб-серверов.

TLSH

Модуль обработки TLSH похож на модуль SDHash и используется для вычисления хеша схожести. Преимущество TLSH в том, что установка гораздо проще, а минимальный размер входных данных меньше — 50 байт. Поскольку большинство страниц входа в веб-оболочки довольно малы и были в центре нашего исследования, мы включили этот модуль обработки по умолчанию.

YARA

Модуль обработки YARA используется для сканирования содержимого HTTP-ответа с помощью правил YARA. Чтобы вызвать этот модуль обработки, укажите значение YARAProcessing в качестве аргумента модуля обработки. Например, следующая команда загрузит модуль обработки YARA и выведет результат в консоль через модуль хранения ConsoleStorage.

root@kitploit:~
python3 subcrawl.py -p YARAProcessing -s ConsoleStorage

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

  • protected_webshell: Определяет страницы входа в веб-оболочки, защищённые паролем
  • js_webshell_tracking_script: Определяет плагины/темы с бэкдором, использующие JavaScript для уведомления атакующего, когда веб-оболочка становится активной
  • open_webshell: Определяет открытые веб-оболочки (т.е. веб-оболочки, не защищённые входом)
  • php_webshell_backend: Определяет бэкенд PHP-веб-оболочки, используемый атакующим

Пример вывода: Вывод обработки YARA

Чтобы добавить дополнительные правила YARA, вы можете добавить файлы .YAR в папку yara-rules, а затем включить файл правил, добавив оператор include в файл combined-rules.yar.

ClamAV

Модуль обработки ClamAV используется для сканирования содержимого HTTP-ответа с помощью ClamAV во время сканирования. Если найдено совпадение, оно передаётся различным модулям вывода. Чтобы вызвать этот модуль обработки, укажите значение ClamAVProcessing в качестве аргумента модуля обработки. Например, следующая команда загрузит модуль обработки ClamAV и выведет результат в консоль через модуль хранения ConsoleStorage.

root@kitploit:~
python3 subcrawl.py -p ClamAVProcessing -s ConsoleStorage

Пример вывода: Модуль обработки ClamAV

Чтобы использовать этот модуль, необходимо установить ClamAV. В терминале установите ClamAV с помощью менеджера пакетов APT:

root@kitploit:~
$ sudo apt-get install clamav-daemon clamav-freshclam clamav-unofficial-sigs

После установки служба обновления ClamAV должна уже работать. Однако, если вы хотите выполнить обновление вручную с помощью freshclam, убедитесь, что служба остановлена:

root@kitploit:~
sudo systemctl stop clamav-freshclam.service

А затем запустите freshclam вручную:

root@kitploit:~
$ sudo freshclam

Наконец, проверьте статус службы ClamAV:

root@kitploit:~
$ sudo systemctl status clamav-daemon.service

Если служба не запущена, вы можете запустить её с помощью systemctl:

root@kitploit:~
$ sudo systemctl start clamav-daemon.service

Payload

Модуль обработки Payload используется для идентификации содержимого HTTP-ответа с помощью библиотеки libmagic. Кроме того, SubCrawl можно настроить на сохранение интересующего контента, такого как PE-файлы или архивы. Чтобы вызвать этот модуль обработки, укажите значение PayloadProcessing в качестве аргумента модуля обработки. Например, следующая команда загрузит модуль обработки Payload и выведет результат в консоль:

root@kitploit:~
python3 subcrawl.py -p PayloadProcessing -s ConsoleStorage

Для этого модуля не требуется дополнительных зависимостей.

Пример вывода: Вывод обработки Payload

Модули хранения

Модули хранения вызываются движком SubCrawl после того, как все URL-адреса из очереди отсканированы. Они были разработаны с двумя целями: во-первых, получить результаты сканирования сразу после завершения очереди сканирования, а во-вторых, обеспечить долгосрочное хранение и анализ. Поэтому мы реализовали не только модуль ConsoleStorage, но и интеграцию с MISP, а также модуль хранения SQLite.

Console

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

Интерфейс консольного хранилища

Elastic

Также доступна интеграция с кластером Elastic. Каждый URL-адрес вместе с его данными будет индексирован как событие, что будет включать вывод от других модулей, таких как Yara. Для начала работы с этим модулем добавлена стандартная панель мониторинга. Необходимо будет внести обновления в раздел elasticsearch, включая:

  • Хост Elastic search (по умолчанию localhost)
  • Порт для подключения к Elastic (по умолчанию 9200)
  • Имя индекса (по умолчанию subcrawl)
  • Archive response content — сохраняет тело HTTP-ответа на диск (по умолчанию False)
  • Archive log location — место сохранения содержимого ответа (по умолчанию log/)

Чтобы использовать этот модуль вывода, укажите значение ElasticStorage с аргументом -s.

SQLite

Поскольку установка и настройка MISP может занимать много времени, мы реализовали ещё один модуль, который сохраняет данные в базе данных SQLite. Чтобы максимально просто и наглядно представить данные пользователю, мы также разработали простой веб-интерфейс. С помощью этого веб-приложения можно просматривать и искать сканированные домены и URL-адреса со всеми их атрибутами. Поскольку это только ранняя версия, сложных функций сравнения пока не реализовано.

Интерфейс SQLite

MISP

MISP — это платформа для анализа угроз с открытым исходным кодом, имеющая гибкую модель данных и API для хранения и анализа данных об угрозах. SubCrawl сохраняет сканированные данные в событиях MISP, публикуя одно событие на домен и добавляя любые идентифицированные открытые директории в качестве атрибутов. MISP также позволяет пользователям определять теги для событий и атрибутов. Это полезно для сравнения событий и анализа связей. Поскольку это была одна из наших основных исследовательских целей, мы обогатили данные из URLHaus при экспорте вывода SubCrawl в MISP. URLHaus аннотирует свои данные с помощью тегов, которые можно использовать для идентификации семейства вредоносных программ или субъекта угрозы, связанного с URL-адресом. Для каждого URL-адреса открытой директории модуль запрашивает локально хранящиеся данные URLHaus и добавляет теги URLHaus в событие MISP, если они совпадают. Чтобы избежать набора несвязанных атрибутов для каждого события MISP, мы создали новый объект MISP для сканированных URL-адресов под названием opendir-url. Это гарантирует, что связанные атрибуты будут сгруппированы вместе, что упрощает получение общего обзора данных.

Интерфейс MISP

Создание собственных модулей

Шаблоны для модулей обработки и хранения предоставляются в составе фреймворка.

Модули обработки

Модули обработки находятся в каталоге crawler->processing, а образец файла модуля example_processing.py находится в этом каталоге. Шаблон предоставляет необходимое наследование и импорт для обеспечения выполнения фреймворком. Функция init обеспечивает инициализацию модуля и получает экземпляр логгера и глобальную конфигурацию. Логгер используется для предоставления информации журналирования от модулей обработки, а также во всём фреймворке.

Функция process реализуется для обработки каждого HTTP-ответа. Для этого она получает URL-адрес и необработанное содержимое ответа. Именно здесь реализуется работа модуля. Эта функция должна возвращать словарь со следующими полями:

  • hash: sha256 содержимого
  • url: URL-адрес, с которого было получено содержимое
  • matches: любые совпадающие результаты в модуле, например, результаты libmagic или YARA.

Необходимо определить уникальное имя класса, которое используется для указания этого модуля при его включении через аргумент -p или в качестве модуля обработки по умолчанию в файле конфигурации.

Наконец, добавьте оператор импорта в __init__.py, используя ваше имя класса:

root@kitploit:~
from .<REPLACE>_processing import <REPLACE>Processing

Модули хранения

Модули хранения находятся в каталоге crawler->storage, а образец файла модуля example_storage.py находится в этом каталоге. Как и в модулях обработки, функция init обеспечивает инициализацию модуля и получает экземпляр логгера и глобальную конфигурацию. Функция store_results получает структурированные данные от движка с интервалами, определёнными размером пакета в файле конфигурации.

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

Презентации и прочие ресурсы

2021:

  • BlackHat Arsenal USA
  • VirusBulletin Localhost - Предстоящее

Лицензия

SubCrawl распространяется под лицензией MIT.

Скачать инструмент