Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/mfmokbel/crawlector
OSINT (开源情报)漏洞扫描器威胁源与聚合器信息收集Web安全恶意软件分析威胁情报网络爬虫
GitHubmfmokbel/crawlector

Crawlector

Crawlector 是一个威胁狩猎框架,旨在扫描网站中的恶意对象。

查看仓库
123108个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
网站

Crawlector

Crawlector(名称 Crawlector 是 Crawler(爬虫)与 Detector(检测器)的组合)是一个威胁狩猎框架,专门用于扫描网站中的恶意对象。

注意-1:该框架于 2022 年 10 月 22 日在意大利贝加莫的 No Hat 会议上首次展示(幻灯片,YouTube 录像)。此外,它于 2022 年 12 月 2 日在新加坡的 AVAR 会议上第二次展示。

注意-2:演讲中提到的配套工具 EKFiddle2Yara(该工具可将 EKFiddle 规则转换为 Yara 规则)也同时在这两次会议上发布。

注意-3:2.0 版本(Photoid Build:180923)是一个里程碑版本,于 2023 年 9 月 18 日发布。

注意-4:2.1 版本(Universe-647 Build:031023)于 2023 年 10 月 3 日发布。主要新增功能是 Slack 警报通知功能。

注意-5:2.2 版本(Hallstatt Build:051123)于 2023 年 11 月 5 日发布。主要新增功能是 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 局部敏感哈希)以及其他标准加密哈希函数(如 md5、sha1、sha256 和 ripemd128 等)对页面内容进行哈希
    • 如果页面大小小于 50 字节或数据中缺乏足够的随机性,TLSH 将不返回值
  • 支持查询每个 URL 的评级和类别
  • 支持通过尝试查找同一域名的所有可用 TLD 和/或子域名来扩展给定站点
    • 此功能使用 Omnisint Labs API(截至 2023 年 3 月 10 日该站点已关闭)和 RapidAPI API
    • TLD 扩展实现为原生
    • 此功能与评级和分类相结合,能够找到针对原始域名的欺诈/钓鱼/恶意域名
  • 支持域名解析(IPv4 和 IPv6)
  • 保存扫描过的网站页面以供后续扫描(可保存为 zip 压缩文件)
  • 整个框架的所有设置均通过一个可自定义的配置文件控制
  • 所有扫描会话都保存到结构良好的 CSV 文件中,包含大量关于被扫描网站的信息,以及触发的 Yara 规则信息
  • 还有许多其他功能……
  • 所有 HTTP(S) 通信均支持代理
  • 单一可执行文件
  • 使用 C++ 编写

URLHaus 扫描与 API 集成

此功能用于针对每个被扫描页面检查恶意 URL。框架可以从 URLHaus 服务器查询恶意 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_<当前日期><当前时间><(上午|下午)>.csv(见下文)中。否则,日志文件将包含列 urlh_url(匹配的恶意 URL 列表)和 urlh_hit(每个匹配恶意 URL 的出现次数),前提是 check_url 设置为 true。

通过将配置选项 check_url 设置为 false,可以完全禁用 URLHaus 功能。

需要指出的是,考虑到需要检查的恶意 URL数量巨大(在撰写本文时约有 1.3 亿条),以及从 URLHaus 服务器获取额外信息所需的时间(如果选项 check_url_api 设置为 true),此功能可能会拖慢扫描速度。

文件与文件夹结构

  1. \cl_sites
    • 存储要访问或爬取的网站列表。
    • 支持多个文件和目录。
  2. \crawled
    • 所有爬取/爬行得到的 URL 保存到此处的文本文件中。
  3. \certs
    • 所有域名/站点的数字证书存储在此处(.der 格式)。
  4. \results
    • 访问过的网站保存于此。可通过选项 results_dir 配置。
  5. \pg_cache
    • 不属于爬虫功能的站点的程序缓存。可通过选项 cache_dir([default] 部分)配置。
  6. \cl_cache
    • 属于爬虫功能的站点的爬虫缓存。可通过选项 cache_dir([spider] 部分)配置。
  7. \yara_rules
    • 所有 Yara 规则存储于此。引擎将加载、解析、验证并评估该目录中的所有规则,然后才执行。
  8. cl_config.ini
    • 此文件包含所有可调整以影响框架行为的配置参数。
  9. cl_mlog_<当前日期><当前时间><(上午|下午)>.csv
    • 日志文件,包含关于访问过的网站的大量信息。
    • 日期、时间、Yara 扫描状态、触发的 Yara 规则列表(含每个匹配的偏移量和长度)、ID、URL、HTTP 状态码、连接状态、HTTP 头部、页面大小、已保存页面在磁盘上的路径,以及与 URLHaus 结果相关的其他列。
    • 文件名每个会话唯一。
  10. cl_offl_mlog_<当前日期><当前时间><(上午|下午)>.csv
    • 日志文件,包含关于离线扫描文件的信息。
    • 触发的 Yara 规则列表(含匹配的偏移量和长度),以及已保存页面在磁盘上的路径。
    • 文件名每个会话唯一。
  11. cl_certs_<当前日期><当前时间><(上午|下午)>.csv
    • 日志文件,包含关于找到的数字证书的大量信息。
  12. \expanded\exp_subdomain_<日期><时间><上午|下午>.txt
    • 包含发现的子域名(属于 [site] 部分)。
  13. \expanded\exp_tld_<日期><时间><上午|下午>.txt
    • 包含发现的域名(属于 [site] 部分)。

配置文件 (cl_config.ini)

在运行任何会话之前,您必须熟悉配置文件 cl_config.ini。所有部分和参数均在配置文件中提供了文档。

Yara 离线扫描功能是一个独立选项,意味着如果启用,Crawlector 将仅执行此功能,而不管其他已启用的功能。同样,爬取域名/站点数字证书的功能也是如此。无论如何,建议您在配置文件中禁用所有未使用的功能。

  • 根据配置设置(log_to_file 或 log_to_cons),如果 Yara 规则仅引用模块的属性(例如 PE、ELF、Hash 等),则 Crawlector 在匹配时将仅显示规则名称,不包含偏移量和长度数据。

注意:对于任何需要路径的选项,请始终提供绝对路径。

站点格式模式

要访问/扫描一个网站,URL 列表必须存储在“cl_sites”目录下的文本文件中。

Crawlector 接受三种类型的 URL:

  1. 类型 1:每行一个 URL
    • Crawlector 将为每个 URL 分配一个唯一名称,该名称派生自 URL 主机名。
  2. 类型 2:每行一个 URL,带有一个唯一名称。 [a-zA-Z0-9_-]{1,128} = <url>
  3. 类型 3:用于爬虫功能,使用独特的格式。每行一个 URL,格式如下:

<id>[depth:<0|1>-><\d+>,total:<\d+>,sleep:<\d+>] = <url>

例如:

mfmokbel[depth:1->3,total:10,sleep:0] = https://www.mfmokbel.com

这等价于: mfmokbel[d:1->3,t:10,s:0] = https://www.mfmokbel.com

其中,<id> := [a-zA-Z0-9_-]{1,128}

depth、total 和 sleep 也可以分别用其缩写形式 d、t 和 s 代替。

  • depth:爬虫支持深入两级以查找更多 URL(此为设计决策)。
  • 值为 0 表示深度为第 1 级,“->”后面的值将被忽略。
  • 第 1 级深度由 total 参数控制。因此,首先爬虫尝试从指定 URL 中找到尽可能多的附加 URL。
  • “->”后面的值表示对于每个找到的 URL(根据 total 参数值)要爬取的最大 URL 数量。
  • 值为 1 表示深度为第 2 级,其中“->”后面的值表示对于根据 total 参数找到的每个 URL 要查找的最大 URL 数量。为清楚起见,如上例所示,首先爬虫将查找 10 个 URL(如 total 参数指定),然后这些找到的 URL 中的每一个都将被爬取最多 3 个 URL;因此,在最佳情况下,我们最终将得到 40 (10 + (10*3)) 个 URL。
  • sleep 参数接受一个整数值,表示每次 HTTP 请求之间的休眠毫秒数。

注意 1:通过将配置文件 [spider] 部分中的配置参数 live_crawler 设置为 false,可以将类型 3 的 URL 转换为类型 1 的 URL。

注意 2:空行以及以“;”、“#”或“//”开头的行将被忽略。

爬虫功能

爬虫功能赋予 Crawlector 在目标页面上查找额外链接的能力。爬虫支持以下功能:

  • 域名必须为 Type 3 才能使爬虫功能生效。
  • 您可以通过 exclude_url 配置选项指定一个通配符模式列表(以竖线分隔),以防止爬取匹配的 URL。例如:*.zip|*.exe|*.rar|*.zip|*.7z|*.pdf|.*bat|*.db。
  • 您可以通过 include_url 配置选项指定一个通配符模式列表(以竖线分隔),以仅爬取匹配该模式的 URL。例如:*/checkout/*|*/products/*。
  • 您可以通过 exclude_https 配置选项排除 HTTPS URL。
  • 您还可以通过 add_ext_links 配置选项将出站/外部链接也纳入考虑(仅限主页面)。该功能遵循 exclude_url 和 include_url 配置选项。
  • 您可以通过 ext_links_only 配置选项仅考虑主页面的出站/外部链接,排除所有其他 URL。该功能遵循 exclude_url 和 include_url 配置选项。

ID 类型

在 2.0 版本中,ID 通过将以下类型之一附加到 ID 本身来显式分配其类型:

每个 ID 都携带其类型,使得浏览和过滤结果更加容易。此外,此信息在内部出于各种原因使用。

站点排名功能

  • 此功能用于检查网站的排名。
  • 您提供一个包含网站列表及其排名的文件,格式为 CSV。
  • 提供网站排名列表的服务包括 Alexa top-1m(已于 2022 年 5 月停止服务)、Cisco Umbrella、Majestic、Quantcast、Farsight 和 Tranco 等。
  • CSV 文件格式(仅两列):第一列存放排名,第二列存放域名。
  • 如果单元格包含引用的数据,将自动取消引用。
  • 引用的文本中不允许换行。
  • 读取的单元格将去除前导和尾随空格。
  • 空行和注释行将被跳过。
  • 配置文件的 site_ranking 部分提供了一些选项,用于更改 CSV 文件的读取方式。
  • 此查询的性能取决于 CSV 文件中的记录数量。
  • Crawlector 将 CSV 文件中的每个条目与正在调查的域名进行比较,而不是反过来。
  • 仅比较注册/公共后缀域名。

查找 TLD 和子域名 - [site] 部分

  • site 部分提供了通过尝试查找同一域名的所有可用顶级域名 (TLD) 和/或子域名来扩展给定站点的能力。如果找到,新的 TLD/子域名将像任何其他域名一样进行检查。
  • 此功能使用 Omnisint Labs (https://omnisint.io/) 和 RapidAPI API。
  • Omnisint Labs API 返回子域名和 TLD,而 RapidAPI 仅返回子域名(Omnisint Labs API 截至 2023 年 3 月 10 日已关闭;但该实现仍然保留,以备站点恢复)。
  • 对于 RapidAPI,您需要一个有效的“Domains records”API 密钥,可从 RapidAPI 请求,并将其插入配置文件中的 rapid_api_key 键。
  • 启用 find_tlds 后,除了 Omnisint Labs API 的 tld 结果外,框架还会尝试通过遍历 tlds_file 或 tlds_url 中的每个 tld 条目来查找其他活动/已注册的域名。
  • 如果设置了 tlds_url,则应指向一个托管 tld 的 URL,每行一个 tld(以 ';'、'#' 或 '//' 开头的行将被忽略)。
  • tlds_file 包含 tld 列表的文件名(与 tlds_url 相同;仅包含 tld,不包括 '.',例如“com”、“org”)。
  • 如果设置了 tlds_file,则其优先级高于 tlds_url。
  • tld_dl_time_out,用于设置尝试检查相关域名是否解析时 dnslookup 函数的最大超时时间。
  • tld_use_connect,此选项启用通过选项 中定义的端口列表连接相关域名的功能。

重定向功能

先前版本中的 URL 重定向功能存在缺陷。此版本对重定向功能进行了完全重写,并提供了高度参数化以控制其操作。在 2.0 版本中,重定向在配置文件中拥有一个专用部分,名为 [redirect]。整个重定向功能可以通过 [default] 部分下的选项 follow_redir 开启/关闭。

重定向函数检查 HTTP 响应状态码:301、302、303、307 和 308。如果匹配,Crawlector 将解析 Location 头部以获取重定向到的 URL,同时处理绝对和相对重定向 URL。Crawlector 中的重定向功能专为性能和敏捷性而设计。[redirect] 部分提供以下选项列表:

[redirect]

  • depth = all ; (t: string)
  • max_redirect = 200 ; (t: uint16_t)
  • visit = true ; (t: bool)
  • skip_similar = true ; (t: bool)

depth 选项接受值 last 或 all。它控制根据 visit 选项是否启用而访问哪些找到的重定向 URL。all 用于访问所有找到的重定向 URL。last 用于访问最后一个重定向 URL。这些 URL 的访问发生在同一/当前会话中。请记住,无论 depth 值如何,Crawlector 都会记录所有找到的重定向 URL 列表及其总数,以绝对形式存储。它们将写入 cl_mlog CSV 文件的 redirect_urls 和 redirect_total 列中。

选项 max_redirect 设置了要发现的 URL 重定向总数的上限。

选项 skip_similar 通过以下示例进行最佳解释:

假设赋予 Crawlector 爬取的原始 URL 是 "https://www.mfa.gov.law",而找到的重定向 URL 之一是 "https://mfa.gov.law/"。如您所见,唯一区别是 URL 末尾的正斜杠。这两个 URL 是相同的,服务器将返回相同的页面。如果选项 visit 设置为 true,Crawlector 将爬取这两个 URL,从而浪费资源并重复执行相同任务。对于 1 或 2 个 URL 这可能不是问题,但如果您有数千个要爬取的 URL,并且启用了 visit 选项,那么超过一半的 URL 很可能会有这样的发现,这时这就成为一个紧迫的问题。因此,将 skip_similar 选项设置为 true 可以通过跳过访问相似的 URL 来帮助解决此问题。除了正斜杠情景外,skip_similar 选项还考虑以下两种情景:如果重定向 URL 仅因前缀 "https://" 和/或 "www." 不同。

深度对象提取 (DOE)

2.0 版本的主要新增功能之一是能够从页面中提取不同类型的对象,将其保存到磁盘,执行 Yara 和 URLHaus 扫描,并将结果保存到 CSV 文件。要启用此功能,请在 [page] 部分下将选项 extract_obj 设置为 true。深度对象提取功能的实现方式是从网页创建一个 MHT Web 存档文件,其中包含外部脚本、图像和 CSS 文件。所有嵌入的文件都将被提取到选项 obj_dir 指定的路径中(路径:obj_dir/objects/),每个文件都会被扫描。不要将此实现与无头浏览器功能混淆。DOE 有所不同,它不涉及加载页面来检索所有动态查询的 URL。因此,它有其局限性。

所有提取的对象都会将其部分元数据写入 CSV 文件中。读取 CSV 文件时需要注意:包含提取对象的域 ID 具有唯一格式,如下所示:<domain_id>_<type>_p_obj_<counter>(例如,_mfa_gov_cef40bc5-ba6a-41_t1_p_obj_0_)。并且 URL 将具有以下格式:<url>__<object_filename>(例如,_https://www.mfa.gov.law\_\_bilmur.min.js_)。

如果选项 delete_obj 设置为 true,则所有未被 Yara 检测到的提取对象将从磁盘中删除。 如果选项 log_all_objs 设置为 true,则将所有提取对象的元数据记录到同一个 cl_mlog CSV 文件中。 如果 [page] 部分下的选项 check_urlhaus 设置为 true,则每个提取的对象都将被 URLHaus 扫描。请注意,此选项的选项继承自 [urlhaus] 部分。

注意:如果要爬取的域重定向到另一个域,则必须将最后一次重定向到的 URL 传递给 DOE 才能工作。此外,域必须以 "HTTP(S)://" 开头 DOE 才能工作。

Slack 警报通知

有时候,你可能希望运行可能需要数天才能完成的 Crawlector 会话,例如,爬取 Alexa 前 100 万网站,在这种情况下,你需要一种远程监控框架运行和进度的方法。因此,在 2.1 版本中,我添加了 Slack 警报通知功能,提供一种实时监控 Crawlector 执行的机制,将 Yara 警报、std::exit() 事件以及进程警告和错误发送到你选择的 Slack 频道。除此之外,Crawlector 还安装了一个控制台处理程序,用于尝试监控某些事件类型,包括 ctrl_c、ctrl_close、ctrl_break、ctrl_logoff 和 ctrl_shutdown。重要的是要记住,Crawlector 不会更改/改变默认处理程序的行为;它只是向 Slack 频道报告收到任何列出的事件。将来可以扩展此功能以处理其他类型的事件。

此功能使用 Slack REST API,并使用 OAuth 2.0 进行服务器身份验证。你需要一个 Slack API 令牌才能使用它,以及一个配置了正确权限的频道。此功能仅向 Slack 频道发布消息,不接收或处理任何传入消息。

[slack_alert] 部分提供以下选项列表:

[slack_alert]

  • alert = true ; (t: bool)
  • api_token = ; (t: string)
  • channel = ; (t: string)
  • sleep = ; (t: uint32_t) 以毫秒为单位

要禁用或启用此功能,只需将选项 alert 设置为 true 或 false。此外,你需要指定 api_token 和 channel 名称。

注意-1:在 Crawlector 的初始化阶段,它会测试提供的身份验证令牌是否有效,以及频道是否已设置,如果失败,此功能将自动禁用。

所有报告到 Slack 频道的警报都以用户名 Crawlector v<版本号> 报告,例如 Crawlector v2.1。该用户的图标是蜘蛛网。此外,所有警报都是线程化的,意味着从第一条开始消息之后的所有后续警报都以回复形式发布。这是一个设计决策,有助于同时运行多个会话并报告到同一频道。某些警报使用 markdown 标记语言进行格式化。

当进程成功完成并即将退出时,它会发布以下消息:

Crawlector 已完成并正在成功关闭

注意-2:Slack 对发布消息 API 的速率限制是每秒一条消息,允许一些突发余量。Crawlector 不会对消息进行排队以应对每秒更多发布。如果将来需要,这可能会改变;但是,选项 sleep 允许进程在每次成功发布消息后休眠指定时间。

Slack 远程控制

在 2.2 版本(代号 Hallstatt)中,我引入了通过一组专门设计的控制命令远程控制 Crawlector 的能力。引入此功能的原因是为了监控和控制计划运行数小时或数天的会话的某些行为。例如,你可能希望打开/关闭 Slack 警报功能、终止 Crawlector、上传配置文件等。

此功能使用 Slack REST API,并使用 OAuth 2.0 进行服务器身份验证。你需要一个 Slack API 令牌才能使用它,以及一个配置了正确权限的频道。API 令牌与 [slack_alert] 部分中选项 api_token 使用的相同。

[slack_alert] 部分为远程控制功能提供以下附加选项列表:

[slack_alert](控制选项)

  • control = true ; (t: bool)
  • ctrl_channel = ; (t: string) 必须是频道 ID,而不是频道名称
  • ctrl_sleep = ; (t: uint32_t) 以毫秒为单位

要禁用或启用此功能,只需将选项 control 设置为 true 或 false。ctrl_channel 名称必须是频道 ID 名称,而不是频道名称。你可以通过右键单击频道名称 -> 查看频道详情 -> 向下滚动到窗口底部,你将看到频道 ID:<channel_id> 字段来获取它。

选项 ctrl_sleep 决定了向 ctrl_channel 选项中指定的控制频道发出调用以检索控制命令的频率。你也可以通过控制命令 cl_update_delay <time_in_ms> 来更新此选项。

支持的控制命令列表如下:

注意-1:在 Crawlector 的初始化阶段,它会测试提供的身份验证令牌是否有效,以及频道是否已设置,如果失败,此功能将自动禁用。

如果启用了此功能,并且一旦通过 API 令牌验证,Crawlector 会将消息 "Crawlector 已准备好接收控制命令。输入命令 cl_help 以获取支持的控制命令列表。" 发送到指定的 ctrl_channel。

对给定控制命令的所有回复都是线程化的。此外,控制命令是按会话读取的,从会话启动时开始。

注意-2:Slack 对检索(对话历史记录)消息 API 的速率限制是每秒一个请求,允许一些突发余量。因此,如果 ctrl_sleep 选项设置为小于一秒或大于一秒的值,Crawlector 确实会排队 消息以应对每秒更多 控制命令,并按接收顺序执行它们。

DNS 名称服务器

在 2.3 版本(代号 Munich)中,引入了为 Crawlector 尝试的所有 DNS 查询和 DNS 到 IP 解析指定 DNS 名称服务器列表的功能,具有高度控制能力。这在爬取被屏蔽或恶意网站时非常重要。此功能适用于 Crawlector 中所有进行 DNS 查询或 DNS 到 IP 请求的函数。更重要的是,它能够为每个支持 TLS 的名称服务器执行 DNS over TLS。

[dns_ns] 部分提供以下选项列表来管理此功能:

[dns_ns]

  • enable = false ; (t: bool)
  • name_servers = 8.8.8.8(e_tls),12.13.14.15(d_tls) ; (t: string)
  • dns_tls = yes ; (t: string) (yes、no 或 force)
  • keep_default = false ; (t: bool)
  • conn_time_out = 3000 ; (t: uint32_t) 以毫秒为单位(0 表示无限等待)

选项 name_servers 接受一个参数化的 DNS 名称服务器列表,以逗号分隔。此选项的值格式为:<IPv4_address>(<tls_option>),其中 <tls_option> 取值为 "d_tls" 或 "e_tls"。选项 "d_tls" 或 "e_tls" 分别指示相关的名称服务器是否支持 DNS over TLS。此选项将根据选项 dns_tls 设置的值强制执行。例如,条目 8.8.8.8(e_tls) 指示使用支持 TLS 的 Google DNS 服务器 8.8.8.8,而条目 12.13.14.15(d_tls) 指示使用不支持 TLS 的 DNS 服务器 12.13.14.15。

选项 dns_tls 指定所需的 TLS 强制级别。此选项取值 "yes"、"no" 或 "force"。

  • yes
    • 首先尝试支持 TLS 的 DNS 名称服务器,如果找不到支持 TLS 的 NS,则尝试 UDP/TCP 解析。
  • no
    • 不使用 TLS(不要使用支持 TLS 的 DNS 名称服务器)
  • force
    • 仅使用支持 TLS 的 DNS 名称服务器,Crawlector 发起的任何 DNS 查询都将使用 DoT(DNS over TLS)。

选项 keep_default 用于是否将默认名称服务器添加到名称服务器列表中。默认名称服务器假定不支持 TLS。

选项 conn_time_out 指定等待 DNS 查询答案的时间(以毫秒为单位)。

选项 enable 打开或关闭此功能。

版本 2.0 中的其他改进

  • 添加了命令行选项 "-v" 和 "-c"。选项 "-v" 用于将版本信息打印到控制台。选项 "-c" 用于读取不同于默认 "cl_config.ini" 的其他配置文件。
  • 各种代码优化和次要改进
  • 对于每个读取的域(没有子域),如果尚未存在,Crawlector 将在每个读取的站点条目前面添加 "www."。例如,在 RapidAPI 子域枚举查询的情况下,被查询的域必须以 "www." 开头。
  • 在 [default] 部分添加了选项 clear_dns 和 upg_2_https。前者清除主机名到 IP 的 DNS 缓存,后者通过在每个站点前添加 "https://" 将所有站点升级为 HTTPS。类似地,选项 tld_upgrd_2_https 已添加到 [site] 部分,用于将具有不同 TLD 的活动域升级为 https。
  • 在 [site] 部分添加了选项 rapid_api_weeks 和 rapid_api_limit,用于配置对 RapidAPI 的 API 请求。两个选项都是可选的。前者指定要从数据库查询的周数,后者指定每个站点要返回的子域数量。
  • 在 2.0 版本中,你可以通过选项 cache_dir 为 [spider] 和 [default] 部分指定不同的缓存目录。
  • 在 2.0 版本的 page 部分添加了许多选项,包括:
  • whois_info 选项检索 whois 域信息,包括注册商、注册日期、到期日期和更新日期。这些数据来自 https://www.whois.com/whois/。数据保存到 cl_mlog CSV 文件中。
  • page_title 选项将页面标题保存到 cl_mlog CSV 文件中。
  • 添加了选项 results_dir,以提供将页面保存到不同路径的能力。如果未设置,则会在 Crawlector 的同一目录中创建文件夹 "results"。
  • 将 Yara 引擎升级到 4.3.2

设计考虑

  • URL 页面通过向服务器发送 GET 请求、读取服务器响应正文并将其传递给 Yara 引擎进行检测来获取。
  • 一些 GET 请求属性在配置文件的 [default] 部分中定义,包括 User-Agent 和 Referer 标头、连接超时以及其他选项。
  • 尽管 Crawlector 将会话数据记录到 CSV 文件,但建议将其转换为 SQL 文件,以获得更好的性能、数据操作和检索。当你爬取数千个域时,这一点变得尤为明显。
  • 允许在 cl_sites 中重复域/URL。

局限性

  • 单线程
  • 静态检测(不对给定页面内容进行动态评估)。请查看 DOE 功能。
  • 尚不支持无头浏览器!

使用的第三方库

  • Chilkat:用于网站爬取、HTTP 通信、哈希、JSON 解析和文件压缩(ZIP)等的库
  • Yara:用于规则扫描(v4.5.4)
  • CrossGuid:用于生成 GUID/UUID
  • Inih:用于解析配置文件
  • Rapidcsv:用于解析 CSV 文件
  • Color Console:用于控制台着色
  • TLSH(趋势科技局部敏感哈希)(v4.8.2)

贡献

欢迎提交拉取请求和问题。非常感谢评论和建议。

作者

Mohamad Mokbel (@MFMokbel)

下载工具
Crawlector — Crawlector 是一个威胁狩猎框架,旨在扫描网站中的恶意对象。 | Kitploit
id_postfix (类型)描述
_t1_p类型 1,无 ID 的普通 URL
_sd子域名子类型
_tldTLD 子类型
_t2_p类型 2,有 ID 的普通 URL
_t3_s类型 3,爬取到的域名
_t3_sc类型 3,带子节点的爬取到的域名
_t3_ss类型 3,当类型 3(_t3_s)URL 转换为类型 1 URL
_t3_s_e类型 3,爬取到的域名外部链接
_obj_用于深度扫描和对象提取
_t4_ru用于重定向 URL(适用于所有类型)
tlds_connect_ports
  • 选项 tlds_connect_ports 接受一个逗号分隔的端口列表,或一个范围列表,例如 25-40,90-100,80,443,8443(范围起始和结束包含)。
    • tld_con_time_out,用于设置连接函数的最大超时时间。
  • tld_con_use_ssl,启用/禁用尝试连接域名时使用 SSL。
  • 如果 save_to_file_subd 设置为 true,发现的子域名将保存到 "\expanded\exp_subdomain_<日期><时间><上午|下午>.txt"。
  • 如果 save_to_file_tld 设置为 true,发现的域名将保存到 "\expanded\exp_tld_<日期><时间><上午|下午>.txt"。
  • 如果 exit_here 设置为 true,则 Crawlector 在执行完此 [site] 功能后退出,而不管其他已启用的选项。这意味着找到的站点将不会被爬取/爬行。
  • 控制命令描述
    cl_get_date检索 Crawlector 启动时的日期和时间以及当前日期和时间。
    cl_ping发送回复消息 "Pong..."。用于检查 C&C 频道是否正常工作。
    cl_get_config将当前使用的配置(例如 cl_config.ini)文件作为文本文件上传。
    cl_update_delay <毫秒整数>更新每次拉取控制命令请求之间的签到时间。

    - 仅更改当前会话的值 (ctrl_sleep)。

    cl_turn_off_slack_alert关闭当前活动会话的 Slack 警报功能。
    cl_turn_on_slack_alert打开当前活动会话的 Slack 警报功能。
    cl_help列出此帮助消息。
    cl_exit强制终止 Crawlector。