前言
近期开始学应急响应,发现了自己在webshell这块还有诸多盲区,所以专门写一个常见webshell工具特征分析,来记录方便日后查阅。
webshell简介
WebShell
是黑客经常使用的一种恶意脚本,其目的是获得服务器的执行操作权限,常见的webshell编写语言为asp
/jsp
/php
。主要用于网站管理,服务器管理,权限管理等操作。使用方法简单,只需要上传一个代码文件,通过网址访问,便可进行很多日常操作,极大地方便了使用者对网站的服务器的管理。所以小部分人将代码修改后当作后门程序使用,以达到控制网站服务器的目的。
那么最常见的当然是我们的一句话木马了,例如
<?php @eval($_POST['shell']);?>
<?php system($_REQUEST['cmd']);>
这一类的木马,只需要将相关的一句话木马(代码量不大)写入php或者asp中,上传至服务器用webshell工具连接即可。而许多常见的webshell工具自带了许多木马脚本,所以就开始分析一些常见的木马脚本,来看看其中奥妙。
webshell工具木马特征分析
首先我们来分析中国菜刀
菜刀
中国菜刀是一块经典的网站管理工具了,但是因为其流量特征十分明显,几乎所有的安全设备都能识别到了,所以一般都是用来教学使用,我们打开他的项目地址就可以看到最新的版本已经是16年的了已经有8年的差距了。菜刀使用的webshell为一句话木马,特征十分明显PHP, ASP, ASP.NET 的网站都可以:
PHP: <?php @eval($_POST['caidao']);?>
ASP: <%eval request("caidao")%>
ASP.NET: <%@ Page Language="Jscript"%><%eval(Request.Item["caidao"],"unsafe");%>
数据包流量特征:
1,请求包中:ua头为百度,火狐
2,请求体中存在eavl,base64等特征字符
3,请求体中传递的payload为base64编码,并且存在固定的QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtpZihQSFBfVkVSU0lPTjwnNS4zLjAnKXtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO307ZWNobygiWEBZIik7J
antsword蚂蚁舰队
AntSword(蚁剑)是一个开放源代码,跨平台的网站管理工具,旨在满足渗透测试人员以及具有权限和/或授权的安全研究人员以及网站管理员的需求。github项目地址: https://github.com/AntSwordProject/antSword
蚁剑官方提供一些制作好的后门:https://github.com/AntSwordProject/AwesomeScript。在php
中使用assert
,eval
等命令执行:
asp 使用eval ,在jsp使用的是Java类加载(ClassLoader),同时会带有base64编码解码等字符特征
asp中使用的是eval
命令执行:
在jsp
使用的是Java
类加载(ClassLoader
),同时会带有base64
编码解码等字符特征
当使用普通的一句话木马都存在以下特征:每个请求体都存在@ini_set(“display_errors”, “0”);@set_time_limit(0)开头。并且后面存在base64等字符
每一个请求体都存在@ini_set("display_errors",“0”);@set_time_limit(0)
开头。并且存在base64
等字符相应包的结果返回格式为: 随机数+结果+随机数
冰蝎
冰蝎是一款动态二进制加密网站管理客户端。冰蝎作为一个比较强大的工具,目前已经到了4.0版本时代,其最大特点是对交互流量进行AES对称加密,且加密密钥是由随机数函数动态生成,传统的 WAF、IDS 设备难以检测,给防守带来较大挑战。冰蝎4.0版本增加了多项功能,如允许用户自定义多类传输协议,并根据传输协议动态生成服务端等。
github地址:https://github.com/rebeyond/Behinder冰蝎文件夹中,server 文件中存放了各种类型的木马文件
那么在冰蝎的木马代码中同样会存在eval或assert等字符特征
jsp利用的java的反射,所以会存在ClassLoader,getClass().getClassLoader()等字符特征
关于冰蝎的流量特征
我们先不分析这段加密的密文,相关细致的分析可以见参考文章的冰蝎v4.0流量分析
结合一些资料我们总结一下冰蝎的流量特征:
-
Content-Length
显然其数值相对常规的较大,可以作为辅助特征进行检测:Content-Length: 5824
-
长连接
冰蝎通讯默认使用长连接,避免了频繁的握手造成的资源开销。默认情况下,请求头和响应头里会带有Connection: Keep-Alive
,可将其作为辅助特征进行检测。 -
PHP webshell 中存在固定代码
可以将eval($post)
作为流量特征纳入。 -
content-Type字段:Application/x-www-form-urlencoded
-
webshell会有一段连接32位md5值的前16位,默认连接密码为rebeyond;
哥斯拉
哥斯拉是一款webshell权限管理工具,由java语言开发。它的特点有:全部类型的shell能绕过市面大部分的静态查杀、流量加密能绕过过市面绝大部分的流量Waf、Godzilla自带的插件是冰蝎、蚁剑不能比拟的。它能实现的功能除了传统的命令执行、文件管理、数据库管理之外,根据shell类型的不同还包括了:MSF联动、绕过OpenBasedir、ZIP压缩、ZIP解压、代码执行、绕过 DisableFunctions、Mimikatz
github下载地址:https://github.com/BeichenDream/Godzilla
哥斯拉并未开源,如果想要分析他的shell文件需要,反编译。我们利用jd工具来反编译一下。
选择默认脚本编码生成的情况下,jsp会出现xc,pass字符和Java反射(ClassLoader,getClass().getClassLoader()),base64加解码等特征
哥斯拉利用WebShell
方式是:通过AES
加密 -> Base64
编码 -> 再通过MD5
认证 -> 最后执行相关代码
那么总结一些下
在所有请求中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中后面都存在;特征