Windows操作系统因本身的安全特点经常成为内网安全渗透的首选目标,如果终端上没有安装EDR产品,基于Windows本身的日志很难监控到入侵行为。近期蓝军采用加壳无文件的mimikatz获取密码,我方防护产品没有任何告警,此事也引发了笔者的一些思考,对于重点Windows服务器是否可以采用Sysmon进行深度监控并发现此类工具。本文介绍使用微软的SysInternals工具之一的Sysmon深度监控操作系统行为,并集中分析处理监控数据的方法。
0x01 方案概要
在Windows设备上安装Sysmon,通过Sysmon将监控到的行为日志记录到EventLog,之后通过NXlog或者Splunk Universal Forwarder转发到数据集中处理平台。
其实正常情况下通过Splunk UF做数据转发并配合Splunk进行分析是非常方便的,但考虑到BCP(涉A)可以使用NXlog读取EventLog并且转化为Syslog向SIEM系统发送。
工具
- Sysmon: https://docs.microsoft.com/en-us/sysinternals/downloads/sysmon
- Nxlog: https://nxlog.co/products/nxlog-community-edition/download
- Splunk add-on for Sysmon (可选,Splunk日志解析插件): https://github.com/splunk/TA-microsoft-sysmon
- Sysmon App for Splunk(可选,Splunk日志分析插件): https://splunkbase.splunk.com/app/3544/
0x02 Sysmon
Sysmon可用来监控和记录系统活动,并记录到windows事件日志,包含如下事件:
Event ID 1: Process creation
Event ID 2: A process changed a file creation time
Event ID 3: Network connection
Event ID 4: Sysmon service state changed
Event ID 5: Process terminated
Event ID 6: Driver loaded
Event ID 7: Image loaded
Event ID 8: CreateRemoteThread
Event ID 9: RawAccessRead
Event ID 10: ProcessAccess
Event ID 11: FileCreate
Event ID 12: RegistryEvent (Object create and delete)
Event ID 13: RegistryEvent (Value Set)
Event ID 14: RegistryEvent (Key and Value Rename)
Event ID 15: FileCreateStreamHash
Event ID 255: Error
详情见https://technet.microsoft.com/en-us/sysinternals/sysmon
Sysmon会将记录的日志写入Windows EventLog,通过Event Viewer可以查看日志内容,具体路径为Application and Service Logs > Microsoft > Windows > Sysmon > Operational
安装
Sysmon 的安装非常简单,但需要使用管理员权限安装,并且需要加载配置文件,这里推荐使用大拿已经写好的sysmon配置文件,当然也可以自己修改。实验发现,如果采用默认的配置文件,能够抓到的信息非常少,但是如果不加过滤,将所有日志全部收过来的话量又惊人的大,ion-storm的配置文件可以看出来是精心配置过的,后面我们会用mimikatz来验证。
将下载好的Sysmon.exe与配置文件放到c:/monitor
目录下,以管理员权限打开cmd并执行:
sysmon -accepteula -i config.conf
Sysmon会以服务形式启动,并且默认开机启动,日志可以在Event Viewer的Application and Service Logs > Microsoft > Windows > Sysmon > Operational
查看
接下来我们先验证一下Sysmon的监控能力,为方便说明,这里假定我们已经把日志传送到Splunk了,具体步骤往下翻。
验证
下载一个mimikatz在目标机器上执行,观察日志输出:
dump本机密码:
privilege::debug
sekurlsa::logonpasswords
接下来我们在Splunk中搜索相关日志,可以看到Sysmon抓到了mimikatz产生的两种日志,eventcode=1创建进程,eventcode=10访问进程。有关mimikatz的IOC我们将在以后探讨。
0x03 Sysmon日志集中采集
因为Sysmon将日志写入到Windows的EventLog里面,收集EventLog的方法不下几十种,如果基于Splunk收集,可以参考我以前的文章《Splunk + Forwarder 收集分析Windows系统日志》
下文简要介绍一下NXlog的收集方法。NXlog是一个非常轻量的第三方的日志收集工具,社区版可以公开获取,下载以后使用管理员权限双击便可执行,NXlog默认会自动添加为系统服务,并且开机启动,非常方便。
在启动NXlog之前需要先修改配置文件,示例如下:
## This is a sample configuration file. See the nxlog reference manual about the
## configuration options. It should be installed locally and is also available
## online at http://nxlog.org/docs/
## Please set the ROOT to the folder your nxlog was installed into,
## otherwise it will not start.
#define ROOT C:\Program Files\nxlog
define ROOT C:\monitor\nxlog
Moduledir %ROOT%\modules
CacheDir %ROOT%\data
Pidfile %ROOT%\data\nxlog.pid
SpoolDir %ROOT%\data
LogFile %ROOT%\data\nxlog.log
<Extension kvp>
Module xm_kvp
</Extension>
<Extension xml>
Module xm_xml
</Extension>
<Input in>
Module im_msvistalog
Query <QueryList> <Query Id="0"> <Select Path="Microsoft-Windows-Sysmon/Operational">*</Select> </Query></QueryList>
</Input>
<Output out>
Module om_udp
Host 10.231.132.79
Port 1517
Exec to_xml();
</Output>
<Route 1>
Path in => out
</Route>
Splunk默认以RenderXML格式读取和发送EventLog,而NXlog发送是已标准的XML发送的,所以最终收到日志的时候会发现以上两种方式采集的日志格式会有不同。