浅谈新手入门级红蓝对抗系列之——Sysmon攻防

Sysmon介绍

 


 

       

       Sysmon是微软的一款免费的轻量级系统监控工具,最开始是由Sysinternals开发的,后来Sysinternals被微软收购,现在属于Sysinternals系列工具(带有微软代码签名)。它通过系统服务和驱动程序实现记录进程创建,网络连接以及文件创建时间更改的详细信息,并把相关的信息写入并展示在windows的日志事件里。

 

        Sysmon安装后分为用户态系统服务驱动两部分,用户态通过ETW(Event Tracing for Windows)实现对网络数据记录,通过EventLog对驱动返回的数据进行解析,驱动部分则通过进、线程,模块的回调函数收集进程相关的信息,通过Minifilter文件过滤驱动和注册表回调函数记录访问文件、奇热注册表的数据。

 

未知防,焉知攻

 

 


 

 

        从功能上来讲,Sysmon是一款优秀的HIDS、EDR的主机入侵检测引擎,其依托于Windows内核层进、线程,模块,注册表回调,及文件过滤驱动针对相应的行为进行实时的增、删、改信息收集并通过ETW存储并展示于Windows日志。

 

        稳定性方面超过大部分自研的驱动,功能完善,对性能影响较小,虽然功能强大但却有很多监控盲区。若加以自研Agent与其配之,便可弥补自身监控盲区及非查询功能等其他需求。

 

        强大的功能和微软官方的稳定性加成,让很多人对这款免费的入侵检测引擎钟爱有加,但免费并不意味着开源,很多人在安装Sysmon的过程中直接使用默认配置,不更改文件名、服务名、驱动名,没有关注过安装后会留下哪些痕迹,这样则会让红队对Sysmon服务及日志产生影响。

 

       如果不更改默认配置而直接默认安装,就无法避免红队侦测Sysmon存在而针对其进行规则绕过及信息输出阻断,我确信当红队如果知晓目标机安装Sysmon,则会对红队的TTP产生影响。

 

 

 

 

(安装UI产生的信息)

红队视角:

ATT&CK Defense Evasion(TA0005)

 


 

检测Sysmon是否存在:

1.   进程名        Sysmon.exe

 

(Sysmon进程名)

2.   服务名        Sysmon

 

(服务名称及服务描述图)

3.   驱动名       Sysmondrv

 

(文件过滤驱动名称及属性)

 

(注册表中对应Sysmon驱动键及其子键)

4.   驱动所在目录    C:\Windows\

 

(驱动所在目录中Sysmon详情)

5.   服务描述     System Monitor service

(Get-CimInstancewin32_service -Filter "Description = 'System Monitor service'" 或者 Get-Service | where-object {$_.DisplayName -like "*sysm*"})

(图同2.服务名)

6.    注册表      

 

(HKCU\Software\Sysinternals)

 

              (HKLM\SYSTEM\CurrentControlSet\Control\WMI\Autologger\EventLog-Microsoft-Windows-Sysmon-Operational\{5770385f-c22a-43e0-bf4c-06f5698ffbd9})

 

(HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Channels\Microsoft-Windows-Sysmon/Operational)

 

(HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Publishers\{5770385f-c22a-43e0-bf4c-06f5698ffbd9})

 

(HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Publishers\{5770385f-c22a-43e0-bf4c-06f5698ffbd9}\ChannelReferences\0)

7.   GUID         5770385f-c22a-43e0-bf4c-06f5698ffbd9

(图同6注册表)

8.   日志名        Microsoft-Windows-Sysmon

 

(注册的Windows日志事件类名)

9.   Atitude值   

 

SysmonDrv的Altitude高度385201
PROCMON24的Altitude高度385200

 

方式一:fltMC查看

(图同3驱动名)

方式二:注册表查找

 

(注册表中查找Altitude)

10. 日志产生关键字 日志名及日志内容特征

(findstr /si'' C:\)

11. 在%SystemRoot%目录下查找Sysmon程序特征字符

 


 

绕过Sysmon:

1.   通过Powershell(Posh-Sysmon)获取Sysmon注册表中的Rules值并解析为规则,寻找监控盲区进行绕过。

2.   通过APC实现Dll注入,可绕过 Sysmon对CreateRemoteThread行为监控,进而执行ShellCode

 


 

 

阻断Sysmon:

 

1.   管理员权限CMD执行fltMC.exe upload SysmonDrv直接卸载。

 

(卸载SysmonDrv驱动后会导致SIEM产生服务变更告警)

优劣短评:简单粗暴,且重合Atomic APT组织的TTP,使用该战术动静过大,会在Sysmon日志项中产生服务变更告警。

 

2.   删除Sysmon注册表项中的规则项,Sysmon在发现注册表被更改后,它将自动重新加载配置。由于此时没有任何安全检测规则存在,它将暂时失去防护能力

优劣短评:简单粗暴,但动静过大,会在Sysmon日志项中产生服务变更告警。

 

3.SC stop SysmonDrv停止驱动(也通过Windows SCM库实现)。

优劣短评:简单粗暴,但动静过大,会在Sysmon日志项中产生服务变更告警。

 

4.结束Sysmon日志句柄的对应进程可间接停止Windows EventLog服务

 

 

(通过句柄查找Sysmon对应进程)

优劣短评:简单粗暴, Sysmon日志不会产生任何告警,但Windows系统日志会产生一条错误日志,相对1.2.3方式隐蔽。

 

5.   使用Mimikatz中Event::Drop使日志服务暂停,对wevtsvc.dll链接库劫持,使所有日志失效从而使Sysmon日志无法打印。

 

(使用Mimikatz暂停日志打印)

优劣短评:不会产生任意日志,但Windows不再产生任何日志,可能会触发SIEM告警。在Windows日志服务重启后(重启主机后),在系统日志产生大量EventID:7036日志。

 

红队总结:以上绕过及阻断方式可组合使用以达到让Sysmon变成哑巴的效果。在红队发现Windows有安装Sysmon后,通过对现有规则及对蓝队环境分析,结合具体情境使用组合技术,可轻松突破Sysmon日志记录。红队是否能检测到Sysmon对红蓝双方都有不可避免地影响,可对红队的TTP造成直接影响,对蓝队能否顺利有效检测到入侵行为也至关重要。综上,隐藏Sysmon是有一定的必要性且对红蓝双方意义重大。

 

 

 

未知攻,焉知防

 

 


 

 

蓝队视角:

 

隐藏Sysmon的安装及使用痕迹

 

1.  进程名更改:

将Sysmon.exe安装程序重命名即可实现进程进程名更改。

 

2.   服务名更改:

方式同1,进程名与服务名一致。

 

3.   驱动名更改:

通过Sysmon自带参数d更改

 

(通过参数定义驱动名)

4.   驱动所在目录:

通过修改Sysmon释放的资源文件修改路径。

 

(临时释放的资源文件MANXXXX.tmp)

5.   服务描述:

可通过Windows API、注册表、Windows服务管理器直接修改。

 

(服务描述修改)

6.   注册表:

 

(HKCU\Software\Sysinternals可在安装结束后删除相关项)

 

(HKLM\SYSTEM\CurrentControlSet\Control\WMI\Autologger\EventLog-Microsoft-Windows-Sysmon-Operational\{5770385f-c22a-43e0-bf4c-06f5698ffbd9}可通过修改Sysmon.exe文件的方式修改Guid)

 

(HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Channels\Microsoft-Windows-Sysmon/Operational修改Sysmon关键字即可)

 

(HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Publishers\{5770385f-c22a-43e0-bf4c-06f5698ffbd9}方法与修改Guid一致)

 

(HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Publishers\{5770385f-c22a-43e0-bf4c-06f5698ffbd9}\ChannelReferences\0方法与修改Guid一致)

7.   Guid:

方法同上

8.   日志名:

通过修改Sysmon.exe程序内关键字即可

 

(修改日志名)

9.   Atitude值:

 

 

(伪装MSDN中已注册的Atitude注册表及驱动名称)

 

 

(通过安装前修改Sysmon文件或者安装后修改重启驱动对应注册表)

10.日志关键字及日志内容关键字:

 

 

(通过修改Sysmon释放的MANXXX.TMP Manifest 文件替换内容关键字)

 

 

(修改后的日志内容,修改Driver->DDiver)

 

针对Sysmon绕过及阻断的防护:

 


 

SIEM策略:

1.     事件产生基线,单位时间内若无日志产生则产生告警。

 

2.     基于机器学习的事件动态频次检测,根据一个周期生成的事件数量建立基线检查,可通过Splunk等SIEM平台的机器学习工具库实现。

 

日志审计:

 

1.     非Sysmon程序对Rule键的读取审计。

2.     对Sysmon服务变更信息及系统事件错误(EventID:7036)等进行审计。

 

3.     对fltMC的unload行为进行审计。

 

4.     针对任何形式的Mimikatz进行行为检测并告警,针对不同环境制定Windows主机Debug权限基线并行为审计(EventID:4672)。

 

 

GPO:

定期强制更新对应策略

5.     其他

你可能感兴趣的:(浅谈新手入门级红蓝对抗系列之——Sysmon攻防)