首页 » PHP教程 » phpwebshell2014技巧_Webshell治理对象流量检测研究

phpwebshell2014技巧_Webshell治理对象流量检测研究

访客 2024-12-06 0

扫一扫用手机浏览

文章目录 [+]

弁言

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

phpwebshell2014技巧_Webshell治理对象流量检测研究

注:本文均以phpshell连接为例进行研究剖析,毕竟“php是天下上最好的措辞”

phpwebshell2014技巧_Webshell治理对象流量检测研究
(图片来自网络侵删)

① 中国菜刀(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

② 蚁剑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 自带的编码器和解码器

自带的编码器和解码器,编码器的浸染是传输的时候加密,解码器的浸染是使返回的包带的值也是加密的

自带编码器发出的包:格式为: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.0 Beta 9

冰蝎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,撤除第一个包没有。

经测试可以创造在点击虚拟终端时会连续发17个包,发包长度不一样但是这17个包的吸收长度千篇一律。
拦截大量发包。

连接成功后不操作,冰蝎会每5-8分钟(大概率是5分钟)发一个测试包是否存活。

在连接时冰蝎发的两个包,只管现在较于2.0修正了length,但是在吸收包中可以看到,第一个连接包是比较小的,掌握在5000以下,后一个包大概是在17W或者18W旁边,缘故原由是由于后一个包会加载phpinfo()等界面内容作为主页,导致返回的长度很长。

④ 哥斯拉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%3D

11cd6a8758984163fL1tMGI4YTljO/79NDQm7r9PZzBiOA==6c37ac826a2a04bc

注:密钥改变,base加密字符串改变,密码改变,md5加密字符串改变。

如果密码和密钥不是默认,可以检测相应体的长度以及构成要素:前后为16位md5值,中间为32位加密字符串。

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

原文链接:

https://mp.weixin.qq.com/s?__biz=MzAwNTAxMjUwNw==&mid=2650269176&idx=1&sn=f6655fb7a1045dae66469993a537613f&chksm=8320688cb457e19a061bba2e95f97c0b9a6749258441171da0c4e4971169a52a4ff9ea470d27&token=152334928&lang=zh_CN#rd

标签:

相关文章