zcyberseclab/zscan
GitHub: zcyberseclab/zscan
一款基于灵活指纹系统的快速服务检测工具,集资产发现、服务识别与 POC 漏洞验证于一体,帮助安全人员高效摸清基础设施资产面。
Stars: 44 | Forks: 3
# zscan
[](https://goreportcard.com/report/github.com/zcyberseclab/zscan)
[](https://godoc.org/github.com/zcyberseclab/zscan)
[](https://github.com/zcyberseclab/zscan/blob/main/LICENSE)
一款快速、可定制化的服务检测工具,由灵活的指纹系统驱动。它可以帮助您识别基础设施中的服务、API 和网络配置。
## 许可证
ZScan 在 MIT 许可证下分发。
文档 | 功能 | 安装说明 | 用法
## ✨ 功能 - **主动扫描引擎**:高性能并发端口扫描与服务检测 - **智能识别**: - MAC 厂商识别(200+ OUI 映射) - 虚拟机检测(VMware, VirtualBox, Hyper-V, KVM 等) - OS 指纹识别 - **精准 POC 定向**: - 通过指纹识别进行高精度 POC 定向验证 - 比传统扫描器更快、更准确 - **灵活的指纹系统**: - 支持自定义指纹定义 - 支持多种协议(HTTP, HTTPS, TCP, UDP) - 模式匹配与响应分析 - **服务检测**: - Web 服务识别 - 常见应用框架检测 - TLS/SSL 配置分析 - **输出格式**: - 用于集成的 JSON 输出 - 人类可读的控制台输出 - 通过 HTTP API 进行远程报告 ## 📦 安装说明 ### 通过二进制文件 从 [Releases](https://github.com/zcyberseclab/zscan/releases) 下载最新版本。 ## 🚀 用法 ### 主动扫描 ``` # 扫描单个 IP zscan -target 192.168.1.1 # 扫描 CIDR 范围 zscan -target 192.168.1.0/24 # 扫描多个目标(以 ; 或 , 分隔) zscan -target "192.168.1.0/24;10.0.0.0/24" zscan -target "192.168.1.1,192.168.1.2,192.168.1.3" # 扫描特定端口 zscan -target 192.168.1.1 -port 80,443,8080 # 将结果保存到 JSON 文件 zscan -target 192.168.1.1 -output results.json # 将结果报告到远程服务器 zscan -target 192.168.1.0/24 -report http://server/api/assets ``` ### 可用选项 | 选项 | 描述 | |--------|-------------| | `-target` | IP 地址或 CIDR 范围(支持使用 `;` 或 `,` 分隔) | | `-port` | 要扫描的自定义端口(以逗号分隔) | | `-config` | 配置文件路径(默认:config/config.yaml) | | `-geo` | 启用地理位置和 IP 信息查询 | | `-output` | 输出格式:json、html 或 md | | `-report` | 用于报告扫描结果的 URL | | `-apikey` | 用于报告认证的 API 密钥(Bearer token) | | `-version` | 显示版本信息 | ### 作为 Go 库使用 ``` package main import ( "flag" "log" "os" "time" "github.com/zcyberseclab/zscan/pkg/stage" ) func main() { target := flag.String("target", "", "IP address or CIDR range to scan") configPath := flag.String("config", "config/config.yaml", "Path to config file") templatesDir := flag.String("templates-dir", "templates", "Path to templates directory") enableGeo := flag.Bool("geo", false, "Enable geolocation and IP info lookup") enableCensys := flag.Bool("censys", false, "Enable Censys data enrichment") censysAPIKey := flag.String("censys-api-key", "", "Censys API Key") censysSecret := flag.String("censys-secret", "", "Censys API Secret") flag.Parse() if *target == "" { log.Fatal("Target IP or CIDR range is required") } // Handle Censys credentials from environment if not provided if *enableCensys { if *censysAPIKey == "" || *censysSecret == "" { *censysAPIKey = os.Getenv("CENSYS_API_KEY") *censysSecret = os.Getenv("CENSYS_SECRET") } if *censysAPIKey == "" || *censysSecret == "" { log.Printf("Warning: Censys integration enabled but credentials not provided. Skipping Censys data enrichment.") *enableCensys = false } } // Create scanner scanner, err := stage.NewScanner(*configPath, *templatesDir, *enableGeo, *enableCensys, *censysAPIKey, *censysSecret) if err != nil { log.Fatalf("Failed to create scanner: %v", err) } defer scanner.Close() // Perform scan startTime := time.Now() results, err := scanner.Scan(*target) if err != nil { log.Fatalf("Scan failed: %v", err) } // Print results if err := stage.PrintResults(results); err != nil { log.Printf("Error printing results: %v", err) } duration := time.Since(startTime) log.Printf("\nScan completed in: %v\n", duration) } ``` ### 使用 Dockerfile 构建 Docker 运行 `docker build -t zscan .` 来构建镜像。 运行 `docker run zscan --target 127.0.0.1 --config /app/config/config.yaml` 来启动容器。 ## 🔍 编写 POC ZScan 支持以 YAML 格式进行自定义 POC 开发。有关 POC 编写的详细信息,请参阅我们的 [POC 编写指南](https://github.com/zcyberseclab/zscan/wiki/ZScan-POC-Writing-Guide)。 POC 示例: ``` type: Path Traversal cve-id: CVE-2021-41773 severity: critical rules: - method: GET path: /icons/.%2e/%2e%2e/etc/passwd expression: "response.status==200 && response.body.bcontains(b'root:')" ``` 获取更多示例和详细语法,请查看我们的 [POC 编写指南](https://github.com/zcyberseclab/zscan/wiki/ZScan-POC-Writing-Guide)。 ## 我们的使命 传统的资产或漏洞扫描器是几十年前构建的。它们是闭源的、极其缓慢的,并且是供应商驱动的。如今的攻击者会在几天内大规模利用互联网上新发布的 CVE,而不像过去那样需要数年时间。这种转变需要一种完全不同的方法来应对互联网上的流行漏洞利用。 我们构建了 ZScan 来解决这一挑战。我们将整个扫描引擎框架开放并使其可定制化——允许全球安全社区合作应对互联网上的流行攻击向量和漏洞。ZScan 现已被许多企业、政府机构和大学使用和贡献。 您可以通过贡献代码、模板库或加入我们的团队来参与。 ## 贡献者 感谢所有出色的社区贡献者发送 PR 并保持该项目的更新。 ❤️标签:API发现, C2日志可视化, EVTX分析, Go语言, HTTP分析, Linux安全, MAC厂商识别, POC验证, Qt框架, SSL/TLS分析, 云存储安全, 协议分析, 开源安全工具, 指纹识别, 插件系统, 操作系统指纹, 数据统计, 日志审计, 服务识别, 权限提升, 消息认证码, 程序破解, 端口扫描, 网络安全, 网络安全审计, 网络扫描, 网络资产测绘, 虚拟机检测, 请求拦截, 逆向工程平台, 隐私保护