Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

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

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

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
SSH-Snake — SSH-Snake 是一个自我传播、自我复制、无文件的脚本,可自动执行 SSH 私钥和主机发现的后渗透任务。 | Kitploit
工具/GitHubGitHub/megamansec/ssh-snake
权限提升侦察网络映射横向移动信息收集后渗透利用渗透测试红队Archived
GitHubmegamansec/ssh-snake

SSH-Snake

SSH-Snake 是一个自我传播、自我复制、无文件的脚本,可自动执行 SSH 私钥和主机发现的后渗透任务。

查看仓库
2.3k22145个月前Kitploit 审核通过

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
网站

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中:

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

或

root@kitploit:~
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、、、、 和 也可能被使用,但它们不是必需的(脚本会优雅地处理它们缺失的情况)。如果发现某个系统缺少任何必需包,它会优雅地失败,提示用户扫描无法在该系统上继续(并回溯,从之前的系统继续执行)。

SSH-Snake 完全无文件化:用户运行脚本后,它通过标准输入和bash参数(通过SSH)传递给目标系统的bash。被扫描的系统上不存在任何脚本的物证:脚本运行的唯一证据在进程树中,以及随之不可避免的大量无效SSH尝试。

SSH-Snake 采用深度优先搜索方法进行发现:一旦连接到一个系统,它会在回溯前尝试从该系统进一步连接。

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

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

功能

  • 使用本地SSH私钥递归地从一台系统SSH到另一台系统,
  • 仅使用标准输入和bash参数(通过SSH)实现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。例如:

root@kitploit:~
$ 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文档中(脚本自动这样做,因为它实际上是一个Quine) 会导致bash写入临时文件(因为它超过65535字节)。

为了减小尺寸以保持100%无文件化,Snake.nocomments.sh 提供了一个移除了所有注释、不必要的空白和空行的版本。这减小了文件大小,从而bash不会创建临时文件。

错误 / 问题

如果您遇到与脚本相关的任何错误或问题,请作为GitHub问题报告。请包括您的配置设置。

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

限制

  • 仅IPv4:与所有最好的程序一样,脚本不支持IPv6。我无法想象短期内会支持这一点。
  • 仅端口22:通常假设SSH运行在端口22上。
  • GNU coreutils:脚本严重依赖GNU coreutils。我尚未确定脚本中使用了多少(如果有)GNU特性。
  • 脚本目前不查找SSH agent套接字。
下载工具
timeout
arp
ifconfig
ipconfig
xargs