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

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

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

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

工具目录

分类

查看所有分类
Loading categories
LiquidSnake — 一种无文件横向移动工具,利用WMI事件订阅在内存中执行.NET程序集,并通过命名管道注入shellcode以实现远程Windows系统入侵。 | Kitploit
工具/GitHubGitHub/riccardoancarani/liquidsnake
Payload生成横向移动Shellcode红队
GitHubriccardoancarani/liquidsnake

LiquidSnake

一种无文件横向移动工具,利用WMI事件订阅在内存中执行.NET程序集,并通过命名管道注入shellcode以实现远程Windows系统入侵。

查看仓库
34749155年前Kitploit 审核通过

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Liquid Snake

Liquid Snake 是一个旨在对 Windows 系统进行横向移动而不接触磁盘的程序。 该工具依赖 WMI 事件订阅来在内存中执行 .NET 程序集,该 .NET 程序集将在命名管道上监听 shellcode,然后使用线程劫持 shellcode 注入的一个变种来执行它。

下面的图表(希望如此)阐明了数据流程:

致谢

  • MDSec - WMI Event Subscription - 该工具只是该博客文章中描述的概念的一个实现,代码也依赖于 Dominic 的 WMI 持久化 C# PoC
  • pwndizzle - thread-hijack.cs - 为 C# 中的线程劫持实现提供灵感
  • med0x2e - GadgetToJscript - 为创造 GadgetToJScript 的艰巨工作

简介

该项目由两个独立的解决方案组成:

  • CSharpNamedPipeLoader - 将通过 GadgetToJScript 转换为 VBS 的组件
  • LiquidSnake - 负责在远程系统上创建 WMI 事件订阅的组件

构建

只需在 Visual Studio 中打开两个解决方案并编译它们。确保 CSharpNamedPipeLoader 的目标体系结构为 x64。如果一切顺利,您将得到两个独立的 EXE 文件:CSharpNamedPipeLoader.exe 和 LiquidSnake.exe

使用 GadgetToJscript,通过以下命令将 CSharpNamedPipeLoader.exe 转换为 VBS:

GadgetToJScript.exe -a CSharpNamedPipeLoader.exe -b -w vbs

使用 cscript.exe 测试 .NET 反序列化,确保一切按预期工作:

cscript.exe test.vbs

然后,将 vbs 文件进行 base64 编码,并将其放入 LiquidSnake 的 Program.cs 中第 29 行的 vbscript64 变量。

我已经为您做了这一步,因此您只需编译 LiquidSnake 解决方案并直接使用即可。

用法

该项目的用法很简单,使用 LiquidSnake.exe 针对您拥有管理员访问权限的主机,如下所示:

LiquidSnake.exe <host> [<username> <password> <domain>]
LiquidSnake.exe dc01.isengard.local
LiquidSnake.exe dc01.isengard.local saruman DeathToFrodo123 isengard.local

注意:目前当您明确设置用户凭据时存在一个错误,工具在这种情况下将无法工作。建议改用 make_token 或任何其他模拟机制。

如果一切顺利,您应该得到类似如下的输出:

[*] Event filter created.
[*] Event consumer created.
[*] Subscription created, now sleeping
[*] Sending some DCOM love..
[*] Sleeping again... long day

上面的示例使用 CobaltStrike 的 execute-assembly 来启动 LiquidSnake:

同时,在远程主机上会创建一个命名管道,其名称如下:

\\.\pipe\6e7645c4-32c5-4fe3-aabf-e94c2f4370e7

然后,使用我的 send_shellcode_via_pipe 来自我的 BOFs 的项目,您可以向远程管道发送任意 shellcode,该 shellcode 将被加载并执行:

send_shellcode_via_pipe \\dc01\pipe\6e7645c4-32c5-4fe3-aabf-e94c2f4370e7 beacon.bin 

如果一切如预期般工作,您应该得到一个 SYSTEM 信标:

注意:当前 LiquidSnake 版本包含由 GadgetToJScript 生成的产物,其目标 .NET 版本为 4.x。如果目标主机仅安装了 3.5,则会失败。只需重复相同的过程,但在构建 GadgetToJScript 时使用适当的 .NET 版本。

检测

存在许多检测机会来识别该工具的滥用以及一般技术使用:

  • 短时间内创建和删除 WMI 事件过滤器,请参阅 Sysmon 事件 ID 19、20、21、22
  • 与 scrcons.exe 进程相关的 clr.dll 模块加载事件
  • 与 scrcons.exe 进程相关的命名管道的创建

此外,该具体实现的最大缺点是 shellcode 以明文形式通过 SMB 发送。这意味着如果网络监控解决方案能够检查该流量,它很可能会被突出显示。我还没有对 zeek/bro 规则集进行太多测试,但我很确定它会立即被识别。

在 detection-artefacts 文件夹中,我留下了 Wireshark 捕获的 PCAP 文件和攻击期间生成的 Sysmon 事件(使用 Swift On Security 的默认配置)。

下载工具