qubitac/AC-Scanner
GitHub: qubitac/AC-Scanner
开源后量子密码学扫描器,评估 TLS 和 SSH 服务的量子漏洞风险并生成符合 NIST IR 8547 标准的密码学物料清单。
Stars: 0 | Forks: 0
```
╔════════════════════════════════════════════════════════════╗
║ ║
║ ██████ ██ ██ ██████ ██ ████████ █████ ██████ ║
║ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ║
║ ██ ██ ██ ██ ██████ ██ ██ ███████ ██ ║
║ ██ ▄▄ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ║
║ ██████ ██████ ██████ ██ ██ ██ ██ ██████ ║
║ ▀▀ ║
║ ║
║ Post-Quantum Cryptography Scanner ║
║ https://qubitac.com ║
║ ║
╚════════════════════════════════════════════════════════════╝
```
# AC Scanner — 后量子密码学暴露评估
**扫描。发现。加固。**





AC Scanner 是一个开源流水线,可跨 TLS 端点和 SSH 服务映射您的完整密码学攻击面,根据 NIST 后量子标准评估每项资产,并通过单个命令生成结构化的 **密码学物料清单 (CBOM)**。
🔗 **Dashboard:** [qubitac.com/dashboard](https://qubitac.com/dashboard)
## 功能概述
```
bash scan.sh example.com --all
```
一条命令。四个阶段:
| 阶段 | 执行内容 |
|-------|-------------|
| **Discovery (发现)** | 子域名枚举、DNS 解析、Web 和 SSH 服务检测 |
| **Scanning (扫描)** | OpenSSL TLS 握手分析 + 每台主机的 SSH 审计 |
| **Analysis (分析)** | PQC 漏洞评分、NIST 截止日期映射、CBOM 生成 |
| **Reporting (报告)** | JSONL + JSON + Markdown 输出,可直接上传至 Dashboard |
## 主要特性
- **TLS 扫描** — 采集 TLS 版本、密码套件、证书链、EC 曲线、密钥交换组以及 PQC 混合检测 (X25519MLKEM768, SecP256r1MLKEM768 等)
- **SSH 审计** — 根据 PQC 安全模式 (sntrup761, mlkem, kyber, ntru, frodokem) 对 KEX 算法进行分类,标记弱加密算法 (3DES, DES, RC4, arcfour, Blowfish) 和弱 MAC (SHA-1, MD5, RIPEMD),检测易受量子攻击的主机密钥 (RSA, ECDSA, Ed25519, Ed448, DSA) 并提供针对每种算法的 ML-DSA 替换指导,同时将 OpenSSH 版本纳入迁移优先级考量 (7.x = CRITICAL, 8.x = HIGH, 9.x = MEDIUM)
- **PQC 评分** — 基于三个组件对每个端点进行量子漏洞评分:密钥交换 (70%)、证书签名 (30%) 和对称加密 (Grover 算法影响)
- **迁移优先级** — CRITICAL / HIGH / MEDIUM / LOW 四个层级,与 NIST IR 8547 截止日期对齐 (2030 年弃用,2035 年禁用)
- **CBOM 输出** — JSON 格式的结构化密码学物料清单,适用于审计员、CISO 和合规框架 (NIST, PCI-DSS)
- **CDN 绕过** — SSH 扫描器探测子域名记录、MX 和 SPF ip4: 指令,以查找 CDN 后的真实 IP
- **HTTP 回退** — 当 TLS 失败时,回退到 HTTP 探测以进行服务器指纹识别和 OS 检测
- **遗留算法检测** — 无论密钥交换方式如何,均将 RC4、3DES、NULL、出口级以及 CBC+SHA1 密码标记为非 PQC 就绪
- **数据质量标记** — 每个结果包含探测状态和数据质量标记,明确指出已采集和未采集的内容,使 CBOM 引擎仅对数据充足的端点进行准确评分
- **无云依赖** — 完全在您自己的基础设施上运行;适用于物理隔离环境
- **带时间戳的扫描历史** — 比较不同时间的扫描结果,以追踪 PQC 迁移进度
## 支持的算法
### 易受量子攻击(检测并标记)
| 算法 | 类型 | 破解方式 | NIST 替代方案 |
|-----------|------|-----------|-----------------|
| X25519, P-256, P-384, P-521 | TLS Key Exchange | Shor's Algorithm | ML-KEM (FIPS 203) |
| RSA, ECDSA, DSA, Ed25519, Ed448 | SSH Host Keys / Signatures | Shor's Algorithm | ML-DSA (FIPS 204) |
| 3DES, DES, RC4, arcfour, Blowfish | SSH Ciphers | 经典弱点 | AES-256-GCM |
| SHA-1, MD5, RIPEMD | SSH MACs | 经典弱点 | SHA-256 / Poly1305 |
| AES-128 | Symmetric | Grover's Algorithm | AES-256 |
### PQC 安全(检测为合规)
| Group | Classical Component | PQC Component | Security Level |
|-------|-------------------|---------------|---------------|
| X25519MLKEM768 | X25519 | ML-KEM-768 | 128-bit quantum-safe |
| SecP256r1MLKEM768 | P-256 | ML-KEM-768 | 128-bit quantum-safe |
| X25519Kyber768 | X25519 | Kyber-768 | 128-bit quantum-safe |
| SecP384r1MLKEM1024 | P-384 | ML-KEM-1024 | 192-bit quantum-safe |
## 安装说明
### 前置条件
- Linux 或 macOS (Windows 通过 WSL)
- Python 3.8+
- OpenSSL 3.x (用于 PQC 混合组检测)
### 安装依赖
```
# macOS
brew install subfinder dnsx httpx jq openssl
pip3 install ssh-audit
# Ubuntu / Debian
sudo apt install jq openssl dnsutils
pip3 install ssh-audit
# subfinder, dnsx, httpx (基于 Go 的工具)
go install -v github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest
go install -v github.com/projectdiscovery/dnsx/cmd/dnsx@latest
go install -v github.com/projectdiscovery/httpx/cmd/httpx@latest
```
## 快速开始
```
# 克隆 repo
https://github.com/qubitac/AC-Scanner.git
chmod +x scan.sh
# 扫描域名 (仅 web 端口)
bash scan.sh example.com
# 扫描 web + SSH
bash scan.sh example.com --web --ssh
# 扫描所有内容
bash scan.sh example.com --all
# 自定义端口
bash scan.sh example.com -p 443,8443
# 带详细输出
bash scan.sh example.com --all -v
```
## 端口预设
| Flag | Ports |
|------|-------|
| `--web` | 80, 443, 8080, 8443 |
| `--ssh` | 22, 2222 |
| `--all` | 上述所有 |
| `-p` | 自定义逗号分隔端口 |
## 输出
每次扫描会在 `//` 下生成三个输出文件:
```
example.com/
└── 2026-03-13T120000/
├── cbom/
│ ├── crypto-bom.json ← CBOM for dashboard upload
│ └── summary.md ← Human-readable scan summary
└── reports/
└── scan_stats.json ← Machine-readable scan statistics
```
### CBOM JSON (节选)
```
{
"host": "api.example.com",
"port": 443,
"tls_version": "tls13",
"cipher": "TLS_AES_256_GCM_SHA384",
"pqc_hybrid": false,
"pqc_ready": false,
"migration_priority": "CRITICAL",
"vulnerabilities": [
{
"component": "Key Exchange",
"algorithm": "X25519",
"quantum_vulnerable": true,
"broken_by": "Shor's Algorithm",
"replacement": "ML-KEM (FIPS 203) via X25519MLKEM768"
}
]
}
```
### Dashboard
将 `crypto-bom.json` 上传至 [qubitac.com/dashboard](https://qubitac.com/dashboard),即可可视化您的 PQC 就绪评分,按 TLS 版本、密码套件和迁移优先级筛选,并为审计员导出发现结果。
## 迁移优先级评分
每个端点根据 NIST IR 8547 获得一个评分 (0–100):
| Priority | Score | Target Timeline | NIST Deadline |
|----------|-------|-----------------|---------------|
| **CRITICAL** | 80–100 | 2026–2027 | 2030 年后弃用 |
| **HIGH** | 60–79 | 2026–2028 | 2030 年后弃用 |
| **MEDIUM** | 20–59 | 2028–2030 | 必须在 2030 年前完成 |
| **LOW** | 0–19 | 2030–2032 | 必须在 2035 年前完成 |
## 架构
```
scan.sh (orchestrator)
├── Discovery
│ ├── subfinder → subdomain enumeration
│ ├── dnsx → DNS resolution
│ └── httpx → live host detection
│
├── TLS Scanner (openssl_scanner.py)
│ ├── openssl s_client per host
│ ├── Certificate parsing (x509)
│ ├── PQC hybrid group detection
│ └── HTTP fallback probing
│
├── SSH Scanner (ssh_scanner.py)
│ ├── TCP pre-check
│ ├── ssh-audit per host
│ ├── CDN bypass (DNS/MX/SPF)
│ ├── PQC KEX classification (sntrup761, mlkem, kyber, ntru, frodokem)
│ ├── Weak cipher/MAC detection (3DES, RC4, SHA-1, MD5, RIPEMD)
│ ├── Host key vulnerability mapping (RSA/ECDSA/Ed25519 → ML-DSA)
│ └── OpenSSH version-based priority scoring
│
└── CBOM Engine (pqc_cbom.py)
├── Vulnerability scoring
├── Migration priority mapping
├── CBOM JSON generation
└── Markdown summary + migration roadmap
```
## NIST PQC 标准参考
| Standard | Algorithm | Status | Role |
|----------|-----------|--------|------|
| FIPS 203 | ML-KEM (Kyber) | ✅ 2024 年 8 月定稿 | Key Encapsulation |
| FIPS 204 | ML-DSA (Dilithium) | ✅ 2024 年 8 月定稿 | Digital Signatures |
| FIPS 205 | SLH-DSA (SPHINCS+) | ✅ 2024 年 8 月定稿 | Hash-based Signatures |
| FIPS 206 | FN-DSA (Falcon) | 🔄 草案 | Digital Signatures |
| — | HQC | 🔄 2025 年 3 月入选 | Key Encapsulation (备份) |
**NIST IR 8547 时间表:**
- **2030** — 弃用量子易受攻击算法
- **2035** — 全面禁用
## 使用场景
- **Blue teams** — 在 2030 年 NIST 截止日期前盘点密码学资产
- **Security architects** — 识别哪些端点需要在部署 PQC 之前进行 TLS 1.3 升级
- **Compliance engineers** — 为对齐 NIST 和 PCI-DSS 的审计师生成 CBOM 证据
- **Pentesters** — 识别范围内的弱密码套件、即将过期的证书和旧版 TLS
- **Air-gapped environments** — 无需 API 密钥或云服务
## 环境变量
| Variable | Default | Description |
|----------|---------|-------------|
| `SCAN_TIMEOUT` | `10` | 连接超时(秒) |
| `VERBOSE` | `0` | 设置为 `1` 以显示详细输出 |
| `DEBUG` | `0` | 设置为 `1` 以显示原始 OpenSSL 输出 |
```
SCAN_TIMEOUT=30 VERBOSE=1 bash scan.sh example.com --all
```
## 平台支持
| Platform | Support |
|----------|---------|
| Linux | ✅ 完全支持 |
| macOS | ✅ 完全支持 |
| Windows (WSL) | ✅ 支持 |
| Windows (Git Bash) | ✅ `bash scan.sh` |
| Windows (native) | ❌ 不支持 |
## 许可证
MIT License — 详见 [LICENSE](LICENSE)
## 致谢
AC Scanner 基于以下优秀的开源工具构建:
- [OpenSSL](https://www.openssl.org/) — TLS handshake and certificate parsing
- [ssh-audit](https://github.com/jtesta/ssh-audit) — SSH configuration auditing
- [subfinder](https://github.com/projectdiscovery/subfinder) — Subdomain enumeration
- [dnsx](https://github.com/projectdiscovery/dnsx) — DNS resolution
- [httpx](https://github.com/projectdiscovery/httpx) — HTTP probing
*由 [QubitAC](https://qubitac.com) 构建 · [Dashboard](https://qubitac.com/dashboard) · [X](https://x.com/qubitac)*
标签:CBOM, NIST IR 8547, PQC, Python, SSH审计, TLS扫描, 加密敏捷性, 加密资产发现, 协议分析, 后量子密码学, 安全测试, 安全测试工具, 密码学扫描器, 密码物料清单, 应用安全, 开源安全工具, 攻击性安全, 无后门, 权限提升, 网络安全, 证书分析, 运行时操纵, 逆向工具, 逆向工程平台, 量子安全, 量子计算威胁, 防御绕过, 隐私保护