- 网络安全
- 应用安全
【免费下载链接】monkey
Infection Monkey - An open-source adversary emulation platform
WMI(Windows Management Instrumentation)是 Infection Monkey 用于横向移动(propagation)的关键攻击组件之一。本文围绕 WMI Exploiter 的官方参考文档,系统讲解其支持的操作系统范围、两个核心配置参数(agent_binary_upload_timeout与smb_connect_timeout)的约束、默认值及调优建议,并结合仓库中的 Exploiter 参考文档(SMB、RDP、PowerShell)与 Agent 源码,说明 WMI 在攻防模拟中的实际定位。
一、WMI Exploiter 概述
WMI 是 Windows 系统内置的管理与遥测基础设施,允许远程查询系统信息、执行进程、管理文件与配置。在攻击模拟场景中,WMI 常被攻击者滥用为远程命令执行(RCE)通道:只要目标主机开放了 WMI 服务(默认依赖 135/TCP 与动态分配的 DCOM 端口),且攻击者掌握了有效的 Windows 凭据,就可以通过 WMI 在目标机器上创建进程并执行任意命令。
Infection Monkey 的 WMI Exploiter 正是对这一攻击路径的自动化复现。它的工作方式与 SMB Exploiter 类似:先借助 SMB 连接建立与目标主机的交互,再利用 WMI 在远程主机上启动进程,从而将 Agent 二进制投递并运行在目标机器上,实现自我传播。
关于 Exploiter 的整体机制,可参考 Exploiters 特性文档:Agent 在完成侦察(reconnaissance)阶段后进入传播阶段,通过启用的 Exploiter 对存在漏洞或弱凭据的目标执行远程代码执行,随后将自身复制到被攻陷系统并启动新的 Agent 进程。
二、支持的操作系统
WMI Exploiter 的操作系统支持矩阵如下:
| 操作系统 | 攻击发起端(Attack from) | 目标端(Target) |
|---|---|---|
| Linux | 支持 | 不支持 |
| Windows | 支持 | 支持 |
从矩阵可以得出两个关键结论:
- 只有 Windows 机器能够作为 WMI 攻击的目标。WMI 是 Windows 专有技术,Linux 主机不提供 WMI 服务,因此无法成为该 Exploiter 的攻击对象。
- Linux 攻击机也可以发起 WMI 攻击。Infection Monkey Agent 支持跨平台运行,Linux 上的 Agent 同样可以调用 WMI 相关协议(通过远程过程调用访问 Windows 的 WMI 服务)来攻击 Windows 目标。
需要注意的是,当攻击发起端是 Linux 时,可用于远程认证的凭据集合会受到限制。这一限制与 PowerShell Exploiter 参考文档 中描述的约束一致:Linux 攻击机上能够用于爆破的凭据种类少于 Windows 攻击机(例如某些仅存在于 Windows 缓存中的凭据类型无法被 Linux 端使用)。
三、配置参数详解
WMI Exploiter 的配置文档由插件的config-schema.json自动生成后人工精简而来,共包含两个可选配置项:
| 属性 | 类型 | 必填 | 可否为空 |
|---|---|---|---|
| agent_binary_upload_timeout | number | 可选 | 不可为空 |
| smb_connect_timeout | number | 可选 | 不可为空 |
两个参数均为number类型、均为可选,且都不允许为null(即只要填写就必须是合法的数值)。下面逐一说明。
3.1 agent_binary_upload_timeout
含义:向目标机器上传 Agent 二进制的超时时间(单位:秒)。
该参数控制的是传播链中的"投递"环节:Exploiter 在成功建立远程控制通道后,需要把 Agent 二进制文件传输到目标主机。如果网络状况不佳或目标主机响应缓慢,上传可能长时间无结果,此超时用于避免 Agent 无限期阻塞等待。
约束:
- 最大值:必须小于或等于
100(秒) - 最小值(排他):必须大于
0(秒),即不允许配置为 0 或负数
默认值:
30调优建议:
- 在带宽充裕、目标主机性能良好的内网环境中,保持默认值 30 秒即可,多数情况下上传会在数秒内完成。
- 若目标网络存在明显的拥塞或目标主机负载很高(例如是生产服务器),可以适当调大该值,避免误判上传失败;但受 schema 约束,上限为 100 秒。
- 不建议将值调得过小(如 5 秒以下),否则在弱网环境下容易出现"上传超时"的假阴性,导致 Exploiter 误报失败。
3.2 smb_connect_timeout
含义:等待 SMB 连接响应的最大时间(单位:秒)。
WMI Exploiter 依赖 SMB 连接与目标主机建立交互基础。该参数控制的是建立 SMB 会话阶段的等待上限:如果目标主机未开放 SMB 端口(139/445)或网络不可达,Exploiter 不会无限期挂起,而是在该超时到达后放弃本次尝试。
约束:
- 最大值:必须小于或等于
100(秒) - 最小值(排他):必须大于
0(秒)
默认值:
15调优建议:
- 默认值 15 秒适用于大多数内网场景:对于未开放 SMB 的目标,15 秒足以判定"连接失败"。
- 若大规模扫描网段中普遍存在丢包或防火墙丢包静默(drop)的情况,可以适当调大该值,减少把"网络不可达"误判为"认证失败"的概率。
- 同样受 schema 约束,最大不超过 100 秒。
四、与其他 Exploiter 的参数对比
WMI Exploiter 与同属 Windows 横向移动家族的多个 Exploiter 在配置模型上高度一致,便于统一理解:
| Exploiter | 文档位置 | 配置参数 | 特点 |
|---|---|---|---|
| WMI | wmi.md | agent_binary_upload_timeout(默认 30)、smb_connect_timeout(默认 15) | 通过 WMI + SMB 实现远程执行 |
| SMB | smb.md | agent_binary_upload_timeout(默认 30)、smb_connect_timeout(默认 15) | 参数与 WMI 完全相同,依赖 SMB 共享 |
| RDP | rdp.md | agent_binary_upload_timeout(默认 30)、login_timeout(默认 60)、rdp_connect_timeout(默认 15)、domains(默认["WORKGROUP"]) | 额外包含桌面登录等待与域配置 |
| PowerShell | powershell.md | winrm_connect_timeout(默认 3) | 基于 WinRM,连接超时默认更短 |
可以看出:
agent_binary_upload_timeout是多个 Exploiter 共用的"投递超时",统一默认 30 秒,上限 100 秒;smb_connect_timeout(默认 15 秒)同时出现在 WMI 与 SMB 两个 Exploiter 中,说明这两者都依赖 SMB 作为底层通道;- 各 Exploiter 的"连接超时"参数虽然命名不同(SMB、RDP、WinRM),但约束规则一致:最大值 100 秒、最小值排他 0 秒,体现了统一的配置校验约定。
五、凭据爆破顺序与安全提示
虽然 WMI Exploiter 参考文档未单独列出凭据顺序,但其爆破行为与同族的 Windows Exploiter 保持一致。根据 PowerShell Exploiter 参考文档 与 RDP Exploiter 参考文档,Exploiter 对目标认证时会按固定顺序尝试不同的凭据组合:
- 缓存的用户名与密码(仅 Windows 攻击机)
- 使用空密码爆破用户名
- 使用缓存的密码爆破用户名(仅 Windows 攻击机)
- 爆破用户名与密码
- 爆破用户名与 LM 哈希
- 爆破用户名与 NT 哈希
安全注意事项:
- WMI Exploiter 属于基于凭据爆破的 Exploiter 类别,本身对目标系统的性能与可用性影响很小;但大规模启用会向目标主机发送大量认证尝试,可能触发 Windows 账户锁定策略或安全告警。
- 官方 Exploiters 特性文档 明确说明:少数会对生产负载产生负面影响的 Exploiter 会在 Monkey Island 界面中标记为 "unsafe"。使用 WMI Exploiter 前,建议先在小范围测试网络验证其行为,再决定是否在生产规模环境中启用。
- 由于 Linux 攻击机可用的凭据集合受限,若你的环境中攻击源主要是 Linux Agent,应提前规划好要注入的凭据类型(用户名/密码、NT 哈希等),避免爆破效果打折。
六、配置方式
WMI Exploiter 的配置入口位于 Monkey Island 的 Agent 配置界面中。用户可通过以下步骤完成设置:
- 登录 Monkey Island,进入配置页面;
- 在传播(Propagation)相关配置中启用 WMI Exploiter 插件;
- 展开 WMI Exploiter 的配置项,按需修改
agent_binary_upload_timeout与smb_connect_timeout; - 保存配置后启动模拟。配置会随 Agent 的传播自动下发,Exploiter 在每台 Agent 上按该配置执行。
配置的底层形态对应插件的config-schema.json,文档正是由该 schema 自动生成而来,因此上述两个参数在界面上填写时必须遵守其数值约束(0 < value ≤ 100),否则校验无法通过。
七、总结
WMI Exploiter 是 Infection Monkey 面向 Windows 环境的横向移动利器:它以 SMB 为底层通道、以 WMI 为远程执行手段,支持 Windows 攻击机与 Linux 攻击机向 Windows 目标发起攻击,并通过两个超时参数(Agent 二进制上传超时与 SMB 连接超时)控制攻击节奏。理解这两个参数的约束与默认值,结合凭据爆破顺序,可以帮助你在攻防模拟中更精准地配置该插件,既保证传播效率,又避免对目标网络造成不必要的负担。
延伸阅读:
- Exploiters 特性总览:了解所有 Exploiters 的工作机制与 "unsafe" 标记
- SMB Exploiter 参考:与 WMI 共用超时参数体系的同族组件
- PowerShell Exploiter 参考:基于 WinRM 的远程执行组件与凭据爆破顺序
- RDP Exploiter 参考:包含域配置与登录超时的桌面型 Exploiter
- 参考索引:全部 Exploiter 参考文档入口
- 网络安全
- 应用安全
【免费下载链接】monkey
Infection Monkey - An open-source adversary emulation platform
相关推荐
救你容器于无形的微型init!为什么每个严肃的Docker镜像都需要tini?
救你容器于无形的微型init!为什么每个严肃的Docker镜像都需要tini? Tini 是一个微型但合格的容器 init 进程,专为 Docker 等容器环境
网络安全应用安全Infection Monkey MSSQL Exploiter 完整指南:配置参数、攻击流程与源码剖析
Infection Monkey MSSQL Exploiter 完整指南:配置参数、攻击流程与源码剖析 导读 MSSQL Exploiter 是 Infect
网络安全应用安全RocksDB PlainTable 文件格式深度解析:面向内存存储的亚微秒级延迟 SST 格式
RocksDB PlainTable 文件格式深度解析:面向内存存储的亚微秒级延迟 SST 格式 导读 PlainTable 是 RocksDB 为 全内存场景
网络安全应用安全
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考