WMI攻击检测

  • A+
所属分类:安全文章
WMI攻击检测







































WMI攻击检测
WMI攻击检测
谢公子学安全
WMI攻击检测


WMI攻击检测
讲在前面


作者:[email protected]深蓝攻防实验室    

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

                                        WMI利用(横向移动)

                                        WMI利用(权限维持)

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

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


  • 做好 WMI 连接的网络流量监控,一般不使用 WMI 的环境若出现了使用 WMI的情况,则内部网络可能已经被入侵。

  • 做好进程监控,监测”wmic.exe“的命令行参数及其执行的命令。


WMI攻击检测
日志检测



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


Windows EventLog


Windows中对于WMIC的检测有两个关键日志:

- EventCode 4648 — 尝试使用显式凭据登录
- EventCode 4688 / SysmonID 1 — 进程创建 (wmic.exe)

wmic执行命令
在域内客户机上执行wmic远程命令


WMI攻击检测


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


WMI攻击检测


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


WMI攻击检测


WMI攻击检测


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


WMI攻击检测


上图咱们可以结合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                     //删除


执行安装


WMI攻击检测


删除


WMI攻击检测



注意: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


WMI攻击检测


可以看到详细的日志内容


WMI攻击检测


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



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


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


WMI攻击检测


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



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


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


WMI攻击检测


WMI攻击检测
流量检测


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



WMI攻击检测


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


WMI攻击检测


WMI攻击检测
缓解措施


- 限制 WinRM信任的主机数量


winrm 设置

winrm/config/client '@{TrustedHosts="指定主机"}'


- 在日志中重点监控WmiPrvSE.exe和WMIC.exe。
- 做好高权限的控制,避免高权限帐户滥用。


WMI攻击检测
参考文章


Windows 管理规范

WMI检测详细分析

发现横向移动



WMI攻击检测

END

如果想跟我一起讨论,那快加入我的知识星球吧!https://t.zsxq.com/7MnIAM7


WMI攻击检测


本文始发于微信公众号(谢公子学安全):WMI攻击检测

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: