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证书, 信息安全, 公钥基础设施, 公钥安全, 加密漏洞, 坏密钥, 安全测试工具, 密码学, 密钥审计, 手动系统调用, 插件系统, 无后门, 网络安全, 证书签名请求, 逆向工具, 隐私保护, 黑名单