今天摸鱼中突然收到兄弟发来的一个链接
https://github.com/TonyNPham/GodzillaPlugin-Suo5-MemProxy
职业本能hv中的新项目99在钓鱼。不信邪下来看了看水了这篇文
这么点东西
拆开之后一个class。Resource里放了个图片。(插件带图片,不是流氓就是土匪)
不想说什么混淆后的流氓
直接开class分析
这段静态首先创建了一个包含两个混淆后的字符串的数组并赋值给了m,在最后创建了个Suo5Memproxy对象并调用initview方法。跟进查看initview。
实现判断a.A的参数是否为特定字符串,依据判断去执行特定的a.Suo5Version方法
在跟进suo5Version之前,注意到一段非常简短的代码
联系上下文可知这段代码继承自ClassLoader并实现了Plugin接口,主要创建了一个公共方法get,它接收a数组作为参数,通过父类方法DefineClass方法来根据a创建并返回一个新的class对象。
简单说这就一个加载器,宝子们在各大poc应该脸熟,在没和上下文关联起来之前只能盲猜利用手法可能是通过网络或其他渠道获得一个数组,其中包含待执行恶意代码。
然后使用get类加载这个数组中的类从而达成代码执行。
跳过这里我们先去分析suo5Version
虽然我不理解为啥接了两个a。。。
这段代码使用反射调用名为”L;P”的方法,其中使用的decodeGzipHex和showIcon需要看一下
这段主要实现了解码Gzip压缩并经过base64编码后的数据的方法。这种方式比较常用于网络通讯或数据存储的操作里。暂时跳过来看showIcon
精彩的来了,先不分析直接看返回,tostring。。。。。为啥从图片里返回出一个字符串呢???你品,你细品
来看看具体干了啥
首先从a数组里取元素赋值没毛病。然后使用imageIO读取图片也勉强没毛病(虽然很好奇一个插件为啥要放图片?????)
Var5和var6都是图片长宽也还行。。
Var16=New StringBuilder 构建一个字符串??摊牌了吗??
下面就大致循环了a+var3次,如果小于var3,var7和8+1,否则创建var9。从var7处获得位信息,再根据var2的偏移值进行位操作,结果存进var9,直到var8的值为0后把var9转化为字符赋值给var16。
总结下来就是获得了图片长宽高和其他一些参数,把图片解析为Bufferedimage对象,遍历图片的像素,根据特定条件进行位操作,把位信息转化为字符串。
讲实话,看到这基本想实锤了。作为一个哥斯拉插件您带icon我忍了,为了美。这遍历像素玩拼图是啥操作???
剩下的大致看一眼吧
Init把a绑定到按钮上,巴拉巴拉的操作最后就是点击按钮触发payload
加密模块
视图模块
基本上整体代码看完,除去加密和视图,最可疑的点在于图片处理与加载上,两段代码合起来看一下可疑度直线上升。
两段代码一起看实现了一个加载自定义类的操作,具体加载的类取决于showIcon(a)的返回值,以及调用L;P的方法,但是联合showIcon的返回值为从图片中提取到字符串来看,会加载出一个恶意类,造成远程命令执行。
这段代码分析难度适中,非常适合伙伴们智商检测使用,推荐下一个没事看着玩打发无聊hv时间。
另:本人代码稀碎,只能做入门程度分析如有不对之处还望指出。
目前正处于hvv期间,对于这种来源不明的新项目请各位友人斟酌斟酌!!41全体预祝大家hv顺利!!!!!!
欢迎各位大佬入群交流,需要各种资料也可入群领取。
二维码失效加好友进群!!!!!!!!!!!
群满请加wx入群!!!!!!!
wx:Mathearsion