为确保网络安全,减少攻击者入侵的可能性,组织机构中部署的安全信息和事件管理系统(SIEM)需要对进出网络的行为执行实时的日志收集、分析和预警处理,SIEM系统中会涉及到大量的日志收集设备。但也存在另外一种可能,攻击者可以对SIEM系统中的日志收集设备形成虚假日志,实现干扰SIEM的安全行为监测目的。本文就来探讨身处内网的攻击者如何对日志收集设备发起虚假日志攻击,文章仅为思路分享,不代表实战观点。
1. 理论思路
要对SIEM系统日志收集设备形成虚假日志,主要有两步:
- 发现目标日志收集设备的日志格式
- 按格式生成相应的虚假日志
前提条件:身处目标网络中的一台设备。可以点击Letsdefend.io的SIEM仿真实验室进行练手。
(1) 发现目标日志收集设备的日志格式
如果目标日志收集设备使用的是扩展的日志格式(LEEF),而我们向其发送了通用的事件格式(CEF),那就会出现解析问题。这里我们可以用以下两种方法判断目标监控设备的日志格式:
(2) 应用程序识别
识别目标日志收集设备在网络中监测的前端应用程序,然后对该应用程序的属性和日志流进行分析;
网络流量监测分析,如果网络系统中的日志信息未经加密进行传输,一般都能发现其具体的日志格式。
(3) 生成虚假日志
根据上一阶段的分析,构造虚假日志发送给目标日志收集设备。
2. 实例测试
用以下简单的网络系统为例,网络架构中部署了一台针对客户端的日志收集设备,它是基于Splunk的日志系统,其收集的日志信息会传递给监测分析设备进行关联分析,并给出威胁报警。
攻击者潜入网络,开始信息探测,按照上述步骤首先来识别日志收集设备的日志收集格式。这一步他应该会对日志收集设备执行端口扫描:
从扫描结果可以看出,日志收集设备系统中运行有Splunk服务,假设端口514和1234用于日志信息收集,之后,攻击者通过网络流量监听,会发现端口1234用于TCP包的传输:
从实际的传输包中可以看到,整个网络数据并未采取加密措施,因此可以从中发现具体的日志格式:
有了这种明文的日志格式,接下来就是构造日志的问题了。这里虚假日志的目的各有不同,例如可以发送大体积日志以堵塞日志收集功能,或是用虚假攻击日志欺骗系统管理员(Analyst),也可即时发送大量日志消息延迟日志处理机制,等等。为了分散系统管理员的注意力,基于上述格式,攻击者可以伪造出以下尝试SQL注入的日志格式:
- 192.168.131.23 – – [19/Apr/2020:11:33:23 -0700] “GET /read.php?id=1%27%20UNION%20ALL%20SELECT%20LOAD_FILE(%27/etc/passwd%27) HTTP/1.1” 404 208 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36”
之后,把类似大量的日志发往日志收集设备的1234端口:
管理员在日志收集设备中看到以下的记录信息,攻击者也成功实现了干扰目的。
预防措施
- 针对日志收集设备实施白名单通信机制;
- 监控即时日志流量,对异常的增加/减少日志发出警报;
- 对日志传输信息进行加密处理。