WMI攻击检测

2022-01-19 21:17:10 浏览数 (1)

攻击检测

WMI攻击检测

谢公子学安全

讲在前面

作者:pingpig@深蓝攻防实验室

在前面的文章中我们讲了:WMI讲解(是什么,做什么,为什么)

WMI利用(横向移动)

WMI利用(权限维持)

今天主要分享的是WMI攻击检测。

无论何种攻击手法在日志或流量是都会留下一定的痕迹,但是使用何种的规则将其监控到,这是令防守方头大的问题。WMI横向移动、权限维持都会在日志监控到。至于如何制定规则,本文不展开。 总之两点:

  • 做好 WMI 连接的网络流量监控,一般不使用 WMI 的环境若出现了使用 WMI的情况,则内部网络可能已经被入侵。
  • 做好进程监控,监测”wmic.exe“的命令行参数及其执行的命令。

日志检测

注意:在日志检测中,最重要的数据来源就是Windows日志,而Windows日志也不是说全部选项都开启就可以,因为必须要考虑到机器本身的性能,很多无关紧要的日志数据我们可以将其监控选项关闭。

Windows EventLog

Windows中对于WMIC的检测有两个关键日志: - EventCode 4648 — 尝试使用显式凭据登录 - EventCode 4688 / SysmonID 1 — 进程创建 (wmic.exe) wmic执行命令 在域内客户机上执行wmic远程命令

wmic创建事件 当创建wmi事件时出现了4648和4688日志

4648日志出现,调用程序svchost.exe

当wmic执行时,以上述例子为例,可以看到命令执行成功前后出现了3个日志,这也和wmic的执行流程有关,我们可以参考下图:

上图咱们可以结合WMI讲解篇进行理解,WMIC操作时会先由svchost.exe调用WmiPrvSE.exe然后由WmiPrvSE调用指定的程序,指定的cmd则由cmd.exe进行下一步操作,指定的powershell则有powershell.exe进行下一步操作。

Sysmon

注意:Sysmon是微软对于Eventlog的补充解决方案,这是笔者对于Sysmon的理解,Sysmon可以能够获取到Evenlog获取不到的更多信息,MS解释Sysmon。

sysmon64.exe -i exampleSysmonConfig.xml //执行安装:

sysmon64.exe -u //删除

执行安装

删除

注意:exampleSysmonConfig.xml为Sysmon的配置文件,内容和名字均可以自定义,内容可以自行进行增加或修改。

<Sysmon schemaversion="4.40"> <EventFiltering> <!-- Restrict logging to access targeting svchost.exe and verclsid.exe --> <ProcessAccess onmatch="exclude"> <TargetImage condition="excludes">verclsid.exe</TargetImage> <TargetImage condition="excludes">svchost.exe</TargetImage> </ProcessAccess> <!-- Process access requests with suspect privileged access, or call trace indicative of unknown modules --> <ProcessAccess onmatch="include"> <GrantedAccess condition="is">0x1F0FFF</GrantedAccess> <GrantedAccess condition="is">0x1F1FFF</GrantedAccess> <GrantedAccess condition="is">0x1F2FFF</GrantedAccess> <GrantedAccess condition="is">0x1F3FFF</GrantedAccess> <GrantedAccess condition="is">0x1FFFFF</GrantedAccess> <CallTrace condition="contains">unknown</CallTrace> </ProcessAccess> </EventFiltering> </Sysmon>

参考配置文件:sysmonconfig-export.xml

Powershell查看Sysmon日志

Get-WinEvent -LogName Microsoft-Windows-Sysmon/Operational

本地事件管理器:

Windows日志->应用程序和服务日志->Microsoft->Windows

可以看到详细的日志内容

若是需要将sysmon的日志导出则可以使用wevtutil命令:

wevtutil query-events "Microsoft-Windows-Sysmon/Operational" /format:xml /e:sysmonview > eventlog.xml!

然后可以自行导入sysmon帮助工具进行分析:sysmontools

若是权限维持中的WMI事件,则sysmon可以关注如下四个事件ID

Process Create(ID 1) WmiEventFilter(ID 19) WmiEventConsumer(ID 20) WmiEventConsumterToFilter(ID 21)

可以看到CommandLine中执行的命令细节

流量检测

我们要注意在使用PSEXEC,SC.EXE,或其他远程服务管理工具进行操作时,通信将通过MS-SCMR协议操作DCERPC。即使该协议使用最大加密级别,但仍然可以使用流量监控确定目标执行了哪些类型的操作(例如服务创建、服务启动等)。 下图为sc.exe 创建远程服务的 wireshark 捕获

尽管WMIC仍然基于 DCEPC,但所有 WMI DCOM 方法调用都是通过单个接口完成的,并且当与“数据包隐私”级别的加密相结合时,流量监控的解决方案只能知道调用了某些 WMI 方法。无法知道执行了那些细节操作。若通过 WINRM 协议执行时,WMI 流量看起来像 HTTP,并且再次与通过 SVCCTL 接口时完全不同。这意味着 WMI技术可以有效地规避任何流量检测其横向移动的操作。 下图为DCEPRC数据包

缓解措施

- 限制 WinRM信任的主机数量

winrm 设置

winrm/config/client '@{TrustedHosts="指定主机"}' - 在日志中重点监控WmiPrvSE.exe和WMIC.exe。 - 做好高权限的控制,避免高权限帐户滥用。

参考文章

Windows 管理规范

WMI检测详细分析

发现横向移动

0 人点赞