LOADING

加载过慢请开启缓存 浏览器默认开启

Z0扫描器架构解析:从指纹到二级参数解析的实践

2025/11/28 book z0scan

星河虽存永夜,与你便是长明。

这是第二篇Z0Scan介绍文章哈,第一篇在 Z0Scan设计与实现:通用插件与分布式扫描新思路

如有不足希望各位师傅们多多指点~

指纹识别与POC集成机制#

指纹 + POCs 精准匹配#

早在EZ扫描器时代就提出了”指纹 + POCs”的理念,通过精准的指纹识别实现POC的智能匹配。在Z0中,这一机制得到了进一步完善:

实现流程

检查指纹 → 匹配指纹名称 → 映射plugins文件夹 → 加载对应POC插件

ObserverWard的启发#

当功能开发接近完成时,🍊师傅向我提起了一个优秀的指纹识别工具ObserverWard

出乎我意料的是其设计理念与Z0的POCs开发思路极度相似,但实现更为成熟:

  • 独立维护的FingerprintHub指纹库
  • 与Nuclei联动,以实现模板集成,获得更大的可维护性

经过深入评估,最终决定回滚原有的指纹识别代码,改为集成ObserverWard:

这种集成方案既利用了ObserverWard成熟的指纹识别能力,又保持了Z0在POC执行和报告生成方面的灵活性。

智能请求失败统计与IP封禁检测#

大规模扫描过程中,IP被目标封禁是常见问题。

连续的请求失败不仅影响当前任务,还会阻塞后续扫描队列。试试自适应IP封禁检测?

  • 提前终止被封IP的扫描,避免资源浪费
  • 不影响其他主机的扫描队列

智能爬虫集成:Crawlee#

为什么选择Crawlee?#

Crawlee作为一款优秀的Python爬虫库,它为Z0提供了两种扫描模式:

多模式支持

它们分别是:

  • 基于BeautifulSoup的常规爬虫
  • 基于浏览器爬虫(Playwright)

浏览器爬虫支持有头(可视化调试)与无头两种模式

在开发过程中遇到点小问题。
Crawlee在处理非200页面时会报错与重试(这不太适合实际的需要),在翻了用户手册又Github逛了一圈都没找到相关的解决,
提交个ISSUE吧:

[failed and reached maximum retries, Assuming the session is blocked based on HTTP status code 403](https://github.com/apify/crawlee-python/issues/1581)

二级参数解析:深度参数挖掘#

启发于Yakit靶场的SQL注入题让Z0实现了深层次的参数自动发现和解析:

解析层级

原始请求 → 一级参数解析 → 二级参数值解析 → 自动解码

应用场景

  • 发现隐藏在参数值中的嵌套参数
  • 自动解码URL编码、Base64等格式
  • 适应JSON格式参数的深度解析

工作流程图#