行业新闻

日志分析之某网站weblogic服务停止事件分析

日志分析之某网站weblogic服务停止事件分析

背景

1.  某网站出现weblogic多次服务停止事件,时间分别为:(2018年1月2日:9点、14点、15点。1月3日:9点、14点,具体时间无)。

2. 网站方提供恶意代码附件”恶意代码.txt”,该恶意代码执行后导致weblogic停止。

3.  已知的IP信息如下:

受害服务器IP(2台):10.*.*.47、10.*.*.48

负载均衡:10.*.*.43

4.  现提供weblogic 中间件日志和各安全设备日志。

分析过程

当发生安全应急事件的时候,我们应该从何处着手,如何找线索并展开分析的思路是最重要的。应急响应检测阶段的技术过程可参考我之前发过的一篇观点文章《应急响应检测阶段技术流程》。里面提出了一个"点线面"模型观点,本次为复盘日志分析,着重日志分析而非应急响应,而且由于是久远的一次事件,当时的应急响应人员可能数据没要齐全,因此完全参考“点线面”模型肯定不现实,但是可以参考该模型进行模拟复盘。

一、确定事件输入点

根据“点线面”模型里的流程,在确定事件输入点时我们需要清楚三点:1.异常是什么,2.产生异常涉及的系统是哪些(ip,业务,开放的服务,系统类型),3.这些受害主机产生异常的原因是什么。根据背景可知异常为weblogic多次停止运行,涉及受害系统IP(2台):10.*.*.47、10.*.*.48。产生该异常的原因我们可通过审计甲方提供的恶意代码,发现导致weblogic服务停止的原因在于,恶意代码中读取过滤java相关进程后使用kill -9命令进行进程杀灭,java进程被杀后进而导致的weblogic服务停止。此时可确定为受到攻击导致的异常。

在审计该恶意代码时,发现其杀灭java进程后到165.227.215.25下载名为xmrig-y的文件。

由于是复盘分析,攻击者服务器早已关停,无法下载xmrig-y文件。但是可以到威胁情报平台((奇安信,微步在线,virustotal等))查询恶意ip:165.227.215.25,发现其标签为挖矿。并找到关联样本

虽然说威胁情报平台已经将样本进行了标签,但是实际过程中可能威胁情报平台当时并未及时收录到此攻击的相关情报。因此拿到样本可将其上传到沙箱运行,沙箱分析结果显示为挖矿脚本,并发现其内部外联通讯地址IP:145.239.0.84。

同时可通过手工分析,使用strings工具查询恶意代码内部字符串,发现可疑协议stratum+tcp://

确定为挖矿通信协议。至此,可知本次攻击的目的为挖矿。二、线索推断

由提供的恶意代码(下载器)分析可知其针对java相关进程,通过逆向思维反推,针对java那么只有是知道其存在Java了才会进行针对,也即是说通过java相关应用进来的才会知道是存在java的,本次事件中则可将weblogic服务作为最大嫌疑入口点,另外挖矿攻击一般使用某种漏洞或通用弱点进行批量攻击。因此,可认为是通过weblogic相关漏洞进行的入侵并展开日志分析验证。

三、日志分析策略

已有安全设备日志,weblogic运行日志,web access日志。在未知攻击ip,已知受害IP和可疑攻击方式下的分析策略如下:

1.首先分析安全设备日志,因为安全设备的告警就已经是为我们过滤掉了很大部分的正常访问日志。

从威胁感知设备日志中筛选出受害IP:10.*.*.47、10.*.*.48及负载均衡IP:10.*.*.43的全部日志条目

发现10.*.*.47、10.*.*.48均无记录,只有负载均衡IP:10.*.*.43存在记录。由于已知的最早一次服务停止事件发生在2018年1月2日,发现从2017/12/8 6:00:34起持续存在CVE-2017-5638漏洞告警,该漏洞属于Apache Struts 2远程命令执行漏洞,恶意用户可在上传文件时通过修改HTTP请求头中的Content-Type值来触发该漏洞,进而执行系统命令。从时间上看攻击时间线过长,且payload单一,这时并不能将此告警排除,因为安全设备记录的payload仅是截取了匹配到规则库的一部分,并非完整的攻击载荷,攻击者可能不断完善payload进行攻击或是不同攻击者进行的攻击。并且Struts2远程命令执行漏洞跟java相关且1月2日也存在告警,因此,暂时可将该漏洞攻击作为本次事件的可疑攻击方式(在payload中发现有执行cmd.exe进行系统判断)。

编写脚本从IPS日志中筛选出受害IP:10.*.*.47、10.*.*.48及负载均衡IP:10.*.*.43的全部日志条目,发现仅有攻击IP:72.11.140.178对受害IP:10.*.*.43的TCP_Oracle_WebLogic_Server反序列化漏洞告警,且只检测不阻断。最早告警时间为2017-12-29 09:21:17

至此可将CVE-2017-5638命令执行漏洞反序列化漏洞列为可疑入侵方式。并对weblogic运行时日志进行分析(access日志为简单日志,没有分析的价值)。

2.分析weblogic运行日志。

从前面的分析,可将“cmd.exe”和“serialize”作为两个可疑漏洞的关键词对日志进行匹配分析

通过搜索关键字“cmd.exe”,发现一条命令执行失败的告警,即命令已执行,但由于操作系统或策略限制等原因执行失败。

搜索该条记录的上一邻近记录条目,发现远程下载命令并设置定时任务。下载地址:http://5.188.87.12/icons/logo.jpg|sh

http://181.214.87.240/icons/logo.jpg|sh

由该记录前半部分显示可知为文件上传且payload是在content type头中,符合CVE-2017-5638命令执行漏洞的攻击方式。而且告警为warn级别而非error级别,说明此请求是执行的

为进一步严谨性,编写脚本匹配关键字“cmd.exe”和“serialize”并输出。发现当出现携带下载地址的payload时,告警中才会出现命令执行但未成功的告警记录。而payload中的ip经过威胁情报查询,均为矿池IP。

总结

至此可得出本次攻击是攻击者:72.11.140.178 通过CVE-2017-5638命令执行漏洞进行攻击,植入恶意脚本下载器,定时启动脚本下载器执行启动下载恶意挖矿脚本,杀灭java进程导致weblogic服务时而停止。

从weblogic应用日志中未发现反序列化漏洞或存在反序列化异常告警痕迹,所以IPS日志中所报TCP_Oracle_WebLogic_Server反序列化漏洞其实为CVE-2017-5638命令执行漏洞告警,仅因为命令执行payload中存在类似#ognlUtil.getExcludedPackageNames()之类的字符导致触发匹配反序列化规则。而威胁感知设备似乎并未能检测出并记录到该攻击成功的payload。


关闭