此工具创建与服务器的 SSH 连接,并遍历不同的客户端配置,以检查服务器是否允许使用弱组的 Diffie-Hellman (DH) 密钥交换。我们的目标是帮助评估 SSH 服务器是否存在弱 DH 密钥交换设置。
请注意,此工具测试一组有限的配置,可能导致某些弱配置未被检测到。此外,服务器可能在扫描完成前阻断连接。
请查阅 Logjam 信息页面 获取关于如何配置 SSH 服务器以保护自身及客户端免受利用弱组 DH 密钥交换攻击的建议。
原始博客文章请访问 https://blog.gdssecurity.com/labs/2015/8/3/ssh-weak-diffie-hellman-group-identification-tool.html。
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)。扫描结果将打印到标准输出。详细结果保存在 ./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 通用公共许可证 v2.0 进行许可。 详情请参见 LICENSE。
版权所有 (C) 2015-2026 Fabian Foerg / Gotham Digital Science