## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-ZCYBERSECLAB-ZSCAN
# zscan
  
一个快速、可定制的服务检测工具,由灵活的指纹系统驱动。帮助你识别基础设施中的服务、API和网络配置。
#### 文档 | 功能特性 | 安装 | 使用方法
## ✨功能特性
* **主动扫描引擎** :高性能并发端口扫描和服务检测
* **智能检测** :
* MAC 厂商识别(200+ OUI 映射)
* 虚拟机检测(VMware、VirtualBox、Hyper-V、KVM 等)
* 操作系统指纹识别
* **精确的 POC 定位** :
* 通过指纹识别实现高精度 POC 定位
* 比传统扫描器更快更准确
* **灵活的指纹系统** :
* 支持自定义指纹定义
* 支持多种协议(HTTP、HTTPS、TCP、UDP)
* 模式匹配与响应分析
* **服务检测** :
* Web 服务识别
* 常见应用框架检测
* TLS/SSL 配置分析
* **输出格式** :
* JSON 输出便于集成
* 人类可读的控制台输出
* 通过 HTTP API 远程报告
## 📦 安装
### 从二进制文件安装
从 Releases 下载最新版本
## 🚀 使用方法
### 主动扫描
root@kitploit:~
# 扫描单个 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
### 可用选项
### 作为 Go 库使用
root@kitploit:~
package main
import (
"flag"
"log"
"os"
"time"
"github.com/zcyberseclab/zscan/pkg/stage"
)
func main() {
target := flag.String("target", "", "要扫描的 IP 地址或 CIDR 范围")
configPath := flag.String("config", "config/config.yaml", "配置文件路径")
templatesDir := flag.String("templates-dir", "templates", "模板目录路径")
enableGeo := flag.Bool("geo", false, "启用地理位置和 IP 信息查询")
enableCensys := flag.Bool("censys", false, "启用 Censys 数据增强")
censysAPIKey := flag.String("censys-api-key", "", "Censys API 密钥")
censysSecret := flag.String("censys-secret", "", "Censys API 密钥 Secret")
flag.Parse()
if *target == "" {
log.Fatal("需要目标 IP 或 CIDR 范围")
}
// 如果未提供,则从环境变量获取 Censys 凭据
if *enableCensys {
if *censysAPIKey == "" || *censysSecret == "" {
*censysAPIKey = os.Getenv("CENSYS_API_KEY")
*censysSecret = os.Getenv("CENSYS_SECRET")
}
if *censysAPIKey == "" || *censysSecret == "" {
log.Printf("警告:已启用 Censys 集成但未提供凭据。跳过 Censys 数据增强。")
*enableCensys = false
}
}
// 创建扫描器
scanner, err := stage.NewScanner(*configPath, *templatesDir, *enableGeo, *enableCensys, *censysAPIKey, *censysSecret)
if err != nil {
log.Fatalf("创建扫描器失败:%v", err)
}
defer scanner.Close()
// 执行扫描
startTime := time.Now()
results, err := scanner.Scan(*target)
if err != nil {
log.Fatalf("扫描失败:%v", err)
}
// 打印结果
if err := stage.PrintResults(results); err != nil {
log.Printf("打印结果时出错:%v", err)
}
duration := time.Since(startTime)
log.Printf("\n扫描完成耗时:%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 编写指南。
示例 POC:
root@kitploit:~
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 编写指南。
## 我们的使命
传统的资产或漏洞扫描器是几十年前构建的。它们是闭源的、极其缓慢且由厂商驱动。如今的攻击者在互联网上大规模利用新发布的 CVE,只需几天时间,而过去需要数年。这种变化需要一种全新的方法来应对互联网上流行的漏洞利用。
我们构建 ZScan 就是为了解决这个挑战。我们将整个扫描引擎框架开放并自定义——让全球安全社区能够协作应对互联网上流行的攻击向量和漏洞。ZScan 现已得到众多企业、政府机构和大学的使用和贡献。
你可以通过贡献代码、模板库或加入我们的团队来参与其中。
## 贡献者
感谢所有了不起的社区贡献者提交 PR 并保持此项目更新。❤️ 
## 许可证
ZScan 采用 MIT 许可证发布。