Crawlector
Crawlector (название Crawlector образовано от сочетания Crawler & Detector) — это фреймворк для охоты за угрозами, предназначенный для сканирования веб-сайтов на наличие вредоносных объектов.
Примечание-1: Фреймворк был впервые представлен на конференции No Hat в Бергамо, Италия, 22 октября 2022 года (Слайды, Запись на YouTube). Также он был представлен во второй раз на конференции AVAR в Сингапуре 2 декабря 2022 года.
Примечание-2: Сопутствующий инструмент EKFiddle2Yara (инструмент, который принимает правила EKFiddle и преобразует их в правила Yara), упомянутый в докладе, также был выпущен на обеих конференциях.
Примечание-3: Версия 2.0 (Photoid Build:180923), знаковый выпуск, была выпущена 18 сентября 2023 года.
Примечание-4: Версия 2.1 (Universe-647 Build:031023) была выпущена 3 октября 2023 года. Основное дополнение — функция уведомлений Slack Alert.
Примечание-5: Версия 2.2 (Hallstatt Build:051123) была выпущена 5 ноября 2023 года. Основное дополнение — функция удаленного управления через Slack.
Примечание-6: Версия 2.3 (Munich Build:241123) была выпущена 24 ноября 2023 года. Основное дополнение — функция DNS-серверов имен.
Примечание-6: Версия 2.3.1 {Nero Build:131225} была выпущена 13 декабря 2025 года. Это исправительный выпуск.
Возможности
- Поддержка паутинного сканирования веб-сайтов для поиска дополнительных ссылок для сканирования (только до 2 уровней)
- Интеграция Yara в качестве внутреннего движка для сканирования по правилам
- Поддержка онлайн и офлайн сканирования
- Поддержка сканирования цифровых сертификатов доменов/сайтов
- Поддержка запросов к URLhaus для поиска вредоносных URL на странице
- Глубокое извлечение объектов (DOE)
- Уведомления Slack Alert
- Параметризованная поддержка HTTP-перенаправлений
- Получение информации Whois
- Поддержка хеширования содержимого страницы с помощью TLSH (Trend Micro Locality Sensitive Hash) и других стандартных криптографических хеш-функций, таких как md5, sha1, sha256 и ripemd128, среди прочих
- TLSH не вернет значение, если размер страницы меньше 50 байт или если в данных недостаточно случайности
- Поддержка запросов рейтинга и категории каждого URL
- Поддержка расширения заданного сайта путем попытки найти все доступные TLD и/или поддомены для того же домена
- Эта функция использует API Omnisint Labs (этот сайт недоступен с 10 марта 2023 года) и RapidAPI
- Реализация расширения TLD является нативной
- Эта функция, вместе с рейтингом и категоризацией, предоставляет возможность найти мошеннические/фишинговые/вредоносные домены для исходного домена
- Поддержка разрешения доменов (IPv4 и IPv6)
- Сохранение отсканированных страниц веб-сайтов для последующего сканирования (можно сохранить в сжатом zip)
- Все настройки фреймворка управляются через один настраиваемый файл конфигурации
- Все сеансы сканирования сохраняются в хорошо структурированный CSV-файл с множеством информации о сканируемом веб-сайте, а также информацией о сработавших правилах Yara
- Многие другие функции...
- Все HTTP(S) коммуникации учитывают прокси
- Один исполняемый файл
- Написан на C++
Сканирование URLHaus и интеграция с API
Это для проверки вредоносных URL на каждой сканируемой странице. Фреймворк может либо запрашивать список вредоносных URL с сервера URLHaus (конфигурация: url_list_web), либо из файла на диске (конфигурация: url_list_file), и если указан последний, он имеет приоритет над первым.
Работает следующим образом: содержимое каждой страницы сравнивается со всеми записями URL в url_list_web или url_list_file, проверяя все вхождения. Кроме того, при совпадении, если опция конфигурации check_url_api установлена в true, Crawlector отправит POST-запрос к URL API, заданному в опции url_api, которая возвращает JSON-объект с дополнительной информацией о совпавшем URL. Такая информация включает urlh_status (например, online, offline, unknown), urlh_threat (например, malware_download), urlh_tags (например, elf, Mozi) и urlh_reference (например, https://urlhaus.abuse.ch/url/1116455/). Эта информация будет включена в файл журнала cl_mlog_<текущая_дата><текущее_время><(pm|am)>.csv (см. ниже), только если check_url_api установлен в true. В противном случае файл журнала будет включать столбцы urlh_url (список совпавших вредоносных URL) и urlh_hit (количество вхождений для каждого совпавшего вредоносного URL), при условии, что check_url установлен в true.
Функция URLHaus может быть полностью отключена, установив опцию конфигурации check_url в false.
Важно отметить, что эта функция может замедлить сканирование, учитывая огромное количество вредоносных URL (~ 130 миллионов записей на момент написания), которые необходимо проверить, и время, необходимое для получения дополнительной информации от сервера URLHaus (если опция check_url_api установлена в true).
Структура файлов и папок
- \cl_sites
- это место, где хранится список сайтов для посещения или сканирования.
- поддерживает несколько файлов и каталогов.
- \crawled
- где все пропарсенные/спайдерные URL сохраняются в текстовый файл.
- \certs
- где хранятся цифровые сертификаты всех доменов/сайтов (в формате .der).
- \results
- где сохраняются посещенные веб-сайты. Настраивается через опцию results_dir
- \pg_cache
- кэш программы для сайтов, которые не являются частью функциональности паука. Настраивается через опцию cache_dir, раздел [default].
- \cl_cache
- кэш сканера для сайтов, которые являются частью функциональности паука. Настраивается через опцию cache_dir, раздел [spider].
- \yara_rules
- это место, где хранятся все правила Yara. Все правила, существующие в этом каталоге, будут загружены движком, разобраны, проверены и оценены перед выполнением.
- cl_config.ini
- этот файл содержит все параметры конфигурации, которые можно настроить для изменения поведения фреймворка.
- cl_mlog_<текущая_дата><текущее_время><(pm|am)>.csv
- файл журнала, содержащий множество информации о посещенных веб-сайтах
- дата, время, статус сканирования Yara, список сработавших правил Yara с смещениями и длинами каждого совпадения, id, URL, код состояния HTTP, статус соединения, заголовки HTTP, размер страницы, путь к сохраненной странице на диске и другие столбцы, связанные с результатами URLHaus.
- имя файла уникально для каждой сессии.
- cl_offl_mlog_<текущая_дата><текущее_время><(pm|am)>.csv
- файл журнала, содержащий информацию о файлах, сканированных в офлайн-режиме.
- список сработавших правил Yara с смещениями и длинами совпадений, и путь к сохраненной странице на диске.
- имя файла уникально для каждой сессии.
- cl_certs_<текущая_дата><текущее_время><(pm|am)>.csv
- файл журнала, содержащий множество информации о найденных цифровых сертификатах
- \expanded\exp_subdomain_<дата><время><(pm|am)>.txt
- содержит обнаруженные поддомены (часть раздела [site])
- \expanded\exp_tld_<дата><время><(pm|am)>.txt
- содержит обнаруженные домены (часть раздела [site])
Файл конфигурации (cl_config.ini)
Вы должны ознакомиться с файлом конфигурации cl_config.ini перед запуском любой сессии. Все разделы и параметры задокументированы в самом файле конфигурации.