用于识别可能受 CVE-2024-6387(regreSSHion)影响的 OpenSSH 服务器的 HASSH 指纹。
本仓库的主要目的是共享生成的 HASSH 指纹数据库。脚本使用 Shodan API 来编译易受攻击的 OpenSSH 版本的 HASSH 指纹列表。生成的数据库可用于查询 Shodan 或 Censys,以识别可能易受攻击的 OpenSSH 服务器。hasshdb.txt 数据库还可与我开发的 Nmap NSE 脚本(位于 hassh-utils)配合使用。
SSH 服务器标识字符串(又称版本字符串)并不是识别 SSH 服务器实现和版本的可靠方式,因为它很容易被伪造,正如 Cowrie 等蜜罐中所见。HASSH 由 Ben Reardon 开发(我与 John Althouse 也有贡献),是一种指纹识别技术,它结合来自 SSH_MSG_KEXINIT 消息的 KEX、加密、MAC 和压缩算法,为特定 SSH 实现创建指纹。有关 HASSH 的更多信息,请参考 Salesforce 工程博客文章 和 HASSH 仓库。
考虑到近期 OpenSSH 中的 RCE 漏洞 (Qualys 博客文章),我认为生成一个指纹数据库是值得的,因为 HASSH 在 Shodan 和 Censys 中都得到支持,并且提供了一种更可靠的方法来识别特定 SSH 服务器实现和版本。
HASSH 指纹可通过以下查询进行搜索:在 Shodan 中使用 ssh.hassh,在 Censys 中使用 services.ssh.hassh_fingerprint。
Shodan 脚本生成以下数据文件:
hasshdb.txt:包含格式化 HASSH 指纹及其关联 OpenSSH 版本(含置信度百分比)的文本文件。hasshdb.json:包含 HASSH 数据库的 JSON 文件,将每个 HASSH 指纹映射到其 OpenSSH 版本和计数。potentially-vulnerable.json:包含潜在易受攻击服务器的 HASSH 指纹、总计数以及前 100 个版本/标识字符串的 JSON 文件。注意:脚本使用 Shodan 的 facets 和 count() 方法,该方法不返回详细结果,也不需要付费 API 计划。此方法也比 search() 方法快得多。