Z0Scan设计与实现:网络安全中动态插件与分布式Web漏洞扫描新思路

各位前辈老师好,我是九泠,目前是某三线城市的一名普通高中生,也是 Z0Scan 项目的发起人与核心开发者。我希望借这次机会,向各位前辈们系统地介绍下 Z0Scan

image.png

项目地址
GitHub - https://github.com/JiuZero/z0scan
Gitee - https://gitee.com/JiuZero/z0scan

Z0Scan 的萌芽始于我初三时期,当时深受 w13scan 与 xray 的启发,逐渐萌生了一个想法:

打造一款不依赖臃肿 POC、专注于大通用型漏洞探测的扫描器。她不仅具备高度通用的漏洞插件架构,更致力于探查那些被忽视的、冷门却广泛存在的安全风险,探索Web黑盒的更多可能。

image.png

在设计理念上,Z0Scan 将 WAF 嗅探融入指纹识别环节,并基于 WAF 存在与否智能调度插件与 Payload,从而以更少的请求、更低的拦截率完成检测。

但 Z0Scan 的调度逻辑不止于此——服务类型、中间件等指纹信息同样可作为调度依据,正如 EZScanner 中的“HTTP Request Reduce”技术所倡导的那样:

image.png

随着不断迭代,Z0Scan 逐步发展出多项核心特性:

  1. 本地与分布式一体化架构

    支持本地与基于 Redis 的分布式部署,融合了主被动扫描能力,并彻底摆脱对 BurpSuite 的依赖,延续了 myscan 在分布式方面的设计思路。

image.png

  1. AI 辅助的 JS 敏感信息校验

    为避免传统正则匹配的误报,Z0Scan 引入 AI 对初步匹配结果进行二次校验,提升准确性与可信度。

  2. 原生 IPv6 支持

    从 myscan 中汲取灵感,Z0Scan 实现了对 IPv6 环境的完整兼容,拓展了适用场景以达到绕过部分防火墙的目的。

image.png

  1. 伪静态参数智能提取

    针对 EZScanner、Xray 等工具尚未完善的伪静态路径解析能力,Z0Scan 进行了初步实现,覆盖多种伪静态结构。

    得益于 WAF 指纹信息对插件的干涉,sqli-bool 采用了更保守、更少的Payload完成了检测:

image.png

  1. Web 控制台:流量队列与插件热管理

    提供流量队列机制,避免被动扫描时抢占关键请求;同时支持在扫描过程中动态启停插件,灵活适配不同测试场景,提升控制精度。

image.png

  1. 插件外部动态导入

    借助 Python 的灵活性与 Nuitka 编译优化,Z0Scan 支持插件热加载,兼顾开发效率与运行性能。

├─config
│  ├─lists
│  └─others
├─data
├─fingerprints
│  ├─os
│  ├─programing
│  └─webserver
└─scanners
    ├─PerDir
    ├─PerDomain
    ├─PerHost
    └─PerPage
  1. 被动指纹支持

    CMS百家争鸣,0day、1day层出不穷,当 afrog、nuclei 项目并不能够满足红队工作者的历史漏洞全面性要求时,其它更具针对性而全面的漏洞扫描体将成为红队工作者的更佳选择。

    而 afrog与 nuicle 的社区活跃度本已不是 z0scan 所能追及的,那么则应在两者间寻求平衡点——通过融合被动指纹识别与被动扫描能力,将指纹匹配与历史漏洞检索的完整性问题交由用户判断,同时赋予用户自主选择漏洞检测策略的权利。

    Z0Scan 目前支持近6000种CMS指纹识别,并向插件开放指纹检索,为针对特定CMS的0day漏洞检测插件(POC)开发提供了灵活、可扩展的实现方案。

image.png

  1. 主机端口漏洞探查

    赓续 myscan 的开发思想,Z0Scan 支持了针对每一主机(基于HOST IP去重)的端口探测与漏洞探查,并借助动态导入优势减少不必要的端口开放检测。

此外,Z0Scan 还具备些小的创新优化:

如对SQL注入存在概率的判断算法,它来自于 DetSQL

image.png

这里使用的是EZ - 1.9.0,但在后续 EZ 的更新中有提及对SQL盲注的优化(不清楚还会不会误报,属实没积分了/泪水)

Z0Scan 最终的被动工作流程如下:

image.png

当然,命令行操作并非对所有人都友好。因此,我同步开发了 Ling 。

image.png

项目地址
GitHub - https://github.com/JiuZero/Ling
Gitee - https://gitee.com/JiuZero/Ling

一个为 Z0Scan 量身打造的可视化操作界面。她将 Z0Scan 的各项能力以更直观、更美观的方式呈现,助力安全研究者轻松上手,高效“食用”Z0。

image.png

image.png

image.png

在 Z0Scan 的成长路上汲取了一些开源项目的养分,它们包括但不限于:W13Scan、GourdScanV2、myscan、Sitadel..

插件开发离不开它们:tplmap、webcrack、SQLmap..

相关信息
文档:https://jiuzero.github.io/tags/z0scan
发行页:https://github.com/JiuZero/z0scan/releases
更新日志:https://github.com/JiuZero/z0scan/blob/master/doc/CHANGELOG.MD

同时 Z0Scan 的开发也离不开各位大师傅们的支持与肯定,最后诚以此向各位网安工作者们表达最深的敬意。