该工具会创建到服务器的 SSH 连接,并遍历不同的客户端配置,以检查服务器是否允许使用弱群组进行 Diffie-Hellman (DH) 密钥交换。我们的目标是让该工具有助于评估 SSH 服务器的弱 DH 密钥交换设置。
请注意,该工具仅测试有限的一组配置,这可能导致某些弱配置未被检测到。此外,服务器可能会在扫描完成前阻止连接。
请查阅 Logjam 信息页面,了解如何配置 SSH 服务器以保护它们及其客户端免受利用弱群组进行 DH 密钥交换的攻击的建议。
原始博客文章请访问 https://www.levelblue.com/blogs/spiderlabs-blog/ssh-weak-diffie-hellman-group-identification-tool/。
podman build -t ssh-weak-dh .
docker build --build-arg UID=$(id -u) --build-arg GID=$(id -g) -t ssh-weak-dh .
运行以下命令之一:
podman run --userns=keep-id:uid=65532,gid=65532 --name ssh-weak-dh --rm -v "$(pwd)/logs/":/logs/ ssh-weak-dh host [port]
docker run --name ssh-weak-dh --rm -v "$(pwd)/logs/":/logs/ ssh-weak-dh host [port]
host:SSH 服务器的主机名或 IP 地址。port:可选的 SSH 服务器端口(默认为 22)。扫描结果将打印到 stdout。详细结果保存在 ./logs/ 目录下名为 host-port 的子文件夹中。
扫描工具会调用脚本 ssh-weak-dh-analyze.py 来分析存储在上述子文件夹中的扫描结果。
分析脚本是一个独立工具,可按如下方式运行:
# Get a container shell:
podman run --userns=keep-id:uid=65532,gid=65532 --name ssh-weak-dh --rm -v "$(pwd)/logs/":/logs/ -it --entrypoint bash ssh-weak-dh
docker run --name ssh-weak-dh --rm -v "$(pwd)/logs/":/logs/ -it --entrypoint bash ssh-weak-dh
# Run the analysis script on logged scan results:
./ssh-weak-dh-analyze.py /logs/scanme.example.com-22/
停止正在运行的容器:
podman stop ssh-weak-dh
docker stop ssh-weak-dh
本项目根据 GNU General Public License v2.0 许可。 详情请参见 LICENSE。
Copyright (C) 2015-2026 Fabian Foerg / Gotham Digital Science