1.简介
Sysmon(系统监视器)是由Windows Sysinternals出品的Sysinternals系列工具中的一个。Sysmon是Windows系统服务和设备驱动程序,一旦安装在系统上,便会在运行期间监视系统活动并将其记录到Windows事件日志中。它提供有关进程创建、网络连接及文件创建时间更改的详细信息。可以使用相关日志收集工具收集事件并随后对其进行分析,可以识别单个主机上的潜在恶意活动。因为信息保存到Windows Eventlog中,因此使用SIEM(安全信息和事件管理)工具可以更轻松地收集信息,使用配置文件创建规则并指定即可。红队和渗透测试人员首先要判断目标系统中是否存在Sysmon。通常情况下,当将Sysmon安装到系统中时,该工具会创建一个服务来加载驱动,对应的注册表键值会存储服务及驱动的配置信息、安装事件清单(manifest),以定义事件并创建事件日志,并将生成的事件存放在事件日志中。因此,可以通过多种方式来判断Sysmon的安装状态。如果发现目标主机安装了Sysmon,请勿在这台主机上做过多操作,因为Sysmon会记录大多数操作,这会增大被发现概率。可以参考4.9.4节有关绕过Sysmon的内容来绕过检测。
Sysmon可记录进程创建及结束、网络连接、驱动加载、镜像加载、以Raw访问方式读取文件,某个进程读取另一个进程空间、文件创建、注册表操作事件、管道操作事件等行为。
2.启动Sysmon
执行sysmon64.exe-accepteula-i-n命令启用Sysmon,执行Sysmon.exe-c RecordCreate-RemoteTh.xml命令可以启动Sysmon的配置文件,如图2-94所示。
图2-94 启用Sysmon
3.检测Sysmon是否安装及运行
一般可以通过进程名、服务名、驱动名等判断计算机是否安装了Sysmon。但是EDR类程序会隐藏服务名称,并且不需要运行特定进程,还可以使用特定工具修改Sysmon对应的驱动名。此时可以从注册表中查找进阶检测Sysmon是否存在的方法。即使Sysmon对应的服务名被修改,还有固定的描述信息,可以通过搜索该描述信息检索对应服务。
1)安装Sysmon后,系统会启动名为Sysmon的进程,可以执行Get-Process | Where-Object{$_.ProcessName-eq“Sysmon”}命令枚举进程查看目标主机是否安装Sysmon,如图2-95所示。
图2-95 通过枚举进程查看目标主机是否安装Sysmon
2)安装Sysmon后,系统还会创建一个名为System Monitor service的服务,可以使用Get-CimInstance win32_service-Filter“Description=‘System Monitor service ’”命令(服务描述名称:System Monitor service)枚举服务查看目标主机是否已安装Sysmon,如图2-96所示。
图2-96 通过枚举服务查看目标主机是否已安装Sysmon
3)执行ls HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Channels|Where-Object {$_.name -like "*sysmon*"}命令通过注册表检测是否已安装Sysmon,如图2-97所示。
图2-97 通过注册表检测是否已安装Sysmon
4)执行Get-CimInstance win32_service-Filter"Description='System Monitor service'"命令通过服务的描述信息搜索对应的服务,如图2-98所示。
图2-98 通过服务的描述信息搜索对应的服务
4.检测Sysmon是否被卸载
❑Sysmon事件ID 255:详细的错误消息DriverCommunication。
❑Windows系统事件ID 1:从源FilterManager中声明“File System Filter<DriverName>(Version 0.0,<Timstamp>)unloaded successfully”。
❑Windows安全事件ID 4672:SeLoadDriverPrivileges被授予SYSTEM以外的账户。
❑Sysmon事件ID 1/Windows安全事件4688:该事件是Sysmon中驱动程序错误发生之前的最后一个事件,与驱动程序卸载相关的异常高完整性进程。
5.使Sysmon在终端隐匿运行的技术
攻击者在获得主机权限后,会检测是否存在Sysmon等终端日志记录工具,如果存在,攻击者会通过技术手段绕过日志检测,以增大安全人员对攻击进行溯源的难度。可修改以下内容来避免攻击者发现终端上的Sysmon进程。
❑修改Sysmon驱动名。
❑修改Sysmon文件名。
❑修改Sysmon服务名。
❑修改Sysmon释放的资源文件路径。
❑修改服务描述:可通过Windows API、注册表、Windows服务管理器直接修改。
❑修改注册表项:HKCU\Software\Sysinternals,可在安装结束后删除相关项。