攻击检测
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检测详细分析
发现横向移动