S8C88/CertGrab

GitHub: S8C88/CertGrab

TLS/SSL 证书链抓取与解析工具,同时支持 Heartbleed、POODLE 等已知漏洞及弱加密套件检测。

Stars: 0 | Forks: 0

# CertGrab ![许可证](https://img.shields.io/badge/license-MIT-blue.svg) **TLS/SSL 证书抓取与漏洞检测工具** — 网络工程师 风格。连接任何支持 TLS 的服务,获取完整的证书 链,解析 X.509 字段,并可选地检测 Heartbleed、POODLE 以及不安全的 cipher suite。 ## 功能 - 🔍 **完整证书链获取** — 获取并解析链中的每一个证书 - 📋 **详尽输出** — subject、issuer、SANs、有效期、fingerprint、key 类型 - 🛡️ **漏洞扫描** — Heartbleed (CVE-2014-0160)、POODLE (CVE-2014-3566)、弱 cipher - ⚡ **零外部依赖** — 使用 Python 3.14+ `ssl.Certificate` API - 🧪 **全面 mock 测试** — 可随处安全运行,不联系任何真实 host ## 快速开始 ``` # 从 host 获取 certificate python3 certgrab.py -t example.com # 自定义 port python3 certgrab.py -t example.com -p 8443 # 运行 vulnerability 检查 python3 certgrab.py -t example.com --check-vulns # 增加慢速连接的 timeout python3 certgrab.py -t 10.0.0.1 -p 443 --check-vulns --timeout 15 ``` ## 用法 ``` usage: certgrab.py [-h] -t TARGET [-p PORT] [--check-vulns] [--timeout TIMEOUT] [--version] CertGrab v1.0 — TLS/SSL certificate grabber and vulnerability checker options: -h, --help show this help message and exit -t, --target Target hostname or IP address -p, --port Target port (default: 443) --check-vulns Check Heartbleed, POODLE, weak ciphers --timeout Connection timeout in seconds (default: 10) --version show program's version and exit ``` ## 架构 ``` graph TD A[CLI: -t target -p port] --> B{grab_certificate_chain} B --> C[Socket connect] C --> D[TLS handshake] D --> E[get_peer_cert_chain] E --> F[parse_ssl_cert x N] F --> G[Formatted output] A -->|--check-vulns| H[check_heartbleed] A -->|--check-vulns| I[check_poodle] A -->|--check-vulns| J[check_insecure_ciphers] H --> G I --> G J --> G ``` ### 证书解析流程 ``` sequenceDiagram participant CLI participant Grabber participant Socket participant TLS participant Parser CLI->>Grabber: target, port, timeout Grabber->>Socket: create_connection Socket-->>Grabber: raw socket Grabber->>TLS: context.wrap_socket TLS-->>Grabber: tls_sock Grabber->>TLS: get_peer_cert_chain TLS-->>Grabber: [Cert, Cert, ...] loop for each cert Grabber->>Parser: parse_ssl_cert(cert) Parser-->>Grabber: {subject, issuer, sans, ...} end Grabber-->>CLI: [dict, dict, ...] ``` ## 漏洞检测 | 检测项 | CVE | 方法 | |-------|-----|--------| | Heartbleed | 2014-0160 | 发送超大的 TLS heartbeat;检测响应大小 | | POODLE | 2014-3566 | 尝试 SSLv3 连接;成功即代表存在漏洞 | | 弱 cipher | 多种 | 使用弱 cipher 列表进行协商;检测协商出的 cipher | ## 测试 ``` python3 -m pytest tests/ -v ``` 所有测试均使用 mock 的网络调用 — 不联系任何真实 host。 ## 许可证 MIT © 2026 S8C88
标签:Python, TLS/SSL, 安全规则引擎, 密码学证书, 底层编程, 插件系统, 无后门, 网络工具, 逆向工具