Skip to content

乾坤圈 (QianKunQuan) 是一款功能强大的网络安全扫描工具,专为渗透测试人员、安全研究人员和系统管理员设计。它结合了高效端口扫描、服务识别、版本检测和CVE漏洞关联等核心功能,帮助您快速评估目标系统的安全状况。

Notifications You must be signed in to change notification settings

ctkqiang/QianKunQuan

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

乾坤圈 (QianKunQuan)

Go License Platform

基于 Go 语言开发的高性能端口扫描与 CVE 漏洞检测工具

demo

项目简介

乾坤圈 (QianKunQuan) 是一款功能强大的网络安全扫描工具,专为渗透测试人员、安全研究人员和系统管理员设计。它结合了高效端口扫描服务识别版本检测CVE漏洞关联等核心功能,帮助您快速评估目标系统的安全状况。

核心特性

  • 高性能扫描:采用 Goroutine 并发模型,支持数千并发连接
  • 智能服务识别:自动识别 100+ 常见网络服务
  • 版本信息提取:从服务横幅中提取精确的版本信息(HTTP/SSH/FTP/Apache/Nginx 等)
  • CVE 漏洞检测:内置 CVE 数据库,自动关联已识别服务的已知漏洞
  • IPv6 支持:完全兼容 IPv4/IPv6 双协议栈
  • 多格式输出:支持 Text、JSON、CSV 等多种输出格式
  • 美观的终端输出:使用表格化展示扫描结果,清晰易读
  • 实时数据库更新:一键更新 CVE 漏洞数据库

快速开始

安装方法

方法一:从源码编译(推荐)

# 克隆项目
git clone https://github.com/ctkqiang/QianKunQuan.git
cd QianKunQuan

# 编译项目
go build -o qiankunquan cmd/main.go

# 验证安装
./qiankunquan -help

方法二:使用 Go 安装

go install github.com/your-username/QianKunQuan@latest

方法三:下载预编译二进制文件

访问 Releases 页面 下载对应平台的二进制文件。

第一个扫描示例

# 扫描目标网站的常见端口
./qiankunquan -target "example.com"

# 扫描特定端口范围
./qiankunquan -target "192.168.1.1" -ports "22,80,443,8080"

# 保存扫描结果到 JSON 文件
./qiankunquan -target "example.com" -output "result.json" -format json

详细使用说明

基本用法

1. 快速扫描(常见端口)

# 扫描目标主机的常见端口(默认)
./qiankunquan -target "example.com"

# 扫描IP地址的常见端口
./qiankunquan -target "192.168.1.1"

2. 指定端口范围

# 扫描单个端口
./qiankunquan -target "example.com" -ports 80

# 扫描多个端口
./qiankunquan -target "example.com" -ports "80,443,8080"

# 扫描端口范围
./qiankunquan -target "example.com" -ports "1-1000"

# 扫描所有端口(1-65535)
./qiankunquan -target "example.com" -ports "all"

# 组合使用
./qiankunquan -target "example.com" -ports "22,80,443,8000-9000"

3. 高级选项

# 调整超时时间(秒)
./qiankunquan -target "example.com" -timeout 5

# 调整并发线程数
./qiankunquan -target "example.com" -threads 200

# 详细模式,显示扫描过程
./qiankunquan -target "example.com" -verbose

# 更新CVE数据库
./qiankunquan -update

4. 输出格式

# 文本格式(默认)
./qiankunquan -target "example.com" -format text

# JSON格式
./qiankunquan -target "example.com" -format json

# CSV格式
./qiankunquan -target "example.com" -format csv

# 保存到文件
./qiankunquan -target "example.com" -output "scan_result.json" -format json
./qiankunquan -target "example.com" -output "scan_result.txt" -format text

参数详解

参数 说明 默认值 示例
-target 目标IP地址或域名(必填) -target "192.168.1.1"
-ports 端口范围(如: 1-1000,80,443) 常见端口列表 -ports "22,80,443"
-timeout 连接超时时间(秒) 2 -timeout 5
-threads 并发扫描线程数 100 -threads 200
-output 输出文件路径 无(输出到控制台) -output "result.json"
-format 输出格式:text, json, csv text -format json
-update 更新CVE漏洞数据库 false -update
-verbose 显示详细扫描过程 false -verbose
-help 显示帮助信息 -help

常见端口说明

默认扫描的常见端口包括:

  • Web服务: 80, 443, 8080, 8443, 3000, 5000
  • 数据库: 3306, 5432, 6379, 27017, 9200
  • 远程访问: 22, 23, 3389
  • 邮件服务: 25, 110, 143, 465, 587, 993, 995
  • 文件传输: 21, 139, 445
  • 其他服务: 53, 111, 135, 1433, 1521, 5984, 11211

输出示例

文本格式输出

乾坤圈 - Go语言端口扫描与CVE检测工具
==================================================
目标: example.com (93.184.216.34)
开始时间: 2024-01-01 10:30:00
==================================================

端口    状态    服务        版本      产品               CVE数量
----    ------  --------    -------   -------           -------
22      open    ssh         8.2p1     OpenSSH           3
80      open    http        1.1       nginx             5
443     open    https       2.0       nginx             7
21      open    ftp         1.3.5a    ProFTPD           2
3306    open    mysql       8.0.32    MySQL             12
5432    open    postgresql  14.5      PostgreSQL        8

==================================================
扫描完成!共发现 6 个开放端口
总耗时: 2.45 秒

JSON 格式输出示例

{
  "target": "example.com",
  "ip": "93.184.216.34",
  "start_time": "2024-01-01T10:30:00Z",
  "scan_results": [
    {
      "port": 22,
      "state": "open",
      "service": "ssh",
      "version": "8.2p1",
      "product": "OpenSSH",
      "cves": [
        "CVE-2023-38408",
        "CVE-2022-41323",
        "CVE-2021-41617"
      ]
    },
    {
      "port": 80,
      "state": "open",
      "service": "http",
      "version": "1.1",
      "product": "nginx",
      "cves": [
        "CVE-2023-44487",
        "CVE-2022-41741",
        "CVE-2021-3618"
      ]
    }
  ],
  "summary": {
    "total_ports": 1000,
    "open_ports": 6,
    "scan_duration": "2.45s"
  }
}

技术架构

核心模块

QianKunQuan/
├── cmd/main.go                 # 程序入口点
├── internal/
│   ├── scanner/               # 扫描器核心
│   │   ├── port_scanner.go    # 端口扫描逻辑
│   │   └── cve_scanner.go     # CVE检测逻辑
│   ├── model/                 # 数据模型
│   │   ├── scan_result.go     # 扫描结果结构
│   │   └── port_services.go   # 端口服务映射
│   ├── cvedb/                 # CVE数据库管理
│   │   ├── downloader.go      # 数据库下载
│   │   └── matcher.go         # 漏洞匹配
│   └── utils/                 # 工具函数
├── pkg/
│   ├── cli/                   # CLI界面
│   │   ├── parser.go          # 参数解析
│   │   └── output_formatter.go # 输出格式化
│   └── logger/                # 日志系统
└── docs/                      # 文档
    └── USAGE.md               # 使用说明

版本检测算法

乾坤圈使用智能的版本提取算法,支持多种服务类型:

  1. HTTP/HTTPS 服务:从 HTTP 响应头中提取协议版本和服务器版本
  2. SSH 服务:解析 SSH 协议横幅,提取 OpenSSH 等版本信息
  3. FTP 服务:分析 FTP 欢迎消息,识别 ProFTPD、vsftpd 等
  4. Web 服务器:识别 Nginx、Apache、IIS 等服务器版本
  5. 数据库服务:提取 MySQL、PostgreSQL、Redis 等版本信息

版本提取使用正则表达式模式匹配,支持:

  • 标准版本格式:X.Y.Z
  • 带字母后缀:X.Y.ZaX.YpZ
  • 前缀格式:vX.Y.Zversion X.Y.Z
  • 复杂版本字符串:OpenSSH_8.2p1 Ubuntu-4ubuntu0.3

开发指南

环境要求

  • Go 1.25 或更高版本
  • Git
  • SQLite3(用于 CVE 数据库)

构建与测试

# 克隆项目
git clone https://github.com/ctkqiang/QianKunQuan.git
cd QianKunQuan

# 安装依赖
go mod download

# 运行测试
go test ./...

# 静态代码分析
go vet ./...

# 构建二进制文件
go build -o qiankunquan cmd/main.go

添加新的服务识别

要添加新的服务识别,请修改以下文件:

  1. internal/model/port_services.go - 添加端口到服务的映射
  2. internal/scanner/port_scanner.go - 在 extractVersionFromBanner 函数中添加新的正则表达式模式

示例:添加对新 FTP 服务器的支持

// 在 port_services.go 中添加
var PortServices = map[int]string{
    2121: "ftp",  // 新增 FTP 端口
}

// 在 port_scanner.go 中添加版本提取模式
patterns = append(patterns, `(?i)newftpd.*?(\d+\.\d+(?:\.\d+[a-z]?)?)`)

常见问题解答

Q1: 扫描速度太慢怎么办?

A: 调整 -threads 参数增加并发数,同时确保 -timeout 设置合理(通常 2-5 秒)。

Q2: 为什么有些服务的版本无法识别?

A: 某些服务可能不返回版本信息,或者使用了非标准的版本格式。您可以通过 -verbose 模式查看原始横幅信息。

Q3: CVE 数据库如何更新?

A: 运行 ./qiankunquan -update 即可自动下载最新的 CVE 数据库。

Q4: 支持扫描 IPv6 地址吗?

A: 完全支持!可以直接使用 IPv6 地址作为 target 参数。

Q5: 如何自定义扫描端口列表?

A: 修改 internal/model/port_services.go 中的 CommonPorts 切片,然后重新编译。

贡献指南

我们欢迎各种形式的贡献!

  1. 报告问题:在 GitHub Issues 中报告 bug 或提出建议
  2. 提交代码:Fork 项目,创建功能分支,提交 Pull Request
  3. 改进文档:帮助完善文档,包括翻译、示例等
  4. 分享用例:分享您使用乾坤圈的实际案例

开发规范

  • 遵循 Go 代码规范(使用 gofmt
  • 添加适当的测试用例
  • 更新相关文档
  • 保持向后兼容性

如果这个项目对你有帮助,请给它一个 ⭐️ 星标!


🌐 全球捐赠通道

国内用户


🔵 支付宝(小企鹅在收金币哟~)

🟢 微信支付(小绿龙在收金币哟~)

国际用户


📌 开发者社交图谱

技术交流

社交互动

About

乾坤圈 (QianKunQuan) 是一款功能强大的网络安全扫描工具,专为渗透测试人员、安全研究人员和系统管理员设计。它结合了高效端口扫描、服务识别、版本检测和CVE漏洞关联等核心功能,帮助您快速评估目标系统的安全状况。

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages