哥斯拉源码分析(二)jsp shell分析

admin 2022年4月22日00:32:29评论213 views字数 1022阅读3分24秒阅读模式

前言


紧接上文,开始继续分析生成的shell。下篇分析shell的连接过程。


shell分析


把生成的jspshell拖到ide里面格式化一下,开摆。

哥斯拉源码分析(二)jsp shell分析


我这里就从上往下开始分析。

开始是定义了三个变量:

1. aes密钥(md5取前16位,后面用于流量加密)、

2. 密码(后面作为http参数传递payload),

3. md5标识(由pass+key通过md5生成,后面会用于标识区分命令执行结果)


哥斯拉源码分析(二)jsp shell分析

接着是定义了一个名为X的类加载,里面简单粗暴定义一个Q方法用于加载类。


后面紧跟着x方法,这是aes加解密一体的方法。加密解密由传入的参数m控制。

哥斯拉源码分析(二)jsp shell分析


接着往下看,就是md5加密和base64编码解码方法

哥斯拉源码分析(二)jsp shell分析

哥斯拉源码分析(二)jsp shell分析


再往下就到了核心代码,这里我都加了注释,可以很容易看懂。

哥斯拉源码分析(二)jsp shell分析


首先是获取由生成shell定义的pass作为参数,接收传入的payload进行解密。

哥斯拉源码分析(二)jsp shell分析


如果我生成的密码设置为safe6那么传入的payload就是safe6=xxxxxxxxxxxxxxxxxxxxxxxxxx

用burp简单抓包看看,我生成的shell默认密码就是pass,默认的我没改。

哥斯拉源码分析(二)jsp shell分析


把数据解密,之后开始判断session里面有没有payload,如果没有就调用上面的自定义加载器把payload加载到内存,并把对应的class对象保存到session里面,方便后续使用。

这个payload具体是什么后面的文章会讲到。这里就简单提一嘴,shell所有核心功能都在payload里面。

哥斯拉源码分析(二)jsp shell分析


要是payload存在,把收到的,解密后的数据存入request。然后取出第一次存入session里面的payload进行初始化

哥斯拉源码分析(二)jsp shell分析


这里需要重点关注,第一次连接发过来的payload(shell初始化发送),后续都是围着这个payload转。


随后就调用payload的equals和toString方法。这两个都被重写了,后续文章会讲到。

还需要注意下toString方法,也就是执行返回的结果,前后会插入两个标识(md5分成了两半)。文章开头有讲到。

哥斯拉源码分析(二)jsp shell分析


具体返回的数据包如下。

哥斯拉源码分析(二)jsp shell分析


从这里就可以知道哥斯拉shell流量很大的一个特征就是返回包首尾都一样。


最后

1.生成的shell是固定的,可以改造成多种形式的shell,让生成的shell自带免杀。

2. 从流量也能明显猜出是哥斯拉,第一次连接会发一个大的payload,之后每次请求,返回包流量头尾固定。



原文始发于微信公众号(safe6安全的成长日记):哥斯拉源码分析(二)jsp shell分析

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年4月22日00:32:29
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   哥斯拉源码分析(二)jsp shell分析http://cn-sec.com/archives/933299.html

发表评论

匿名网友 填写信息