Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
SSH-Snake — 无文件、自我传播的 Bash 脚本,递归发现 SSH 私钥和可达主机,然后通过 SSH 遍历网络以绘制入侵路径。 | Kitploit
工具/GitHubGitHub/megamansec/ssh-snake
权限提升侦察网络映射横向移动脚本与自动化数据泄露信息收集后渗透利用渗透测试红队
GitHubmegamansec/ssh-snake

SSH-Snake

2.3k221481天前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

无文件、自我传播的 Bash 脚本,递归发现 SSH 私钥和可达主机,然后通过 SSH 遍历网络以绘制入侵路径。

查看仓库网站

SSH-Snake:基于 SSH 的自动化网络遍历

🐍 SSH-Snake 是一款功能强大的工具,旨在利用在系统上发现的 SSH 私钥执行自动网络遍历,其目标是创建网络及其依赖关系的全面映射,确定从特定系统出发,使用 SSH 和 SSH 私钥可以在多大程度上攻陷网络。

SSH-Snake 可以自动揭示通过 SSH 连接的系统之间的关系,而手动完成这项工作通常需要耗费大量的时间和精力。

换句话说,SSH-Snake 会自动且递归地执行以下任务:

  1. 在当前系统上,查找任何 SSH 私钥,
  2. 在当前系统上,查找私钥可能被接受的任何主机或目标(user@host),
  3. 尝试使用所有发现的私钥 SSH 登录所有目标,
  4. 如果成功连接到某个目标,则在已连接的系统上重复步骤 #1 - #4。

它完全自我复制和自我传播——并且完全无文件。在许多方面,SSH-Snake 实际上是一个蠕虫:它复制自身并从一个系统传播到另一个系统,尽可能远地扩散。

与其像玩超级马里奥游戏一样手动使用 SSH 密钥在系统之间跳转,不如让 SSH-Snake 为你完成这项工作。

尽管此工具旨在用于黑客目的,但系统管理员也可以使用它来更好地了解其基础设施和网络。如果你想禁用打印发现的私钥,请注释掉这行代码。

如需深入了解此脚本的实际工作原理、技术细节、有趣的发现、设计决策、基准测试以及经验教训,请查看这篇博客文章。本软件由 Joshua Rogers 编写。

截图

SSH-Snake 在一个非常小的网络中输出的缩减截图。

使用 SSH 可视化系统之间关系的图蓝色节点表示_目标_可以连接到自身(user@host<-->user@host)。红色边表示连接是双向的(user1@host1<-->user2@host2)。

使用 SSH 可视化系统之间关系的图绿色节点表示一个_主机_(不含用户名)可以连接到自身(host1<-->host1)。绿色边表示连接是双向的(host1<-->host2)。右上角的灰色主机是脚本最初执行所在的主机。

使用 SSH 可视化系统之间关系的图蓝色节点表示_目标_可以连接到自身(user@host<-->user@host)。红色边表示连接是双向的(user1@host1<-->user2@host2)。

使用和运行 SSH-Snake

SSH-Snake 可以下载后使用,也可以通过管道传入 bash:

wget https://raw.githubusercontent.com/MegaManSec/SSH-Snake/main/Snake.nocomments.sh
bash ./Snake.nocomments.sh

或

curl https://raw.githubusercontent.com/MegaManSec/SSH-Snake/main/Snake.nocomments.sh | bash

关于 SSH-Snake

SSH-Snake 无缝模拟人类攻击者的行为,以发现 SSH 私钥以及可用于连接的目标主机。它完全用 Bash 编写,仅依赖主流 Linux(及 MacOS)系统上常见的少量依赖项:bash、ssh、coreutils、awk、uniq、sort、grep、tr、find 和 cat。需要 getent 或 dscacheutil。仅第一个系统需要 sed。同样,sudo、hostname、ip、timeout、arp、ifconfig、ipconfig 和 xargs 也可能被使用,但它们并非必需(脚本会妥善处理这些工具不存在的情况)。如果发现某个系统缺少任何必需的软件包,脚本会妥善失败,提醒用户无法在该特定系统上继续扫描(并回溯,从上一个系统继续)。

SSH-Snake 完全无文件:用户运行脚本后,脚本通过 stdin 和 bash 参数(经由 SSH)传递给目标系统的 bash。任何被扫描的系统上都不存在脚本的实体痕迹:脚本运行的唯一证据是进程树,以及不可避免会出现的大量无效 SSH 尝试。

SSH-Snake 采用深度优先方法进行发现:一旦连接到某个系统,它会尝试从该系统继续连接,然后再回溯。

SSH-Snake 这个名字来源于脚本的输出看起来像一条蛇在网络中上下蜿蜒。然而,与贪吃蛇游戏不同,SSH-Snake 在咬到自己尾巴时不会死亡(连接到已扫描或正在扫描的系统):它只会像平常一样打印它是如何连接到那里的,然后返回而不重新扫描该目标(以避免无限递归)。

SSH-Snake 已在多种 Linux 发行版和 MacOS(安装了 Homebrew Bash)上测试过。如果你遇到不兼容的基于 Linux 的操作系统,请提交报告。

功能特性

  • 使用本地 SSH 私钥从一个系统递归 SSH 到另一个系统,
  • 仅使用 stdin 和 bash 参数对远程系统进行无文件遍历和 SSH-Snake 脚本的传播/复制,
  • 如果可能,使用 sudo 自动将权限提升至 root,
  • 从 .bash_history 条目中发现 SSH 私钥文件,
  • 从常用文件和文件夹中发现 SSH 私钥,
  • 将 SSH 私钥作为脚本输出进行窃取,
  • 可在每个系统上配置自定义命令执行,
  • 即插即用的模块化系统,用于发现私钥和系统,
  • 从 IP 范围、最近登录、已知主机、SSH 配置文件等检测主机,
  • 能够检测系统是否已被扫描或正在被扫描,使得像 A->B->C 这样的网络也能发现 C->A,但不会退化为 A->B->C-A->B->C->A->B->....,
  • 能够根据脚本输出生成网络的图形化可视化,
  • ……以及更多。

设置

SSH-Snake 附带一些可配置的通用设置。这些设置在 SETTINGS.md#general-settings 中有文档说明。

SSH-Snake 还附带各种可配置/即插即用的策略(函数),可用于发现系统上的 SSH 私钥以及发现要尝试连接的主机和目标。已提供合理的默认值,但如果你希望尽可能彻底地执行扫描,启用更多的发现技术会有所帮助。如果扫描耗时过长,禁用一些发现技术会有所帮助。除一个策略(find_ssh_keys)外,每个策略都可以关闭/开启。这些在 SETTINGS.md#configurable-discovery-strategies 中有文档说明。

理解输出

SSH-Snake 的原始输出包含有关发现的私钥、目标主机和错误消息的混合信息。

关于 SSH-Snake 完整输出的详细说明可在 OUTPUT.md 中找到。

输出示例可在 example-output.log 中找到。

可视化系统关系

SSH-Snake 的输出可用于创建脚本所遍历网络的图表/可视化。

关于如何根据 SSH-Snake 的输出创建和解读图像/可视化的详细说明可在 GRAPHICS.md 中找到。

其他工具

除了能够创建 SSH-Snake 所遍历网络的可视化之外,还提供了另外三个工具。即:

  1. forward-lookup-host.py:给定源主机或目标,确定所有可直接或间接(即通过第三级系统)访问的系统。
  2. reverse-lookup-host.py:给定目标主机或目标,确定所有可直接或间接访问它的系统。
  3. shortest-path-create-chain.py:给定主机或目标 A 和 B,确定连接两者的最短路径。

第三个工具还会生成一条可用于从目标 A 连接到目标 B 的命令。例如:

$ python3 tools/shortest-path-create-chain.py --file output.log --src '[email protected]' --dest '[email protected]'

Shortest path from [email protected] to [email protected]: [email protected]>[email protected]>[email protected]>[email protected]

[..]

ssh -i "/home/jrogers/.ssh/key" [email protected] 'sudo ssh -i "/root/.ssh/id_rsa" [email protected] 'ssh -i "/tmp/key" [email protected]''

Snake.sh 与 Snake.nocomments.sh 对比

由于脚本体积相当大,将其加载到 here-document 中(脚本会自动这样做,因为它实际上是一个 Quine)会导致 bash 写入临时文件(因为其大小超过 65535 字节)。

为了缩减体积以保持 100% 无文件化,Snake.nocomments.sh 提供了一个移除了所有注释、多余空白和空行的版本。这会将文件大小缩减到 bash 不再创建临时文件的程度。

缺陷 / 问题

如果你遇到任何与脚本相关的缺陷或问题,请将其作为 GitHub issue 报告。请附上你的配置设置。

我特别关注任何与未被脚本捕获的错误相关的有趣 [line] 输出。

限制

  • 仅支持 IPv4:与所有最优秀的程序一样,该脚本不支持 IPv6。我无法想象近期会有对此的支持。

  • 仅支持端口 22:普遍假设 SSH 运行在端口 22 上。

  • GNU coreutils:该脚本严重依赖 GNU coreutils。我尚未确定脚本中使用了多少(如果有的话)GNU 特有功能。

  • 该脚本目前不会查找 SSH agent 套接字。

下载工具