<HW必备>常见WebShell客户端的流量特征及检测思路

admin 2022年2月28日12:40:13评论224 views字数 3839阅读12分47秒阅读模式

0x01 概述

    开始之前先明确什么是webshell客户端?先问个问题,什么是客户端,什么是服务端?

    很简单,提供服务的就是服务端,要求被服务的就是客户端.那么回到我们的场景中,如果已经种了后门,用于连接后门的程序是要求被服务的,比如执行个ps,目的是为了得到后门所在主机的进程列表,是“被服务“的,所以称之为客户端.本文将在后续介绍一系列有关webshell客户端的流量监测手法.


0x02分析

    WebShell客户端是一种用于服务器上WebShell后门与攻击客户端之间进行通信的程序,我们通常可以根据WebShell客户端的流量来判断服务器上是否存在WebShell后门.


如今国内外常用的WebShell客户端有如下几种:

  • 中国菜刀(使用量最大,适用范围最广的WebShell客户端);

  • 蚁剑(一种常用的WebShell客户端);

  • 冰蝎(流量加密客户端);

  • Cknife(C刀,使用Java语言编写)

  • Weevely(kali中的中国菜刀).

接下来分别介绍其流量特征.


一、 中国菜刀(Chopper)

<HW必备>常见WebShell客户端的流量特征及检测思路

    中国菜刀自诞生以来已经历了多个版本的更新,其功能、隐秘性也随着更新得到很大提升.菜刀现在主流有三个版本在使用,分别为2011版、2014版、2016版,这三个版本中从2011版本到2014版本是功能性上进行了增强,从2014版本到2016版本是在隐秘性上进行了增强,2016版本的菜刀流量加入了混淆,使其链接流量更具有混淆性.


    中国菜刀基本支持PHP、JSP、ASP这三种WebShell的连接,这三种语言所对应的流量各有差异,各个版本也有不用.下面将按照不同版本不同语言组合进行分析.其中2011版和2014版菜刀流量特征基本一致,所以放在一起分析.

中国菜刀2011版本及2014版本各语言WebShell链接流量特征


(1)PHP类WebShell链接流量

<HW必备>常见WebShell客户端的流量特征及检测思路

其中特征主要在body中,将body中流量进行url解码后如下:

<HW必备>常见WebShell客户端的流量特征及检测思路

其中特征点有如下三部分,

第一:“eval”,eval函数用于执行传递的攻击payload,这是必不可少的;

第二:(base64_decode($_POST[z0])),(base64_decode($_POST[z0]))将攻击payload进行Base64解码,因为菜刀默认是将攻击载荷使用Base64编码,以避免被检测;

第三:&z0=QGluaV9zZXQ...,该部分是传递攻击payload,此参数z0对应$_POST[z0]接收到的数据,该参数值是使用Base64编码的,所以可以利用base64解码可以看到攻击明文.


注:

1.有少数时候eval方法会被assert方法替代.

2.$_POST也会被$_GET、$_REQUEST替代.

3.z0是菜刀默认的参数,这个地方也有可能被修改为其他参数名.


(2)JSP类WebShell链接流量:

<HW必备>常见WebShell客户端的流量特征及检测思路

    该流量是WebShell链接流量的第一段链接流量,其中特征主要在i=A&z0=GB2312,菜刀链接JSP木马时,第一个参数定义操作,其中参数值为A-Q,如i=A,第二个参数指定编码,其参数值为编码,如z0=GB2312,有时候z0后面还会接着又z1=参数用来加入攻击载荷.


注:其中参数名i、z0、z1这种参数名是会变的,但是其参数值以及这种形式是不会变得,最主要就是第一个参数值在A-Q,这种是不变的.

(3)ASP类WebShell链接流量:

<HW必备>常见WebShell客户端的流量特征及检测思路

其中body流量进行URL解码后

<HW必备>常见WebShell客户端的流量特征及检测思路

其中特征点有如下三部分,

第一:“Execute”,Execute函数用于执行传递的攻击payload,这是必不可少的,这个等同于php类中eval函数;

第二:OnError ResumeNext,这部分是大部分ASP客户端中必有的流量,能保证不管前面出任何错,继续执行以下代码.

第三:Response.Write和Response.End是必有的,是来完善整个操作的.

这种流量主要识别这几部分特征,在正常流量中基本没有.


注:OnError Resume Next这个特征在大部分流量中存在,极少数情况没有.

中国菜刀2016版本各语言WebShell链接流量特征

PHP类WebShell链接流量

<HW必备>常见WebShell客户端的流量特征及检测思路

其中特征主要在body中,将body中部分如下:

<HW必备>常见WebShell客户端的流量特征及检测思路

这个版本中流量最大的改变就是将特征进行打断混淆,这也给我们识别特征提供一种思路.其中特征点有如下三部分,

第一:“"Ba"."SE6"."4_dEc"."OdE”,这部分是将base64解码打断使用.来连接.

第二:@ev"."al,这部分也是将@eval这部分进行打断连接,可以识别这段代码即可.

第三:QGluaV9zZXQoImRpc3BsYXlf...,该部分是传递攻击payload,payload依旧使用Base64编码的,所以可以利用base64解码可以看到攻击明文来识别.


注:1.有少数时候eval方法会被assert方法替代.


JSP类WebShell链接流量:

<HW必备>常见WebShell客户端的流量特征及检测思路

    该版本JSPwebshell流量与之前版本一样,所以分析如上:该流量是WebShell链接流量的第一段链接流量,其中特征主要在i=A&z0=GB2312,菜刀链接JSP木马时,第一个参数定义操作,其中参数值为A-Q,如i=A,第二个参数指定编码,其参数值为编码,如z0=GB2312,有时候z0后面还会接着又z1=、z2=参数用来加入攻击载荷.


注:其中参数名i、z0、z1这种参数名是会变的,但是其参数值以及这种形式是不会变得,最主要就是第一个参数值在A-Q,这种是不变的.

ASP类WebShell链接流量:

<HW必备>常见WebShell客户端的流量特征及检测思路

其中body流量为:

<HW必备>常见WebShell客户端的流量特征及检测思路

    2016版本流量这链接流量最大的变化在于body中部分字符被unicode编码替换混淆,所以这种特征需要提取出一种形式来,匹配这个混淆特征,比如“字符+%u0000+字符+%u0000”这种形式来判断该流量.或者直接将这部分代码直接进行unicode解码,可以获取到如2011或2014版本的asp所示的流量.可以根据上一段特征来进行判断.这种流量主要识别这几部分特征,在正常流量中基本没有.


二、中国蚁剑(AntSword)

<HW必备>常见WebShell客户端的流量特征及检测思路

    蚁剑的很多代码源于中国菜刀,所以他的链接流量与中国菜刀很相似,但是蚁剑可以扩充性很好,可以对进行加密、混淆等绕过处理.蚁剑默认支持ASP以及PHP的webshell链接.


蚁剑PHP类WebShell链接流量

<HW必备>常见WebShell客户端的流量特征及检测思路

其中body流量进行URL解码后为:

<HW必备>常见WebShell客户端的流量特征及检测思路

    其中流量最中明显的特征为@ini_set("display_errors","0");这段代码基本是所有WebShell客户端链接PHP类WebShell都有的一种代码,但是有的客户端会将这段编码或者加密,而蚁剑是明文,所以较好发现.


蚁剑ASP类WebShell链接流量

<HW必备>常见WebShell客户端的流量特征及检测思路

其中body流量进行URL解码后为:

<HW必备>常见WebShell客户端的流量特征及检测思路

    我们可以看出蚁剑针对ASP类的WebShell流量与菜刀的流量很像,其中特征也是相同,如OnError ResumeNext、Response.End、Response.Write,其中execute在蚁剑中被打断混淆了,变成了拼接形式Ex"&cHr(101)&"cute,同时该流量中也使用了eval参数,可以被认为明显特征.

蚁剑绕过特征流量


    由于蚁剑中包含了很多加密、绕过插件,所以导致很多流量被加密后无法识别,但是蚁剑混淆加密后还有一个比较明显的特征,即为参数名大多以“_0x......=”这种形式(下划线可替换为其他),如下图:

<HW必备>常见WebShell客户端的流量特征及检测思路

    所以,以_0x开头的参数名,后面为加密数据的数据包也可识别为蚁剑的流量特征.

三、冰蝎

<HW必备>常见WebShell客户端的流量特征及检测思路

    其中冰蝎是近几年出现的一种WebShell客户端,该链接器最大的特点就是流量进行加密,且加密秘钥是由使用者来设定,但是该拦截器对WebShell的需求比较高,无法连接一句话木马,综上,该客户端的流量无法检测.关于其工作原理及功能介绍作者已经详细介绍:


功能介绍链接:

《利用动态二进制加密实现新型一句话木马之客户端篇》

https://xz.aliyun.com/t/2799

工作原理链接:

《利用动态二进制加密实现新型一句话木马之Java篇》

https://xz.aliyun.com/t/2744

《利用动态二进制加密实现新型一句话木马之.NET篇》

https://xz.aliyun.com/t/2758

《利用动态二进制加密实现新型一句话木马之PHP篇》

https://xz.aliyun.com/t/2774

四、Cknife

<HW必备>常见WebShell客户端的流量特征及检测思路

Cknife流量的特征就是在body部分的参数值均为base64编码,将该部分进行base64解码后,其流量特征同中国菜刀一致,所以不再另行展开分析

五、Weevely

<HW必备>常见WebShell客户端的流量特征及检测思路

Weevely是kail中自带的一款功能强大的WebShell客户端,该链接器首先自己生成webshell,在将该webshell上传至目的服务器后,通过Weevely进行链接,该链接流量属于加密流量,但是在该流量中还可以发现特征,进行区分.

<HW必备>常见WebShell客户端的流量特征及检测思路

该流量中的攻击载荷存在于Referer中,其中Referer中的路径中php的查询参数有以下参数名或值,即sa=、source=web、cd=数字、url=、ei=,即可确定该流量为客户端流量.

<HW必备>常见WebShell客户端的流量特征及检测思路



本文始发于微信公众号(洛米唯熊):<HW必备>常见WebShell客户端的流量特征及检测思路

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年2月28日12:40:13
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   <HW必备>常见WebShell客户端的流量特征及检测思路http://cn-sec.com/archives/497181.html

发表评论

匿名网友 填写信息