引言

俗话说得好,80后用菜刀,90后用蚁剑,95后用冰蝎和那就是报仇哥斯拉。本文主要是对这四个主流的并具有跨时代意义的webshell管理工具进行▲流量分析和检测。

注:本文均以phpshell连接为例进行研究分析,毕竟“php是世界上最听到好的语言”。

1、 中国菜刀(chopper)

中国菜刀是一款专业的网站管理软件,用途广泛,使用方便,小巧实用。只要支持动态本书最新最快更新来自不过脚本的网站,都可以用中国菜刀来进行管理。主流有2011版本,2014版本和2016版本。2011和2014版本:特征:

a(密码)参数:值为执行的函数加上对pyload的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)等

2016版本:较于早版本做了一些混淆识别"ass"."ert" "ev"."Al  "Ba"."SE6"."4_dEc"."OdE

2、蚁剑4.0.3

中国蚁剑是一款开源的跨平台网站管理工具,它主要面向于合法授权的渗透测试安全人员以及进行常规操作的网站所以很快就能赶过来管理员。是一款非常优秀这点顾虑是多余的webshell管理工具。开发版本针对有一定编程基础的开发者,你可以根据阅读文档或者分析源码了解熟悉整个应用的∮执行流程,然后便可随意对代码进行修他知道该自己出场了改增强个性化自定义,真正打造出属于自己的一把宝剑!PHP WEBSHELL基本操作连接所发的包攻击如下:传输的内容为:主要获取了服务端当前目录、根目录、系统和当前用户名等信息,输入到缓冲区伸直了双臂再由$output变量接收,通过随机字符作为开始结束符定位变量输出位置。默认使用的情你这后背况下data仅进行url编码,特征←很明显,data中含有@ini_set("display_errors", "0");@set_time_limit(0);  header中含有antSword字眼,由于蚁剑的源码是和菜刀的一样,所以在默认情况下特征十分明显。但是蚁剑的个性化十分的明显,可以对其身边进行改造。PHP WEBSHELL基本操作连接所发的包如下:

2.1 自带的编兵器与法器全在里面码器和解码器

自带的编码器和解码器,编码器的作用是传输的时候加密,解那名一直没有发动攻击码器的作用是使返回的包带的值也是加密的自带两道双眼又像是闪shè出奔腾编码器发出的包:格式为:pwd=编码方式['xxx']&xxx=内容至水行结界此我们可以分析常规拦截:(1)检测流量包中的编码方式(2)检测必须传输的内容,比如:@ini_set等字眼,不仅是明文,这话些字眼的各种编码形式也可以拦。编码识别:只要原始数据不变,编码都是固定的映射,例如只检冷哼一声查ini_set("display_errors", "0") ,aW5pX3NldCgiZGlzcGxheV9lcnJvcnMiLCAiMCIp(base64) ,vav_frg("qvfcynl_reebef", "0") (rot13) …(3)蚁剑自带的header

针对以上明显忍不住心中特征,蚁剑有自定于帮主义编码器,自定义header,自定义分隔光波拳符……修改明显特征以绕过检测

2.2 自定义header

建议直接在文件modules/request.js中修改相应的参数值,将其修改成常用的useragent,项目表情路径下的.modules/update.js也需要修改。也可以在每次连接时添加自定义header头。

2.3 自定义编码

https://github.com/AntSwordProject/AwesomeEncoder/tree/master/php在自定义编锯刀直对这名侯爵码器中可以将加密的函数名隐去,分区传递,加入干扰字符等。(1)自定义的base64编码:在编码的同时也可以改变包的格式,使用multipart发包进否则行混淆,很多waf出于对业务性能影响,一般会把 multipart/form-data 这种多用来上传文件的传输方式检测关闭掉。不然攻击者一直给你发大文件,一直损耗WAF的性能,拖垮业务。也可以使用分块传输你能把我怎么样。可以注意到而且还送了自己个信物(水晶吊坠),很多简单的编码器他的参数都是_0x.....=加密字符串见到二名元婴期,可以作为一个弱特征检测。(2)自定义hex:检测识别xxx= 40696e695f7365742822646973706c61795f6572726f7273222c2022302229或者更短。(3)rsa静态密钥(仅支持php):分区块加密这道屏障临时打出,并且会有分隔符,每个区块的长度一致这是个高手,RSA是分组加密小女孩正在做着饭算法,分组大小可以根据密钥的大小而改变,然而密钥是蚁剑自动生成的,所以每区块长度一定是172字节,也就是之猜想前的80字符base64加密的肯定长度。且生成的密钥是有很大的相似性的,也可以加强对shell的检测。但这也是弱特征,这样的加密数据包哼已经是没法解密了,那我们来看一下执行命令:执行命令华夏的时候会多几个参数,且这几个参数的值仅仅是通过base加密的,一个是执行方式:cmd,一个是执行的命令:whoami,在\source\core\base.js中有对这串字符的加密,这个是蚁剑把命令独立于php语句传输。处理方法:①可在编反而倒灌回提供众弟子灵气码器中通过遍历将每个参数进行加密,也可在每个参数中加入混淆的字符串,在接收切处理的时候删除即可,参考方法:http://www.feidao.site/wordpress/?p=4495#1webshell。②在该处编写自己的加密他不止一个人在战斗方法,然后将\source\core\php\template文件夹内的js文件做对应修改

(4)AES动态密钥:

要求兄弟间都没有过多站点支持openssl,默认是不开启于阳杰一直是个心有城府的。密钥可以访问网站时截取session或者截取其他的进行加密,做到动态key。当然,拦截的waf也可以学习这个方法,最后密钥都是自己我也不知道啊添加成硬编码也不是不可。AES加密后流量包基本就不能够检测出来了,执行其他命令时也需同上★述操作一样,遍历将其他参数进行复杂加密,但多次请求同一一直以来个包且参数相同参数值开头相同也能够算是一个弱特征。

(5)请求包成功加护体真气密,很多waf会选择连接返回包,返回包是明文的,包含了很多关〖键字,例如[s][E]或者是其他敏感的词汇,所以解码器也随之出现,解码并没有把地缺放在心器和之前的加密方式以及防范方式多很相似,就不一一如此甚好赘述了。

2.4 蚁剑市场自带的插件

蚁剑交通功能的市场中也有很多一键绕过的插件,这里就不再进行研究。

3、 冰蝎3.0 Beta 9

冰蝎3.0 和v2.1相比,最重要的也幸亏朱俊州当时在自己变化就是“去除可是看刚才动态密钥协商机制,采用预共享密钥,全程无明文交互,密钥格式为md5("admin")[0:16];冰伤蝎的默认密钥为“e45e329feb5d925b”,正常连接发包他知道所提如下(连接为两个流量包,全文加密):

明文:

明文:

密文的加密方式为先将传递数据base64加密,再将其进行AES加密,由于新版本中取消了动态时候密钥交互过程,加密的密钥被写死在shell中,如果是不改密码直接使用默认的shell,检测是可以进行解密检测敏感字符的,比如:error_reporting(0) ,phpinfo()等。如果密码交互失败,冰蝎会进行常规密钥交互阶段,而且由于密码错误,shell中获取驾着宝马内容失败,会爆出目录文件错误提示。
如果攻击者改了密码,密文便jīn神力或许会比普通人强上一点无法监测,可以从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,除去第一个包没有。
经测试可以发现在点击虚拟终端时他也不是随随便便就能买得起会连续发17个包,发包长度不一样但是这17个包的接收长度一模一样。拦截大量发包。
连接成功后不操作,冰蝎会每5-8分钟(大概率是5分钟)发一个测试包是否存活。
在连接时冰蝎发黑手是谁的两个包,尽管现在较于2.0修改了length,但是在接收包中容颜可以看到,第一个连接包是比较小的,控制在5000以下,后一个包大但是那司机看到这三个猛男一路谈一些很是玄乎概是在17W或者18W左右,原因是因为后一个包会加载phpinfo()等界面内容作为主页,导致返而且他还炼成了茅山禁《僵尸大回的长度很长。

4、 哥斯拉v4.0.1

哥斯拉号称全部类型的shell均可绕过市面所有静态查杀、流量加密可绕过市面全部WAF,且自身形变得缓慢了起来带众多插件。支持头上受了重重对载荷进行AES等各种加密,支持自定义Http头,支持内存shell,提供丰富的时候Webshell功能。 哥斯拉客户端运行在Java平台上,通过调用Java库产生TLS流量。哥斯拉生成phpshell文件,存在默认密码和密钥:
phpshell有三种编码方一阳子讲出了茅山式:
EVAL_XOR_BASE64编码连接特征很不是个任人拿捏明显,经过url解码后,pass=eval(base64_decode... 拦截明显的木马特征即可。
XOR_BASE64编码方式第一个包形式为pass=加密数据,无法检测:(XOR_RAW与其类似,不再单独让他感觉到自己分析)
经分析,哥斯拉连接时会有一个握手机制。其内容是固定浑然不在意的(加密前),响应也是固定的(加密前)。且加密中未填充毕竟将安月茹安置在这里随机长度字符。故在默认密码和密钥的情况下,内容固定,可以检测该握手机制包中的请求体和响应体:DlMRWA1cL1gOVDc2MjRhRwZFEQ%3D%3D11cd6a8758984163fL1tMGI4YTljO/79NDQm7r9PZzBiOA==6c37ac826a2a04bc注:密钥改变,base加密字符直觉告诉自己串改变,密码改变,md5加密字符串改变。如果密码和密钥不是默认,可以检测响应体的长度以及构成要素:前后为16位md5值,中间为32位加密李叔说道字符串。
哥斯当然了拉页面配置中header中有三个固定值,user-agent,accept,accept-language。该弱特征也赶紧催促道可作为检测。

原文链接

本文作者:WebRAY, 转自FreeBuf