windows攻防体系-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产生影响。

第一阶段:以默认配置安装

image.png

(安装UI产生的信息)

红队视角:

ATT&CK Defense EvasionTA0005

检测Sysmon是否存在:

1.   进程名        Sysmon.exe

image.png

(Sysmon进程名)

2.   服务名        Sysmonimage.png

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

3.   驱动名       Sysmondrvimage.png

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

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

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

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

5.   服务描述     System Monitor serviceimage.png

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

(图同2.服务名)

6.    注册表      image.png

(HKCU\Software\Sysinternals)image.png

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

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

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

(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-Sysmonimage.png

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

9.   Atitude值   SysmonDrv的Altitude高度385201
               PROCMON24的Altitude高度385200

方式一:fltMC查看

(图同3驱动名)

方式二:注册表查找image.png

(注册表中查找Altitude)

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

(findstr /si'<ProcessCreate onmatch=”exclude”>’ C:\)

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

绕过Sysmon:

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

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

 

阻断Sysmon

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

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

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

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

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

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

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

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

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

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

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

(使用Mimikatz暂停日志打印)

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

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

 

 

 

未知攻,焉知防

 


 

蓝队视角:

隐藏Sysmon的安装及使用痕迹

1.   进程名更改:

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

2.   服务名更改:

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

3.   驱动名更改:

通过Sysmon自带参数d更改image.png

(通过参数定义驱动名)

4.   驱动所在目录:

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

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

5.   服务描述:

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

(服务描述修改)

6.   注册表:image.png

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

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

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

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

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

7.   Guid

方法同上

8.   日志名:

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

(修改日志名)

9.   Atitude值:

 image.png

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

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

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

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

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

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

SIEM策略:

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

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

日志审计:

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

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

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

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

5.     其他

image.png

来源:freebuf.com 2020-04-01 13:34:43 by: 罹♛殇

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论