T1562-001-windows-绕过sysmon
来自ATT&CK的描述
攻击者可能试图阻止由监测软件或进程捕获到的告警,以及事件日志被收集和分析。这可能包括修改配置文件或注册表项中的监测软件的设置,以达到逃避追踪的目的。
在基于特征监测的情况下,攻击者可以阻止监测特征相关的数据被发送出去,以便于阻止安全人员进行分析。这可以有很多方式实现,例如停止负责转发的进程(splunk转发器、Filebate、rsyslog等)。
测试案例
众所周知,sysmon可以帮助安全人员记录很多安全事件,目前sysmon最新版本已经是10.X版本。对于攻击者来讲,他们可能需要确定目标主机是否存在sysmon。通常,攻击者是不会去检测他们入侵的主机上是否存在sysmon。
如何检测被入侵的主机是否存在sysmon,很多攻击者一般执行以下的一种操作:
枚举进程;
枚举服务;
枚举C:\Windows\System32\Drivers下的驱动;
但是,你应该知道sysmon可以实现以下功能:用户可以在其中更改可执行文件和驱动文件的名称,以便其在系统中的存在进行模糊处理。
不过攻击者可以利用fltmc.exe查看其altitude号码,sysmon的altitude号码是385201,固定不变的。
使用fltmc.exe得到的altitude号:
Windows PowerShell
版权所有 (C) 2009 Microsoft Corporation。保留所有权利。
PS C:\Users\Administrator> fltmc.exe
筛选器名称 数字实例 高度 框架
------
SysmonDrv 2 385201 0
luafv 1 135000 0
在Mimikatz中使用misc::mflt命令得到的altitude号:
mimikatz # misc::mflt
0 2 385201 SysmonDrv
0 1 135000 luafv
关于更多的如何检测被入侵的主机是否存在sysmon,你可以参考:https://anquan.baidu.com/article/350,如何检测sysmon不是本文的重点.
绕过Sysmon的两种方法
目前,攻击者有2个绕过sysmon的方法,第一个是在利用sysmon进程中的盲点,第二种则是直接禁用sysmon。
删除配置项
攻击者可以删除注册表中的规则项,此时, Sysmon在发现注册表被更改后,它将自动重新加载配置。由于此时没有任何安全检测规则存在,它将暂时失去防护能力,不过失效时间,取决于配置的维护方式。如果配置由Ansible,Chef或DSC等配置管理系统管理,可能需要几秒到几分钟才能将配置更改回原始状态,如果使用GPO来管理,那么当GPO更新时,可以在90分钟内恢复原始状态。为了解决这个问题,攻击者可以使用各种Windows技术(如.Net、VBS、PE文件等)创建VMI临时性Consumer监控相应的注册表项,当发现修改操作时,则会删除修改数据或者重新设置表项内容。之所以使用临时的Consumer,是因为大多数防护解决方案会重点关注正在创建或修改的WMI永久事件。
卸载SysmonDrv驱动
我们可以采取的另一个操作就是卸载SysmonDrv驱动,该驱动可以为Sysmon提供关于所有磁盘操作的信息,然后将信息写入事件日志中。如前文所述,该驱动有个唯一的altitude编号,如果我们以管理员权限运行,就可以卸载该驱动,然后Sysmon基本上就会完全处于失效状态。我们可以使用fltmc.exe
工具来卸载驱动,如下所示,我们通过altitudde编号识别出了隐藏驱动,并成功卸载该驱动。
关闭sysmon服务(管理员权限)
通过windows任务管理器,管理员权限关闭sysmon服务。
检测日志
sysmon日志、Windows-WMI-Activity日志,system日志
测试复现
删除配置项1
$query = "SELECT * FROM RegistryKeyChangeEvent " +
"WHERE Hive ='HKEY_LOCAL_MACHINE' " +
"AND KeyPath ='SYSTEM\\CurrentControlSet\\Services\\SysmonDrv\\Parameters'"
Register-WMIEvent -Query $query -Action {
Write-host "Sysmon config updated, deleting config."
Remove-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\SysmonDrv\Parameters" -Name "Rules" }
需要注意一点,此时Sysmon会恢复默认配置,因此会记录进程创建和进程终止事件。
卸载SysmonDrv驱动1
Windows PowerShell
版权所有 (C) 2009 Microsoft Corporation。保留所有权利。
PS C:\Users\Administrator> fltMC.exe
筛选器名称 数字实例 高度 框架
------------------------------ ------------- ------------ -----
SysmonDrv 2 385201 0
luafv 1 135000 0
PS C:\Users\Administrator> fltMC.exe unload SysmonDrv
PS C:\Users\Administrator> fltMC.exe
筛选器名称 数字实例 高度 框架
------------------------------ ------------- ------------ -----
luafv 1 135000 0
PS C:\Users\Administrator>
关闭sysmon服务
任务管理器>服务>sysmon服务>停止
测试留痕
暂无
检测规则/思路
sigma规则
删除配置项2
title: 删除sysmon配置项
description: win7 模拟测试结果
status: experimental
author: 12306Bro
logsource:
product: windows
service: WMI日志
detection:
selection:
EventID: 5860
keyword: '命名空间 = root\cimv2;NotificationQuery = SELECT * FROM RegistryKeyChangeEvent WHERE Hive ='HKEY_LOCAL_MACHINE' AND KeyPath ='SYSTEM\\CurrentControlSet\\Services\\SysmonDrv\\Parameters';PossibleCause = Temporary'
timeframe: last 1m
condition: selection
level: medium
卸载SysmonDrv驱动—sysmon
title: fltmc卸载sysmon
description: windows server 2008 模拟测试结果
status: experimental
author: 12306Bro
logsource:
product: windows
service: sysmon
detection:
selection1:
EventID: 1
Image: 'C:\Windows\SysWOW64\fltMC.exe'
CommandLine: '"C:\Windows\system32\fltMC.exe" unload Sysmon*'
ParentImage: C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe
selection2:
EventID: 255
ID: 'DriverCommunication'
Description: 'Failed to retrieve events - Last error: 由于线程退出或应用程序请求,已中止 I/O 操作。'
timeframe: last 1m
condition: all of them
level: medium
关闭sysmon服务2
title: 以其他方式关闭sysmon服务
description: win7 模拟测试结果
status: experimental
author: 12306Bro
logsource:
product: windows
service: system、sysmon
detection:
selection1:
EventID: 4 #sysmon日志
State: Stopped
selection2: 7036 #system日志
keyword: 'Sysmon* 服务处于 停止 状态。'
selection3: 7040 #system日志
keyword: 'Sysmon64 服务的启动类型从 自动启动 更改为 已禁用。'
selection4: 7034 #system
condition: selection or selection2 or selection3 or selection4
level: medium
建议
暂无
参考推荐
MITRE-ATT&CK-T1562-001
https://attack.mitre.org/techniques/T1562/001/
审核策略相关介绍
https://www.malwarearchaeology.com/logging
如何规避sysmon