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规则, 在线扫描, 威胁情报, 开发者工具, 数字证书, 深度对象提取, 爬虫, 离线扫描, 网络安全, 自动告警, 远程控制, 隐私保护