菜刀、蚁剑、冰蝎三款Webshell工具对比分析

中国菜刀

中国菜刀(Chopper)是一款经典的网站管理工具,具有文件管理、数据库管理、虚拟终端等功能。

它的流量特征十分明显,现如今的安全设备基本上都可以识别到菜刀的流量。现在的菜刀基本都是在安全教学中使用。

菜刀webshell的静态特征

菜刀使用的webshell为一句话木马,特征十分明显

常见一句话(Eval):

PHP, ASP, ASP.NET 的网站都可以:

PHP:    <?php @eval($_POST['caidao']);?>

ASP:    <%eval request("caidao")%>

ASP.NET:    <%@ Page Language="Jscript"%><%eval(Request.Item["caidao"],"unsafe");%>

菜刀webshell的动态特征、

请求包中:

ua头为百度爬虫

请求体中存在eavl,base64等特征字符

请求体中传递的payload为base64编码,并且存在固定的QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtpZihQSFBfVkVSU0lPTjwnNS4zLjAnKXtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO307ZWNobygiWEBZIik7J

参数特征:

a(密码)参数:值为执行的函数加上对payload的base64解码

Z0参数:base64加密的payload

Z1参数:shell存在的位置

如何识别

(1)执行函数:@eval,@assert 等;

(2)base64_decode($_POST[Z0]),$_GET,$_REQUEST

(3)截取参数z0,进行base64_decode后 ,

@ini_set(“display_errors”,”0″);@set_time_limit(0);@set_magic_quotes_runtime(0)等

(4)从请求侧的代码来看,执行结果会被包裹在->| |<-中

蚁剑

AntSword(蚁剑)是一个开放源代码,跨平台的网站管理工具,旨在满足渗透测试人员以及具有权限和/或授权的安全研究人员以及网站管理员的需求。可以自定义编码器。

蚁剑webshell静态特征

https://github.com/AntSwordProject/AwesomeScript蚁剑官方为我们提供了制作好的后门,官方的脚本均做了不同程度“变异”,蚁剑的核心代码是由菜刀修改而来的,所有普通的一句话木马也可以使用。

php中使用assert,eval执行, asp 使用eval ,在jsp使用的是Java类加载(ClassLoader),同时会带有base64编码解码等字符特征

蚁剑webshell动态特征

默认编码连接时

这里我们直接使用菜刀的一句话webshell

每个请求体都存在@ini_set(“display_errors”, “0”);@set_time_limit(0)开头。并且存在base64等字符响应包的结果返回格式为  随机数 结果  随机数

使用base64编码器和解码器时

蚁剑会随机生成一个参数传入base64编码后的代码,密码参数的值是通过POST获取随机参数的值然后进行base64解码后使用eval执行

响应包的结果返回格式为  随机数 编码后的结果  随机数

(1)编码器

编码器是在发送数据到服务端之前对payload进行相关处理,目的是为了绕过请求侧的流量检测,默认的编码器:

  1. default编码器:不对传输的payload进行任何操作。
  2. base64编码器:对payload进行base64编码。
  3. chr编码器:对payload的所有字符都利用利用chr函数进行转换。
  4. chr16编码器:对payload的所有字符都利用chr函数转换,与chr编码器不同的是chr16编码器对chr函数传递的参数是十六进制。
  5. rot13编码器:对payload中的字母进行rot13转换。
  6. 以上五种编码为中国蚁剑自带的,不需要配置就可以直接使用,除此之外,还存在一个RSA编码器,该编码器将
  7. RSA编码器:该编码器默认不展示,需要自己配置。配置方法:在编码管理界面点击生成RSA配置生成公钥、私钥和PHP代码,然后点击新建编码器选择PHP RSA之后输入编码器的名字即可。

(2)解码器

解码器主要是对接收到的数据进相关处理,目的是为了绕过响应侧的流量检测,默认的解码器:

  1. default解码器:不对响应数据进行处理。
  2. base64解码器:将收到的数据进行base64解码。
  3. rot13解码器:将收到的数据进行rot13转换,由于英文字母一共26个所以置换两次之后会还原。

冰蝎

冰蝎是一款动态二进制加密网站管理客户端。

冰蝎2.0 webshell木马动态特征

在了解冰蝎3.0之前,先看看2.0是怎么交互等

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-length 为5740或5720(可能会根据Java版本而改变)

每一个请求头中存在Pragma: no-cache,Cache-Control: no-cache

冰蝎3.0 和v2.1相比,最重要的变化就是“去除动态密钥协商机制,采用预共享密钥,全程无明文交互,密钥格式为md5(“admin”)[0:16];冰蝎的默认密钥为“e45e329feb5d925b”

密文的加密方式为先将传递数据base64加密,再将其进行AES加密,由于新版本中取消了动态密钥交互过程,加密的密钥被写死在shell中,如果是不改密码直接使用默认的shell,检测是可以进行解密检测敏感字符的,比如:error_reporting(0) ,phpinfo()等。

如果密码交互失败,冰蝎会进行常规密钥交互阶段,而且由于密码错误,shell中获取内容失败,会爆出目录文件错误提示。

如果攻击者改了密码,密文便无法监测,可以从header头入手,首先是user-agent,内置的25个ua请求头,不自定义的话太老,可以在其源码constants.class中自行更改。 

初始化的Accept,Accept-Language,Content-type这三个的值也是一个固定值,且Content-type为小写t,这也可以作为一个监测点。具体值如下: 

“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”

“Accept-Language”, “zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7”

“Content-type”, “application/x-www-form-urlencoded”

或者

“Accept”, “text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8”

“Accept-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”

“Content-type”, “application/x-www-form-urlencoded”

referer:连接的两个包referer中的文件名都是随机生成的,但文件名是纯大写或者是纯小写,可作为一个弱特征检测。

Cookie:冰蝎的机制是需要从set-cookie中去取值,所以在发包中即使是有了cookie,他的接收包中都会有setcookie,除去第一个包没有。

哥斯拉

哥斯拉号称全部类型的shell均可绕过市面所有静态查杀、流量加密可绕过市面全部WAF,且自带众多插件。支持对载荷进行AES等各种加密,支持自定义Http头,支持内存shell,提供丰富的Webshell功能。 哥斯拉客户端运行在Java平台上,通过调用Java库产生TLS流量。哥斯拉生成phpshell文件,存在默认密码和密钥: 

哥斯拉webshell木马静态特征

选择默认脚本编码生成的情况下,jsp会出现xc,pass字符和Java反射(ClassLoader,getClass().getClassLoader()),base64加解码等特征

 EVAL_XOR_BASE64编码连接特征很明显,经过url解码后,pass=eval(base64_decode… 拦截明显的木马特征即可。

哥斯拉webshell动态特征  

哥斯拉页面配置中header中有三个固定值,user-agent,accept,accept-language。该弱特征也可作为检测。

所有请求中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中后面都存在;特征

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值