badkeys/badkeys
GitHub: badkeys/badkeys
一款用于检测加密公钥已知漏洞的Python工具,支持多种密钥格式解析和在线主机扫描。
Stars: 319 | Forks: 25
# badkeys
用于检查加密公钥已知漏洞的工具和库
# 是什么?
badkeys 可以检查各种格式的公钥是否存在已知漏洞。其网页版本
可以在 [badkeys.info](https://badkeys.info/) 找到。
# 安装
badkeys 可以[通过 pip](https://pypi.org/project/badkeys/) 安装:
```
pip3 install badkeys
```
您可能需要使用虚拟环境。有关不同安装
选项的详细信息,请[查阅 Python 官方文档](
https://packaging.python.org/en/latest/tutorials/installing-packages/)。或者,
您可以直接从 git 仓库中直接调用 _./badkeys-cli_。
# 用法
在使用 badkeys 之前,您需要下载阻止列表数据:
```
badkeys --update-bl
```
之后,您可以调用 _badkeys_ 并将包含加密公钥的文件作为
参数传入:
```
badkeys test.crt my.key
```
它将自动尝试检测文件格式。支持的格式包括 PEM 格式(PKCS #1 和 PKCS #8)的公钥和私钥、X.509 证书、证书签名请求 (CSR) 以及 SSH 公钥。您可以在 _tests/data_ 目录中找到一些测试密钥。
默认情况下,badkeys 只会输出有关易受攻击密钥的信息,这意味着
如果未发现漏洞,将不会生成任何输出。_-a_ 参数会为所有
密钥生成输出。
如果扫描了密钥,未发生错误且未检测到漏洞,命令行工具将返回 0。遇到应用程序错误时返回 1;如果任何输入无法扫描(解析器错误、不支持的密钥类型、文件中没有密钥)则返回 2;如果发现易受攻击的密钥则返回 4。返回码可以作为位掩码组合。(例如,2|4=6 表示某些密钥易受攻击,而某些无法扫描。)
# 扫描
badkeys 可以扫描 SSH 和 TLS 主机并自动检查其公钥。这可以通过
参数 _-s_ (SSH) 和 _-t_ (TLS) 来启用。默认情况下,SSH 将在端口 22 上扫描,而 TLS 将在多个常见协议端口上进行扫描
(https/443、smtps/465、ldaps/636、ftps/990、imaps/993、pop3s/995 以及 8443,后者常被用作非标准 https 端口)。
可以通过 _--tls-ports_ 和 _--ssh-ports_ 配置备用端口。
TLS 和 SSH 扫描可以结合使用:
```
badkeys -ts example.org
```
请注意,扫描模式具有一定的局限性。通常更建议使用其他工具
收集 TLS/SSH 密钥,并使用 badkeys 在本地进行扫描。
SSH 扫描需要 [paramiko](https://www.paramiko.org/) 作为额外的依赖项。
TLS 扫描无法检测一台主机上的多个证书(例如 ECDSA 和 RSA)。这
是 [Python ssl.get_server_certificate() 函数的限制](
https://bugs.python.org/issue31892)。
# Python 模块与 API
badkeys 也可以作为 Python 模块使用。但是,该软件目前处于测试阶段,
API 可能会经常变动。
# 关于
badkeys 由 [Hanno Böck](https://hboeck.de) 编写。
[badkeys 目前由]( )[NGI0 Core
Fund](https://nlnet.nl/core) 资助,该基金由 [NLnet](https://nlnet.nl/) 设立,并获得了
欧盟委员会 [Next Generation Internet](
https://ngi.eu/) 计划的财务支持,在 [DG Communications Networks, Content and
Technology](
https://commission.europa.eu/about-european-commission/departments-and-executive-agencies/communications-networks-content-and-technology_en) 的主持下
进行,资助协议号为 [101092990](https://cordis.europa.eu/project/id/101092990)。
这项工作最初于 2022 年由 Industriens Fond 通过 CIDI 项目(丹麦工业中的安全物联网)以及丹麦哥本哈根 IT 大学的 [信息
安全与信任中心 (CISAT)](https://cisat.dk/) 提供资助。
标签:CSR, meg, pip, PKCS#1, PKCS#8, Python, SSH密钥检测, TLS扫描, X.509证书, 信息安全, 公钥基础设施, 公钥安全, 加密漏洞, 坏密钥, 安全测试工具, 密码学, 密钥审计, 手动系统调用, 插件系统, 无后门, 网络安全, 证书签名请求, 逆向工具, 隐私保护, 黑名单