MFMokbel/Crawlector
GitHub: MFMokbel/Crawlector
Crawlector 是一个基于 C++ 和 Yara 引擎的威胁搜寻框架,通过爬取网站内容并利用规则扫描、哈希比对及恶意情报查询来发现潜在的恶意网络对象。
Stars: 124 | Forks: 10
# Crawl*e*ctor
Crawlector(这个名字 Crawlector 是 **Crawl***er*(爬虫)和 *Det***ector***(检测器)的组合)是一个旨在扫描网站恶意对象的威胁搜寻框架。
**注-1**:该框架于 2022 年 10 月 22 日在意大利贝加莫举行的 [No Hat](https://www.nohat.it/2022/talks) 会议上首次发布([幻灯片](https://www.nohat.it/2022/static/slides/crawlector.pdf),[YouTube 录像](https://youtu.be/-9bupVXHo5Y))。此外,它还于 2022 年 12 月 2 日在新加坡举行的 [AVAR](https://aavar.org/cybersecurity-conference/index.php/crawlector-a-threat-hunting-framework/) 会议上进行了第二次发布。
**注-2**:演讲中提到的配套工具 [EKFiddle2Yara](https://github.com/MFMokbel/EKFiddle2Yara)(*是一个接收 EKFiddle 规则并将其转换为 Yara 规则的工具*)也在这两次会议上发布。
**注-3**:2.0 版本(Photoid Build:180923),一个里程碑版本,已于 2023 年 9 月 18 日发布。
**注-4**:2.1 版本(Universe-647 Build:031023)已于 2023 年 10 月 03 日发布。主要新增了 Slack 告警通知功能。
**注-5**:2.2 版本(Hallstatt Build:051123)已于 2023 年 11 月 05 日发布。主要新增了 Slack 远程控制功能。
**注-6**:2.3 版本(Munich Build:241123)已于 2023 年 11 月 24 日发布。主要新增了 DNS 服务器功能。
**注-6**:2.3.1 版本 {Nero Build:131225} 已于 2025 年 12 月 13 日发布。这是一个维护版本。
# 功能特性
- 支持爬取网站以查找用于扫描的额外链接(最多 2 层)
- 集成 Yara 作为规则扫描的后端引擎
- 支持在线和离线扫描
- 支持爬取域名/站点的数字证书
- 支持查询 URLhaus 以查找页面上的恶意 URL
- 深度对象提取(DOE)
- Slack 告警通知
- 对 HTTP 重定向的参数化支持
- 检索 Whois 信息
- 支持使用 [TLSH (Trend Micro Locality Sensitive Hash)](https://github.com/trendmicro/tlsh) 以及其他标准加密哈希函数(如 md5, sha1, sha256 和 ripemd128 等)对页面内容进行哈希计算
- 如果页面大小小于 50 字节,或者数据中不存在足够的随机性,TLSH 将不会返回值
- 支持查询每个 URL 的评级和类别
- 支持通过尝试查找相同域名的所有可用顶级域名(TLD)和/或子域名来扩展给定站点
- 此功能使用 [Omnisint Labs](https://omnisint.io/) API(该站点截至 2023 年 3 月 10 日已下线)和 RapidAPI APIs
- TLD 扩展实现是原生的
- 此功能连同评级和分类功能一起,提供了查找原始域名的诈骗/钓鱼/恶意域名的功能
- 支持域名解析(IPv4 和 IPv6)
- 保存已扫描的网站页面以供后续扫描(可以保存为 zip 压缩格式)
- 框架的所有设置均通过一个可定制的配置文件进行控制
- 所有扫描会话都保存到一个结构良好的 CSV 文件中,其中包含有关被扫描网站的大量信息,以及有关已触发的 Yara 规则的信息
- 许多其他功能...
- 所有 HTTP(S) 通信都支持代理
- 单个可执行文件
- 使用 C++ 编写
# URLHaus 扫描与 API 集成
这是为了检查每个正在扫描的页面是否存在 [恶意 URL](https://urlhaus.abuse.ch/downloads/text/)。框架可以从 URLHaus [服务器](https://urlhaus.abuse.ch/downloads/text/) 查询恶意 URL 列表(*配置*:url_list_web),或者从磁盘上的文件查询(*配置*:url_list_file),如果指定了后者,则后者优先于前者。
其工作原理是搜索每个页面的内容,对照 url_list_web 或 url_list_file 中的所有 URL 条目,检查所有出现的情况。此外,如果匹配成功,并且配置选项 check_url_api 设置为 true,Crawlector 将向 url_api 配置选项中设置的 API URL 发送 POST 请求,该请求返回一个包含有关匹配 URL 的额外信息的 JSON 对象。此类信息包括 urlh_status(例如,online, offline, unknown)、urlh_threat(例如,malware_download)、urlh_tags(例如,elf, Mozi)和 urlh_reference(例如,https://urlhaus.abuse.ch/url/1116455/)。仅当 check_url_api 设置为 true 时,此信息才会包含在日志文件 cl_mlog_<*current_date*>_<*current_time*>_<(pm|am)>.csv 中(见下文)。否则,日志文件将包含列 urlh_url(匹配的恶意 URL 列表)和 urlh_hit(每个匹配的恶意 URL 的出现次数),这取决于 check_url 是否设置为 true。
可以通过将配置选项 check_url 设置为 false 来完全禁用 URLHaus 功能。
需要注意的是,考虑到需要检查大量的 [恶意 URL](https://urlhaus.abuse.ch/downloads/text/)(撰写本文时约有 1.3 亿个条目)以及从 URLHaus 服务器获取额外信息所需的时间(如果选项 check_url_api 设置为 true),此功能可能会减慢扫描速度。
# 文件和文件夹结构
1. \cl_sites
+ 这里存储要访问或爬取的站点列表。
+ 支持多个文件和目录。
2. \crawled
+ 所有已爬取/已爬行 URL 保存到文本文件的位置。
3. \certs
+ 所有域名/站点的数字证书存储的位置(以 .der 格式)。
4. \results
+ 已访问网站的保存位置。这可以通过选项 **results_dir** 进行配置
5. \pg_cache
+ 不属于 spider 功能的站点的程序缓存。这可以通过选项 **cache_dir** 进行配置,位于 **[default]** 部分。
6. \cl_cache
+ 属于 spider 功能的站点的爬虫缓存。这可以通过选项 **cache_dir** 进行配置,位于 **[spider]** 部分。
7. \yara_rules
+ 这是存储所有 Yara 规则的地方。此目录中存在的所有规则都将由引擎加载、解析、验证和评估。
8. cl_config.ini
+ 此文件包含可以调整以影响框架行为的所有配置参数。
9. cl_mlog_<*current_date*>_<*current_time*>_<(pm|am)>.csv
+ 包含有关已访问网站大量信息的日志文件
+ 日期、时间、Yara 扫描状态、触发的 Yara 规则列表(包含每个匹配的偏移量和长度)、id、URL、HTTP 状态码、连接状态、HTTP 头、页面大小、磁盘上已保存页面的路径,以及与 URLHaus 结果相关的其他列。
+ 文件名每个会话都是唯一的。
10. cl_offl_mlog_<*current_date*>_<*current_time*>_<(pm|am)>.csv
+ 包含有关离线扫描文件信息的日志文件。
+ 触发的 Yara 规则列表(包含匹配的偏移量和长度)以及磁盘上已保存页面的路径。
+ 文件名每个会话都是唯一的。
11. cl_certs_<*current_date*>_<*current_time*>_<(pm|am)>.csv
+ 包含有关发现的数字证书大量信息的日志文件
12. \expanded\exp_subdomain_
_标签:BeEF, DNS分析, GitHub, Slack集成, URLhaus, Yara规则, 在线扫描, 威胁情报, 开发者工具, 数字证书, 深度对象提取, 爬虫, 离线扫描, 网络安全, 自动告警, 远程控制, 隐私保护