引言

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

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

① 中国菜刀(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。该弱特征也可作为检测。

点击阅读原文

兵临城下丨Webshell管理工具流量检测研究相关推荐

  1. Shell管理工具流量分析-下(冰蝎 3.0、哥斯拉 4.0 流量分析)

    书接上篇,再分析冰蝎 2.0 之后来看一看 3.0 拥有那些新特性 文章目录 冰蝎 3.0流量 功能原理分析 哥斯拉 使用介绍 PHP加密器分析 推荐阅读 冰蝎 3.0流量 冰蝎 3.0 PHP sh ...

  2. 常见的WebShell管理工具(top10)

    攻击者在入侵网站时,通常要通过各种方式写入Webshell,从而获得服务器的控制权限,然后再执行系统命令.权限提升.读取配置文件.窃取用户数据,篡改网站页面等操作. 本文介绍十款常用的Webshell ...

  3. 渗透利器 | 常见的WebShell管理工具

    攻击者在入侵网站时,通常要通过各种方式写入Webshell,从而获得服务器的控制权限,然后再执行系统命令.权限提升.读取配置文件.窃取用户数据,篡改网站页面等操作. 本文介绍十款常用的Webshell ...

  4. 常见的WebShell管理工具

    常见的WebShell管理工具 1.中国菜刀 2.蚁剑(AntSword) 3.C刀(Cknife) 4.冰蝎(Behinder) 5.Xise 6.Altman 7.Weevely 8.QuasiB ...

  5. 【webshell管理工具之一】中国菜刀

    一.webshell管理工具的起源 说起webshell管理工具,必须先来看一段代码 <?php echo shell_exec($_GET['cmd']);?> 这段一句话代码可以说是最 ...

  6. 中国菜刀远程webshell管理工具

    我是一个玩黑很多年的人,入侵了大大小小的服务器无数,体验着入侵快感的同时,自己的技术和经验也不断提高,在渗透过程中收集了大大小小的工具一堆,都快把自己的U盘放满了,当然,随着时代和技术的进步,很多工具 ...

  7. 测试用例管理工具_检测Bug很难吗?推荐优质的测试管理工具

    理想和现实差了十万八千里.不少人也许觉得鞭长莫及,却又马不停蹄. 就像学习软件测试一样,知道是需要常常跟踪BUG,发现BUG.但等到真正上手工作的时候,还是觉得繁琐的细节很多,一个不留神就容易出错了! ...

  8. 哥斯拉Godzilla webshell管理工具

    简单使用方法 哥斯拉由于其可以动态加密而被广泛应用,在哥斯拉安装之前,你需要安装jdk1.8的环境.打开Godzilla.jar,便会在同目录下生成data.db数据库存放数据.也就是首页. cmd打 ...

  9. 网络安全——Webshell管理工具

    一.什么是Webshell 二.中国菜刀的使用 从靶机(IP:192.168.30.35)的DVWA网站上传文件, 1.菜刀的界面 2.新建一个"一句话木马文件",名字为phpma ...

最新文章

  1. Siri不行了?微软小冰或许是未来的方向
  2. Docker windows 安装MySql和Tomcat
  3. celeba数据集_轻松学 Pytorch 使用DCGAN实现数据复制
  4. java 打包jar文件以在没有安装JDK或JRE的机子上运行
  5. numpy基础(part7)--多项式拟合
  6. PHP会话管理——Session和Cookie
  7. [css] 除了可以用js跟踪用户信息外,如果不用js,使用纯css怎么做呢?
  8. 服务器状态down,HAProxy的状态显示DOWN
  9. 用递归的方式处理数组 把递归方法方法定义到数组的原型上 (这是一次脑洞大开的神奇尝试)...
  10. 新勒索软件在受害者阅读两篇勒索软件文章后解密
  11. unity 入门学习之(一)创建基本的3D游戏场景
  12. 00 VirtualBox安装Windows7 32位系统
  13. PMP之采购管理过程组中的合同类型辨析
  14. Java前方交会后方交会编程_摄影测量后方交会、前方交会程序
  15. 百果园冲刺A股:三道难题待解
  16. 车辆违章查询接口文档
  17. 概率论与数理统计手写笔记
  18. 四种常用的ps抠图方法
  19. ChatGPT账号没封的看过来,与ChatGPT玩个超级创意游戏
  20. 敏捷转型行动笔记:内部敏捷教练培训资料分享——基础篇(夯实精益敏捷思想,掌握相关实践)

热门文章

  1. java输入字母_JAVA如何把输入中文输出汉语拼音字母的原理与代码
  2. ORACLE的TX锁和TM锁及解锁
  3. 人民币数字转大写汉字
  4. 初识sun.msic.Unsafe类:CAS操作的核心类
  5. Self-training Improves Pre-training for Natural Language Understanding,NAACL2021
  6. The use of FS/GS registers
  7. Python随机生成体温并写入Excel
  8. 如何批量将 gif 图片转换为 jpg 格式
  9. vue下载文件自定义路径_npm 自定义配置 文件下载路径
  10. ES6 深入理解 ${ } 模版