前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >哥斯拉Godzilla运行原理探寻

哥斯拉Godzilla运行原理探寻

作者头像
FB客服
发布2020-11-23 15:38:27
2.6K0
发布2020-11-23 15:38:27
举报
文章被收录于专栏:FreeBufFreeBuf

前段时间在这里看到这个工具:哥斯拉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技术》。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-11-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 探寻原理
    • 密码(pass)和密钥(key)
      • 认证代码分析
        • md5使用
          • jar返回处理
            • jar内加解密
              • 关键函数
                • payload内容
                • 思考
                相关产品与服务
                腾讯云代码分析
                腾讯云代码分析(内部代号CodeDog)是集众多代码分析工具的云原生、分布式、高性能的代码综合分析跟踪管理平台,其主要功能是持续跟踪分析代码,观测项目代码质量,支撑团队传承代码文化。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档