CIMplant 是 WMImplant 的 C# 移植版本,使用 CIM 或 WMI 查询远程系统。它可以使用提供的凭据或当前用户的会话。
注意:某些命令会结合 PowerShell 使用 WMI,在 --show-commands 命令中以 ** 标记。
CIMplant 是对 @christruncer 的 WMImplant 的 C# 重写和扩展。它允许你收集远程系统的数据、执行命令、导出数据等。该工具支持使用 Windows Management Instrumentation(WMI)或 Common Interface Model(CIM)(更准确地说,是 Windows Management Infrastructure(MI))进行连接。CIMplant 需要在目标系统上拥有本地管理员权限。
使用 Releases 下已构建的版本可能最简单,请注意它是以 Debug 模式编译的。如果你想自己构建解决方案,请按以下步骤操作。
CIMplant.exe --help
CIMplant.exe --show-commands
CIMplant.exe --show-examples
CIMplant.exe -s [remote IP address] -c cat -f c:\users\user\desktop\file.txt
CIMplant.exe -s [remote IP address] -u [username] -d [domain] -p [password] -c cat -f c:\users\test\desktop\file.txt
CIMplant.exe -s [remote IP address] -u [username] -d [domain] -p [password] -c command_exec --execute "dir c:\\"
cat - 读取文件内容
copy - 将文件从一个位置复制到另一个位置
download** - 从目标机器下载文件
ls - 列出指定目录的文件/目录
search - 在用户目录中搜索文件
upload** - 将文件上传到目标机器
command_exec** - 运行命令行命令并接收输出。使用 nops 标志可禁用 PowerShell
disable_wdigest - 将 UseLogonCredential 的注册表值设置为零
enable_wdigest - 添加注册表值 UseLogonCredential
disable_winrm** - 在目标系统上禁用 WinRM
enable_winrm** - 在目标系统上启用 WinRM
reg_mod - 修改目标机器的注册表
reg_create - 在目标机器上创建注册表值
reg_delete - 删除目标机器的注册表
remote_posh** - 在远程机器上运行 PowerShell 脚本并接收输出
sched_job - 未实现,因为 Win32_ScheduledJobs 访问的是过时的 API
service_mod - 创建、删除或修改系统服务
process_kill - 通过名称或进程 ID 终止目标机器上的进程
process_start - 在目标机器上启动进程
ps - 列出进程
active_users - 列出在目标系统上有活动进程的域用户
basic_info - 用于枚举目标系统的基本元数据
drive_list - 列出本地和网络驱动器
ifconfig - 获取具有活动网络连接的网卡的 IP 信息
installed_programs - 获取目标机器上已安装的程序列表
logoff - 注销目标机器上的用户
reboot (或 restart) - 重启目标机器
power_off (或 shutdown) - 关闭目标机器
vacant_system - 判断用户是否离开系统
edr_query - 查询本地或远程系统的 EDR 厂商
logon_events - 识别已登录系统的用户
* 可以通过使用 --nops 标志禁用所有 PowerShell,尽管某些命令将无法执行(上传/下载、启用/禁用 WinRM)
** 表示使用 PowerShell(通过 PowerShell 运行空间或 Win32_Process::Create 方法)

我编写 CIMplant 时考虑了通过 execute-assembly 使用的方式,因此所有内容都打包到一个可执行文件中并反射加载。你应该能够无障碍地通过 Beacon 运行所有命令。尽情享用!

这是操作的核心,程序的驱动部分。
这里建立初始的 CIM/WMI 连接,并传递给应用程序的其他部分。
所有 WMI 命令的功能代码。
所有 CIM(MI)命令的功能代码。
当然,我们首先要关注的是初始的 WMI 或 CIM 连接。通常,WMI 使用 DCOM 作为通信协议,而 CIM 使用 WSMan(或 WinRM)。在 CIMplant 中可以对此进行修改,但我们现在只讨论默认值。对于 DCOM,首先要做的是查找通过 端口 135 的初始 TCP 连接。连接和接收系统将协商使用一个新的、非常高的端口,因此该端口会变化很大。对于 WSMan,初始 TCP 连接通过 端口 5985。
接下来,在事件查看器中查看 Microsoft-Windows-WMI-Activity/Trace 事件日志。搜索 Event ID 11,如果可能,过滤 IsLocal 属性。你也可以在 Microsoft-Windows-WinRM/Analytic 日志中查找 Event ID 1295。
最后,查找对 Win32_OSRecoveryConfiguration 类的 DebugFilePath 属性的任何修改。关于检测的更详细信息,请参阅我们博客系列的第 1 部分:CIMplant Part 1: Detection of a C# Implementation of WMImplant