WMImplant:使用 PowerShell 编写的一款基于 WMI 的后渗透测试工具

0x01 概述

WMImplant是基于PowerShell的工具,利用WMI来对目标机器执行操作,也可以作为发出命令和接收结果的C2通道。WMImplant利用WMI命令和控制通道,在目标系统上执行动作(采集数据,发出命令等)和数据存储的手段。它被设计为交互式和非交互式运行。当交互使用WMImplant时,它的设计有点像Meterpreter的命令菜单,如下图所示。Fig1

WMImplant主菜单

WMImplant命令

基础功能

change_user                - 更改要执行WMI命令的用户环境
exit                       - 退出WMImplant
gen_cli                    - 生成命令行命令,以非交互方式使用
set_default                - 将目标系统的WMI属性设置为其默认值
help                       - 查看命令和说明列表

文件操作

cat                        - 读取文件的内容
download                   - 从目标机器下载文件
ls                         - 特定目录的文件/目录列表
search                     - 在用户指定的驱动器上搜索文件
upload                     - 将文件上传到目标机器

过程功能

command_exec               - 运行命令行命令并接收输出
disable_wdigest            - 删除注册表值UseLogonCredential
disable_winrm              - 禁用目标系统上的WinRM
enable_wdigest             - 增加注册表值UseLogonCredential
enable_winrm               - 在目标系统上启用WinRM
registry_mod               - 改目标机器上的注册表
remote_posh                - 在远程计算机上运行PowerShell脚本并接收输出
sched_job                  - 操纵计划的工作 
service_mod                - 创建,删除或修改系统服务

流程操作

process_kill               - 通过目标机器上的名称或进程ID来终止进程
process_start              - 在目标机器上启动进程
ps                         - 流程列表

系统操作

active_users               - 在目标系统上列出具有活动进程的域用户
basic_info                 - 用于枚举有关目标系统的基本元数据
drive_list                 - 列出本地和网络驱动器
ifconfig                   - 从具有活动网络连接的NIC接收IP信息
installed_programs         - 在目标机器上接收已安装程序的列表
logoff                     - 将用户关闭目标机器
reboot                     - 重新启动目标机器
power_off                  - 关闭目标机器的电源
vacant_system              - 确定用户是否离开系统

日志操作

logon_event                -识别已登录系统的用户

用法

使用WMImplant启动和运行最简单的方法是导入脚本并运行Invoke-WMImplant。这提供主菜单了,你可以选择一个命令运行。在主菜单中,可以选择让WMImplant输出需要使用的命令行命令,以便以非交互方式运行WMImplant。

WMImplant使用

WMImplant可用于交互式和非交互式使用。用户可以更改正在对目标机器进行身份验证的用户帐户。如下图所示,用户可以发出“change_user”命令,提供使用的用户名和密码,然后通过WMImplant将来的所有命令都将使用提供的凭证进行身份验证。Fig7

更改当前用户在WMImplant内的环境

使用WMImplant的最简单的方法是交互式的; 然而,有时需要用到非交互式。诸如MeterpreterCobalt Strike's Beacon之类的RAT它只允许用户加载和执行PowerShell脚本,但是这两个工具都需要非交互式使用。也就是说,这些工具接受运行,执行和返回结果的命令。但是,它们不允许用户在运行时与命令交互。WMImplant包括专门针对这种用例的内置命令行生成功能。要生成命令行,可以启动WMImplant并指定“gen_cli”命令。

发出“gen_cli”命令后,用户将会看到正常的WMImplant菜单,并要求运行该命令。然后,WMImplant会请求指定的命令的任何必需信息。一旦用户提供了所需的一切,WMImplant将显示命令行命令以非交互方式运行,如下图所示。Fig8

gen_cli输出

此时,用户可以将WMImplant加载到所选的RAT内,并复制粘贴命令以非交互方式运行WMImplant。

WMImplant的另一个功能是能够在远程机器上运行PowerShell脚本并接收脚本输出。这是通过多步骤过程执行的:

  1. 攻击系统查询目标系统的DebugFilePath属性以获取其原始值。
  2. 攻击系统读入指定的PowerShell脚本,进行编码,并将其存储在目标系统的DebugFilePath属性中。
  3. WMI在目标系统上产生一个PowerShell进程,该进程读取DebugFilePath属性,并解码PowerShell脚本。
  4. PowerShell进程运行用户指定的函数并将函数输出存储在变量中。
  5. 变量中的数据被编码并存储在DebugFilePath属性中,并且PowerShell进程退出。
  6. 攻击系统对DebugFilePath值进行额外的WMI查询(当前存储编码数据),解码数据,并将其内容显示到控制台。
  7. 攻击系统通过WMI将目标系统上的原始DebugFilePath属性内容替换为编码数据。

这个多步骤过程如下图所示。

WMImplant:使用 PowerShell 编写的一款基于 WMI 的后渗透测试工具

远程PowerShell执行

博主希望WMImplant可以帮助别人,因为它帮助我们进行多重评估。如果您发现任何错误,请通知我,我将很乐意更新修复!

参考

下载:https://github.com/ChrisTruncer/WMImplant

使用例子:https://www.fireeye.com/

作者博客:https://www.christophertruncer.com

 

*转载请注明来自MottoIN

原创文章,作者:SecToolkit,如若转载,请注明出处:http://www.mottoin.com/tools/99122.html

发表评论

登录后才能评论

联系我们

021-62666911

在线咨询:点击这里给我发消息

邮件:root@mottoin.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code