Amit-netizen/CryptoComm-Auditor
GitHub: Amit-netizen/CryptoComm-Auditor
面向 IoT 与嵌入式设备的命令行加密安全审计工具,覆盖 TLS 端点探测、固件机密扫描和 MQTT 中间人防御模拟。
Stars: 0 | Forks: 0
# CryptoComm-Auditor
**嵌入式固件 / IoT 的加密完整性与鲁棒性验证器**
一个使用 **Go** 和 **Bash** 编写的命令行安全审计工具,用于检查 IoT 和嵌入式设备部署的加密安全态势——包括 TLS 端点配置、设备文件系统机密信息扫描以及 MQTT 中间人防御模拟。
```
╔═══════════════════════════════════════════════════════╗
║ CryptoComm-Auditor v1.0.0 ║
║ Cryptographic Integrity & Robustness Verifier ║
║ IoT / Embedded Device TLS Security Auditor ║
╚═══════════════════════════════════════════════════════╝
```
## 功能特性
### 1. TLS / SSL 端点审计器 (`tls-audit`)
直接使用 Go 的 `crypto/tls` 连接到任何 HTTPS/TLS 端点,并执行全面的加密安全态势审计:
| 检查项 | 检测内容 |
|---|---|
| **协议版本** | 接受 TLS 1.0/1.1(已弃用),首选 TLS 1.3 |
| **密码套件** | RC4、DES、3DES、NULL、EXPORT 密码;缺乏前向保密性 |
| **证书过期** | 已过期、≤14 天、≤30 天警告 |
| **PKI 链** | 主机名/SAN 不匹配、颁发者链、CA 有效性 |
| **OCSP 装订** | 缺失警告(强制客户端进行实时吊销检查) |
| **完全前向保密性** | 检测协商密码中是否存在 ECDHE/DHE |
严重性级别:`CRITICAL` → `HIGH` → `MEDIUM` → `INFO` → `PASS`
### 2. 固件 / 配置安全扫描器 (`firmware-scan`)
一个 Bash 脚本,遍历设备文件系统并标记 8 类漏洞:
- **硬编码私钥** — 配置文件中的 PEM `BEGIN PRIVATE KEY` 块
- **明文凭据** — `.conf`、`.env`、`.yaml`、`.sh` 中的 password/secret/token/api_key
- **弱密码/默认密码** — admin、password、1234、changeme、root
- **全局可读的敏感文件** — `.key`、`.pem`、`.crt`、`.p12`、`shadow`
- **不安全的协议** — telnet、FTP、纯 HTTP、未加密的 MQTT (端口 1883)
- **SSH 配置错误** — `PermitRootLogin yes`、`Protocol 1`
- **已弃用的 TLS 配置** — SSLv3、TLSv1.0/1.1、RC4、3DES、NULL cipher 引用
- **禁用证书验证** — `InsecureSkipVerify = true`、`verify_peer = false`
输出 JSON 供 Go 报告引擎使用,以实现统一报告。
### 3. MQTT-over-TLS 中间人防御模拟器 (`mqtt-sim`)
跨三种安全场景模拟设备到云的 MQTT 会话:
| 场景 | 演示内容 |
|---|---|
| `valid` | 带 CA 验证的安全 TLS 1.2+ — 消息已传递 |
| `mitm_simulation` | 设置了 `InsecureSkipVerify=true` 的设备 — 暴露攻击面 |
| `cert_pinning` | 通过 `VerifyConnection` 进行 SHA-256 指纹固定 — 阻止了流氓证书 |
### 4. 模拟 HTTPS 服务器 (`mock-server`)
启动本地 TLS 服务器以进行离线测试——将 `tls-audit` 指向 `localhost:8443`。
## 截图
### TLS 1.3 — 实时端点上完全通过 (PASS)
```
./auditor tls-audit -host google.com
```

### 过期证书 — CRITICAL 发现
```
./auditor tls-audit -host expired.badssl.com -insecure
```

### 弃用协议 — 检测到 TLS 1.0 (HIGH)
```
./auditor tls-audit -host tls-v1-0.badssl.com -port 1010 -insecure
```

### 固件扫描 — 18 个发现 (7 个 CRITICAL,7 个 HIGH)
```
./auditor firmware-scan -path ./testdata/device-fs
```

### MQTT-over-TLS — 证书固定 (SECURE + 2× BLOCKED)
```
./auditor mqtt-sim -broker test.mosquitto.org -port 8883
```

### 完整审计 — 综合报告
```
./auditor full -host google.com -fsroot ./testdata/device-fs -json audit-report.json
```

### 完整审计 — JSON 导出
```
cat audit-report.json | python3 -m json.tool | head -60
```

## 项目结构
```
cryptocomm-auditor/
├── cmd/auditor/main.go # CLI entry point — tls-audit, firmware-scan, mqtt-sim, mock-server, full
├── internal/
│ ├── tls/auditor.go # TLS/PKI audit engine (two-phase probe + cert chain inspection)
│ ├── mqtt/simulator.go # MQTT-over-TLS simulator with SHA-256 cert pinning
│ └── report/report.go # ANSI terminal renderer + JSON report exporter
├── scripts/
│ ├── firmware_audit.sh # Bash device filesystem scanner (8 vuln categories)
│ └── gen_certs.sh # Self-signed CA + server cert generator
├── screenshots/ # Evidence from live runs
├── go.mod
└── README.md
```
## 构建与运行 (Windows 11 / WSL2)
### 前置条件
```
sudo apt update && sudo apt install -y golang-go openssl
```
### 构建
```
git clone https://github.com/Amit-netizen/cryptocomm-auditor
cd cryptocomm-auditor
go build -o auditor ./cmd/auditor/
```
### 命令
```
# 对任意 endpoint 执行 TLS 审计
./auditor tls-audit -host google.com
./auditor tls-audit -host expired.badssl.com -insecure
./auditor tls-audit -host tls-v1-0.badssl.com -port 1010 -insecure
# Firmware/config filesystem 扫描
./auditor firmware-scan -path ./testdata/device-fs
# MQTT TLS cert-pinning 模拟
./auditor mqtt-sim -broker test.mosquitto.org -port 8883
# Local mock server(离线测试)
bash scripts/gen_certs.sh
./auditor mock-server &
./auditor tls-audit -host localhost -port 8443 -insecure
# 包含 JSON 导出的完整审计
./auditor full -host google.com -fsroot ./testdata/device-fs -json audit-report.json
```
## 技术设计
### TLS 审计引擎
直接使用 Go 的 `crypto/tls`——无第三方库。两阶段扫描:协议探测(通过 `MinVersion`/`MaxVersion` 测试是否接受 TLS 1.0/1.1),然后通过 `ConnectionState` 进行完整的握手检查(协商的密码套件、`PeerCertificates` 链、OCSP 装订)。
### 固件扫描器
纯 Bash——仅使用 `grep`、`find`、`stat`、`openssl`。使用以 Null 分隔的 `find -print0` 遍历,实现二进制安全的操作。输出的 JSON 供 Go 报告引擎使用。
### MQTT 模拟器
带有可配置 CA 池的真实 TLS 连接(支持 mTLS)。通过 `tls.Config.VerifyConnection` 钩子实现证书固定——SHA-256 公钥指纹比较甚至能在 CA 链有效的情况下阻止流氓证书。
### JSON 报告
聚合 TLS、固件和 MQTT 发现,并给出整体的 PASS/FAIL 结果——支持为嵌入式设备安全网关集成 CI/CD 流水线。
## CI 集成
```
# 发现 CRITICAL 结果时以非零状态退出
./auditor firmware-scan -path ./device-fs -json report.json
CRITICALS=$(jq '.firmware_audit.findings | map(select(.severity=="CRITICAL")) | length' report.json)
[ "$CRITICALS" -eq 0 ] || exit 1
```
标签:Bash, EVTX分析, Go语言, HTTPS扫描, IoT, MitM, TLS安全, 中间人攻击, 加密流量分析, 固件安全, 安全助手, 安全测试工具, 密码学, 嵌入式设备, 应用安全, 开源安全工具, 手动系统调用, 插件系统, 日志审计, 物联网安全, 程序破解, 网络安全, 证书固定, 逆向工程平台, 隐私保护