哥斯拉Godzilla运行原理探寻

2020-11-23 15:38:27 浏览数 (1)

前段时间在这里看到这个工具:哥斯拉Godzilla。团队小伙伴对称感兴趣,特意下载下来分析一下。

探寻原理

密码(pass)和密钥(key)

将jsp shell格式调整一下,分析。发现key取前16位md5值硬编码保存

生成密码(post参数)和密钥(key)的校验md5值

认证代码分析

使用“测试连接”功能,分析认证,返回为空

对应代码,将post值进行b64解密后吗,使用x函数解密,再提取payload

x函数是aes的加解密功能,加解密密钥(xc)就是key的md5前16位

因此,正确的key就是正确的加解密密钥,try内代码执行不出错就表示认证通过

md5使用

根据分析发现返回时,先取校验MD5值的前16位返回,再返回shell的aes b64数据,最后取校验后16位返回,猜测返回包解密是根据这个来的

某个返回包

拦截一下返回,将C改成A

提示初始化失败

jar返回处理

使用jadx-gui打开一下工具jar包,在源码中找到返回包处理函数

查看一下jsp使用

继续分析调用方式,随意查看一个,返回处理过的数据内容

jar内加解密

搜索aes字符串,查找解密方法,发现在cryption下的javaaes中有解密函数

可以看到程序将shell配置按jsp shell代码流程生成的校验md5值,并且拆分成2个16位字符串,让本地加解密配置与jsp shell一一对应

关键函数

加解密函数和校验md5值查找函数

具体实现,从返回包中截取shell内容

到此发现前面总结错误,返回包内的md5值只用于认证密码和密钥,并不用于解密数据内容,程序解密是根据本地配置参数来的。

payload内容

修改jsp shell代码,使其输出base64编码的数据

“进入”功能的某个返回包

base64解码一下

继续分析发现,在“进入”操作时post数据30多KB是在加载各个函数功能

因为后续的操作是直接调用的函数,下图是调用“getBasicsInfo”函数

jar内搜索一下

思考

参考哥斯拉利用

加密:AES 编码:Base64 认证:MD5

我们可以选择异或方式来处理

先异或再编码,使用md5认证:XOR base64 MD5 先编码再异或,使用sha1认证:base64 XOR sha1

其他只要是能还原的都行(哔哔:“凯撒位移”),也许能用gzip格式来处理数据?

过流量检测的方式很多,主要还是上传的shell不被查杀,使用的内存加载方式实现,tql。相关技术介绍可以看这个《浅谈哥斯拉内存Shell技术》。

0 人点赞