MoveKit 是内置 Cobalt Strike 横向移动功能的扩展,它利用 execute_assembly 函数以及 SharpMove 和 SharpRDP .NET 程序集。攻击者脚本通过读取特定执行类型的模板文件来处理负载创建。
重要提示:要使用该脚本,用户只需加载 MoveKit.cna 攻击者脚本,该脚本将同时加载所有其他必要的脚本。此外,根据所执行的操作,需要编译 SharpMove 和 SharpRDP 程序集并将其放入 Assemblies 目录中。最后,某些文件移动需要动态编译,这需要 Mono。
加载攻击者脚本时,menubar 中会加载一个名为 Move 的选择器。用户可以选择多种选项。首先,用户可以选择通过 WMI、DCOM、任务计划程序、RDP 或 SCM 在远程系统上执行命令。其次,Command 执行机制使用下载方式获取并执行文件。第三,File 方法将文件放置在系统上并执行。还有 Write File Only 选项,不执行任何操作,仅移动数据。最后,有 Default 设置,用于加快 GUI 使用速度,并与 Beacon 命令一起使用。默认设置用于任何可以接受默认值的操作。
要使用 Beacon 命令,它将读取默认设置并使用几个命令行参数。Beacon 命令示例:
<exec-type> <target> <listener> <filename>
move-msbuild 192.168.1.1 http move.csproj
此外,自定义预构建 Beacon 命令略有不同。命令示例:
move-pre-custom-file <target> <local-file> <remote-filename>
move-pre-custom-file computer001.local /root/payload.exe legit.exe
位置字段是该项目中最棘手的部分。当选择 WMI 文件移动时,将使用 location;如果选择了 SMB,则不会使用它(因此可以留空)。Location 接受三种不同的值。首先,如果 location 是一个 URL,那么在创建负载时,它将被 Cobalt Strike 的 Web 服务器托管。执行程序集的 Beacon 主机将向该 URL 发出 Web 请求并获取文件,该文件将用于目标主机上的事件订阅中以写入文件。其次,如果 location 是 Windows 目录,则它会将创建的文件上传到 Beacon 主机,程序集将从文件系统读取并存储在事件订阅中,以写入远程主机。最后,如果 location 字段是 Linux 路径或单词 local,则它会将负载动态编译到正在执行的程序集中。但是,如果文件超过 1MB 大小限制,则会显示错误。
对于所有文件方法,负载将通过攻击者脚本创建。但是,如果负载已创建,用户可以选择使用 Custom (Prebuilt) 选项来移动和执行它。
该工具包包含不同的文件移动技术、执行触发器和负载类型。
文件移动被认为是用于将文件传输到远程主机的方法 文件移动类型:
命令触发器被认为是用于在远程主机上执行特定命令的方法。 命令触发器类型:
仅 shellcode 执行:
劫持:
要替换模板,您必须满足两个要求。首先,模板必须命名为技术名称(例如:msbuild.csproj)。其次,源代码必须包含字符串 $$PAYLOAD$$,其中将放置 base64 编码的 shellcode,并且能够将 base64 字符串转换为字节数组。C# 示例:
string strSC = "$$PAYLOAD$$";
byte[] sc = Convert.FromBase64String(strSC);
添加了一项更改,允许默认设置在“更新默认值对话框”中更新“查找和替换字符串”和 shellcode 格式。默认情况下,这些是 $$PAYLOAD$$ 和 base64。
execute-assembly 函数,因此它会像其他后渗透任务一样注入到牺牲进程中File 或 Command 方法,文件将放置在磁盘上部分代码、模板或灵感来自其他个人和项目
可能在某个地方存在 bug,它们往往会不时出现。只需提出来,我会修复它们