冰蝎

特征

静态

冰蝎3文件夹中,server 文件中存放了各种类型的木马文件
采用采用预共享密钥,比如:密钥格式为md5(“admin”)[0:16], 所以在各种语言的webshell中都会存在16位数的连接密码,默认变量为k。
在PHP中会判断是否开启openssl采用不同的加密算法,在代码中同样会存在eval或assert等字符特征
在aps中会在for循环进行一段异或处理
在jsp中则利用java的反射,所以会存在ClassLoader,getClass().getClassLoader()等字符特征

动态

冰蝎2:

  • 2.0中采用协商密钥机制。第一阶段请求中返回包状态码为200,返回内容必定是16位的密钥
    • Accept: text/html, image/gif, image/jpeg, ; q=.2, /*; q=.2
  • 建立连接后 所有请求 Cookie的格式都为: Cookie: PHPSESSID=; path=/;

冰蝎3.0 webshell木马动态特征:

  • 3.0中改了,去除了动态密钥协商机制,采用预共享密钥,全程无明文交互,密钥格式为md5(“admin”)[0:16],但还是会存在一些特征
  • content-type
  • Accept&Cache-Control
  • 内置16个ua头
  • content-length请求长
  • 在使用命令执行功能时,请求包中content-length 为5740或5720(可能会根据Java版本而改变)
  • 每一个请求头中存在Pragma: no-cache,Cache-Control: no-cache

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8,application/signed-exchange;v=b3;q=0.9

蚁剑

特征

静态

https://github.com/AntSwordProject/AwesomeScript蚁剑官方为我们提供了制作好的后门,官方的脚本均做了不同程度“变异”,蚁剑的核心代码是由菜刀修改而来的,所有普通的一句话木马也可以使用。
Php中使用assert,eval执行, asp 使用eval ,在jsp使用的是Java类加载(ClassLoader),同时会带有base64编码解码等字符特征

动态

默认编码

  • 直接使用菜刀的一句话webshell
  • 每个请求体都存在@ini_set(“display_errors”, “0”);@set_time_limit(0)开头。并且存在base64等字符
  • 响应包的结果返回格式为 随机数 结果 随机数
  • 可以对流量进行加密、混淆。但是有些关键代码没有被加密,如:PHP中的ini_set;ASP中的OnError,response等

    base64编码器&解码器

    蚁剑会随机生成一个参数传入base64编码后的代码,密码参数的值是通过POST获取随机参数的值然后进行base64解码后使用eval执行
    响应包的结果返回格式为 随机数 编码后的结果 随机数

去特征

有了编码器和解码器,进行流量混淆可绕过WAF,并且编码器和解码器可以自定义,使用nodejs编写即可,类似于插件很容易上手,先简单说明下编码器和解码器的作用。

  • 编码器:对发送流量进行编码,服务端进行解码。
  • 解码器:服务端对返回流量编码,需要客户端通过解码器解码还原流量接收。

一个对发送加密,一个对返回加密,这样才能达到完美过WAF的目的,但原版蚁剑会有一个问题,只支持php的编码解码,所以需要改造蚁剑支持asp、aspx。
而jsp这个比较麻烦,他不是脚本语言,没有eval/execute等函数可以用来直接执行代码,使用过菜刀的都知道,jsp的”一句话”非常大,如果要达到冰蝎那样短小的webshell,并且实现加密,得使用冰蝎的方式来实现,类加载,将命令执行、文件管理等操作编译成class,硬编码到蚁剑里,然后传给服务端解析,工作量比较大,当然有人已经实现了蚁剑版的jsp一句话,但只做到了base64和hex编码发送,有人特意分析还是有比较明显特征的,而且返回包也没有做加密处理.
蚁剑流量分析到改装蚁剑之waf绕过 https://www.t00ls.net/articles-50892.html
从静态到动态打造一款免杀的antSword(蚁剑) https://xz.aliyun.com/t/4000
编码器、解码器 https://github.com/AntSwordProject/AwesomeEncoder
https://xz.aliyun.com/t/7735

哥斯拉

特征

静态:

  • 选择默认脚本编码生成的情况下,jsp会出现xc,pass字符和Java反射(ClassLoader,getClass().getClassLoader()),base64加解码等特征
  • php,asp则为普通的一句话木马, 无论php还是jsp都有pass=

动态:

  • 所有请求中Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8
  • 所有响应中Cache-Control: no-store, no-cache, must-revalidate,

以上两个只能作为弱特征参考
同时在所有请求中Cookie中后面都存在;特征

菜刀

特征

动态

1,请求包中:ua头为百度爬虫
2,请求体中存在eavl,base64等特征字符
3,请求体中传递的payload为base64编码,并且存在固定的QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtpZihQSFBfVkVSU0lPTjwnNS4zLjAnKXtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO307ZWNobygiWEBZIik7J
@ini_set(“display_errors”,”0”);@set_time_limit(0);if(PHP_VERSION<’5.3.0’){@set_magic_quotes_runtime(0);};echo(“X@Y”);

  1. 请求体中执行结果响应为明文,格式为X@Y 结果 X@Y之中

    菜刀 webshell 只使用了 url 编码 + base64 编码 shell 特征就是传输参数名为 z0,还存在int_set(“display_erros”,”0”)字符串特征

http://ngc660.cn/2022/03/webshell%e7%ae%a1%e7%90%86%e5%b7%a5%e5%85%b7%e6%b5%81%e9%87%8f%e6%a3%80%e6%b5%8b%e7%a0%94%e7%a9%b6%ef%bc%9achopper%e3%80%81%e8%9a%81%e5%89%91%e3%80%81%e5%86%b0%e8%9d%8e%e3%80%81%e5%93%a5%e6%96%af/
https://www.freebuf.com/column/204796.html