查看原文
其他

蓝队第2篇 | Weblogic反序列化攻击不依赖日志溯源攻击时间

abc123info 网络安全abc123 2022-11-05
 Part1 前言 
WebLogic是美国Oracle公司出品一款中间件产品,在国内使用也比较广泛。从2015年开始至今,接连爆出过10几个可直接利用的Java反序列化漏洞,相关漏洞的原理也越来越复杂。每次应急响应过程中,遇到Oracle公司的产品都会特别头疼,因为其日志结构太过繁杂,相关介绍文档也很少,想弄明白是需要下一番功夫的。
在日常的应急响应过程中,为了解决这个问题,我曾经反复搭建环境,反编译各种Weblogic攻击工具,跟踪其源代码,研究可以不依赖日志分析去快速解决Weblogic中间件应急响应的方法,流量监控设备通常会有各种报警,混杂在一起的时候,也很难确定准确的攻击时间。对于早期Weblogic反序列化攻击,我做应急响应的时候,ls -lah看一下Weblogic几个目录下新增的文件及文件时间属性,就能判断出攻击者用的是哪一款Weblogic漏洞利用工具,而且还可以确定准确的攻击时间,根本就不用去看日志。下面分享一下这个技巧,后续也会花很大篇幅讲讲Weblogic的日志结构及各种漏洞的应急溯源技巧,因为牵扯到Oracle公司的产品,都会很复杂。花很大精力:
 Part2 具体研究过程 
  • 虚拟机下测试
本地搭建Weblogic的环境如下:
使用Weblogic反序列化工具进行攻击,查看服务器的/temp/目录,会生成一个.tmp格式的临时文件,然后查看此文件属性,得知攻击者执行命令的准确时间。
将此tmp文件拷贝出来,改扩展名为.jar,使用jadx-gui工具反编译,即可看到攻击代码,证明此文件确实是攻击者遗留下来的。
很多weblogic反序列化利用工具为了能通过T3协议回显命令执行结果,都有类似的文件落地,也有的weblogic反序列化利用工具为了实现无文件落地回显,是通过defineClass方法,从byte[]字节码中还原一个Class对象,实现无文件落地注入构造回显,这种应急方法不再适用。
  • Weblogic回显的实现原理:
应急方法讲完之后,接下来看一下相关工具为什么会向/temp/目录写文件,首先要大体讲一下T3反序列化回显的原理:
Weblogic对外提供Web服务,会开放7001等端口,这个端口是Web协议、T3协议、IIOP协议并存的,而T3协议允许客户端远程调用Weblogic服务端的类,然后把执行结果再传输给客户端。因此攻击者会在本地事先编译好一个具有执行命令、上传文件等功能的java类,接着将编译好的文件上传至服务器上,通过URLClassLoader加载这个编译文件,在服务端绑定一个实例,进而实现T3下的Weblogic反序列化回显,其实有点类似于RMI远程方法调用的过程。 
这里要指出,有的Weblogic利用工具向服务器写入临时文件时,并没有关闭文件句柄,导致文件会一直存在服务器上。 
  • 常见Weblogic利用工具特征 
 1   首先看第一款实现Weblogic反序列化回显的利用工具,是由冰蝎作者rebeyond大牛编写的。我记得大概是15年年底时,冰蝎作者rebeyond第一个公布出Weblogic T3反序列化回显方法,而且给出了相关的代码后续的研究者的回显方法基本上与rebeyond的差不多,通过加载字节码方式实现无文件落地回显。
我们反编译一下rebeyond的工具,看看代码的具体实现过程:
通过Connect按钮事件跟进,一直跟到GenPayload类的Gen方法,很明显可以看到,这款工具会向服务器的临时目录写入1vBLBK.tmp临时文件:
之后再通过URLClassLoader类加载这个tmp文件,在服务端绑定一个实例,进而实现T3回显。
 2   接下来看另一款Weblogic反序列化利用工具:
利用成功后,会在服务器上生成H3y5ec.tmp临时文件。
之后同样使用URLClassLoader类加载,实现T3回显。
 3   接下来看第3款Weblogic反序列化利用工具:
可以看到,也会向服务器写一个临时文件
同样是使用URLClassLoader类加载,实现T3回显:

 Part3 总结 

1.  早期的Weblogic反序列化利用工具,为了实现T3协议回显,都会向服务器上写入一个临时文件。近几年随着无文件落地的流行,Weblogic的回显基本上都是找一个实现了defineClass方法的类,通过还原字节码方式实现回显,这种应急方法不再适用。
2.  应急溯源过程中,日志量通常浩如烟海,而且容易被攻击者删掉。在此情况,研究一下攻击者常用工具的原理,总结一些小技巧,在日常应急溯源工作中,会事半功倍,省去很大的工作量。

专注于红队、蓝队技术分享

每周一篇,敬请关注

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存