从入门到精通:MoveKit横向移动完整操作指南(含实战案例)
【免费下载链接】MoveKitCobalt Strike kit for Lateral Movement项目地址: https://gitcode.com/gh_mirrors/mo/MoveKit
MoveKit是一款强大的Cobalt Strike横向移动工具包,它通过利用execute_assembly函数与SharpMove和SharpRDP .NET程序集,扩展了Cobalt Strike内置的横向移动功能。本文将为你提供一份全面的MoveKit操作指南,帮助你从入门到精通横向移动技术。
🚀 快速上手:MoveKit安装与配置
一键安装步骤
要开始使用MoveKit,你只需执行以下简单步骤:
- 克隆仓库:
git clone https://gitcode.com/gh_mirrors/mo/MoveKit加载主脚本:在Cobalt Strike中加载
MoveKit.cna,它会自动加载所有必要的脚本。准备依赖:根据需要编译SharpMove和SharpRDP程序集,并将它们放置在
Assemblies目录中。安装Mono:动态编译功能需要Mono环境支持。
最快配置方法
加载脚本后,你会在菜单栏看到一个名为Move的选择器。通过Default设置可以加快GUI操作速度,这些默认设置适用于任何可以接受默认值的操作。
📚 核心功能解析:MoveKit横向移动技术
MoveKit提供了多种横向移动技术,主要分为文件移动和命令触发两大类。
文件移动技术
文件移动是将文件传输到远程主机的方法,MoveKit支持以下几种:
- SMB到平面文件:通过SMB协议直接将文件传输到远程主机
- WMI到平面文件:使用WMI将文件写入远程主机
- WMI到注册表键值:将文件内容存储在远程主机的注册表中
- WMI到自定义WMI类属性:利用自定义WMI类存储文件数据
这些技术在Assemblies/FileWrite.cs中有详细实现,特别是WriteToWMIClass和RemoveWMIClass方法。
命令触发技术
命令触发是在远程主机上执行特定命令的方法,包括:
- WMI:通过WMI在远程主机上执行命令
- SCM:利用服务控制管理器执行命令
- RDP:通过远程桌面协议执行操作
- DCOM:多种分布式组件对象模型技术
- 计划任务:创建和修改计划任务
- 修改现有计划任务:更新现有任务的操作,执行后重置
- 修改服务binpath:更新现有服务的binpath,启动后重置
💻 实战案例:常用横向移动技术详解
MSBuild横向移动
MSBuild是Windows系统自带的构建工具,可以被滥用来执行恶意代码。使用MoveKit的MSBuild横向移动功能:
- 在Move菜单中选择MSBuild选项
- 配置目标主机、监听器和文件路径
- 执行命令,MoveKit会自动生成并传输Templates/msbuild.csproj模板文件
命令示例:move-msbuild 192.168.1.1 http move.csproj
InstallUtil横向移动
InstallUtil是.NET框架提供的安装工具,同样可以被用于横向移动:
- 选择InstallUtil选项
- 配置相关参数
- MoveKit会使用Templates/installutil.cs模板生成 payload
MoveKit会根据目标系统架构自动选择合适的InstallUtil路径:
- 64位:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe - 32位:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe
RegSvr32横向移动
RegSvr32用于注册COM组件,是一种常见的横向移动技术:
- 在Move菜单中选择RegSvr32选项
- 配置参数,包括目标主机和监听器
- MoveKit会生成基于Templates/regsvr32.sct的 payload
WMIC横向移动
WMIC(Windows Management Instrumentation Command-line)是另一种强大的横向移动工具:
- 选择WMIC选项
- 配置相关参数
- MoveKit将使用Templates/wmic.xsl模板
⚙️ 高级技巧:自定义与优化
自定义模板
MoveKit允许你使用自定义模板来避免检测。创建自定义模板需满足两个要求:
- 模板文件名必须与技术名称一致(例如
msbuild.csproj) - 源代码中必须包含
$$PAYLOAD$$字符串,用于替换为base64编码的shellcode
示例C#代码:
string strSC = "$$PAYLOAD$$"; byte[] sc = Convert.FromBase64String(strSC);位置字段配置
位置字段是MoveKit中最关键的部分之一,它有三种取值:
- URL:Cobalt Strike的Web服务器将托管payload,目标主机通过HTTP请求获取
- Windows目录:将创建的文件上传到beacon主机,然后通过文件系统读取
- Linux路径或"local":动态编译payload到正在执行的程序集中(文件大小限制1MB)
🚨 注意事项与最佳实践
- 清理文件:MoveKit不会自动清理文件,需要操作员手动处理
- 依赖要求:动态payload创建需要Mono环境
- 执行顺序:有时execute_assembly会在文件移动前被调用,此时可以取消勾选"Auto"复选框手动执行
- AMSI绕过:仅对WSH有效,对PowerShell无效,会修改注册表
- 模板安全:不建议使用默认模板,它们都是公开的,容易被检测
🙏 致谢
MoveKit的开发借鉴了许多优秀的项目和技术,包括:
- WMI技术:SharpWMI
- DCOM技术:SharpCOM和SharpSploit DCOM
- SCM技术:CSExec
- 服务DLL劫持:SharpSC
- 服务binpath修改:SCShell
- Shellcode运行器模板:Arno0x的C#脚本
- CACTUSTORCH payloads:vysecurity
通过本指南,你应该已经掌握了MoveKit的基本使用方法和高级技巧。横向移动是渗透测试中的关键环节,合理使用MoveKit可以大大提高你的工作效率。记住,技术本身没有好坏之分,关键在于使用者的意图。始终确保你的行为符合法律法规和道德准则。
【免费下载链接】MoveKitCobalt Strike kit for Lateral Movement项目地址: https://gitcode.com/gh_mirrors/mo/MoveKit
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考