
菜刀流量/冰蝎流量
菜刀流量
数据包流量特征:
1,请求包中:ua头为百度,火狐
2,请求体中存在eavl,base64等特征字符
3,请求体中传递的payload为base64编码,并且存在固定的QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtpZihQSFBfVkVSU0lPTjwnNS4zLjAnKXtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO307ZWNobygiWEBZIik7J
4.常常使用”application/x-www-form-urlencoded“发送指令
解题思路:
1.根据题目提示,我们过滤出POST数据包。(菜刀一般使用POST上传)
相关过滤命令:http.request.method==POST
2.过滤之后寻找特定流量,找到flag
例题:BUUCTF 菜刀666
1.题目明示这是道菜刀流量题,直接开始过滤流量:
能看到确实有很多符合菜刀流量的特征
(如:application/x-www-form-urlencoded)
2.分析流量,先粗略浏览一遍,看到一条流量明显与其他流量不太合群:
追踪http流量:
能看到有url、base64编码,就先对其解码:
这条是个典型的PHP
WebShell 脚本,但对解题并没有什么帮助
而在base64编码的后面,有一段更加值得注意的信息:
FFD8FF:典型的jpg图片开头16进制码
也就是说流量包里面藏了张jpg图片
将其16进制码复制进010Editor中,选用导入16进制:
然后保存格式为.jpg,就能看到一张图片:
然而,这并非最终flag,解题还未结束
我们再回到流量包中,继续寻找经过滤后的流量,又看到:
最底下的两条流量长度明显短于其他流量,追踪http流看到:
将其进行分离:
命令解释:tcpxtract -f :指定要分离的流量包文件
-o:指定文件分离后输入进的文件夹名
成功在名为”1“的文件夹中得到一个压缩包:
果不其然,这个压缩包需要密码
输入密码:Th1s_1s_p4sswd_!!!
得到flag{3OpWdJ-JP6FzK-koCMAK-VkfWBq-75Un2z}
冰蝎流量
1.1 简介
冰蝎是一款基于Java开发的动态加密通信流量的新型Webshell客户端,由于通信流量被加密,传统设备难以检测。
冰蝎其最大特点就是对交互流量进行对称加密,且加密密钥是由随机数函数动态生成,因此该客户端的流量几乎无法检测。而老牌的如中国菜刀因为其流量特征太过明显,从而使用的场景越来越少。
1.2 冰蝎的加密原理
以PHP版本为例,"冰蝎"在服务端支持openssl时,使用AES加密算法,密钥长度16位,也可称为AES-16。此在软件及硬件(英特尔处理器的AES指令集包含六条指令)上都能快速地加解密,内存需求低,非常适合流量加密。
流程:
1、首先客户端以Get形式发起带密码的请求。(根据实际情况也有POST的请求方式)
2、服务端产生随机密钥,将密钥写入Session并将密钥返回客户端。
3、客户端获取密钥后,将payload用AES算法加密,用POST形式发送请求。
4、服务端收到请求,用Session中的密钥解密请求的Body部分,之后执行Payload,将直接结果返回到客户端。
5、客户端获取返回结果,显示到UI界面上。
1.3 冰蝎流量特征
1、Accept字段
Accept-Language:
zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7
这个基本是固定的
2、Content-Type
Content-type:
Application/x-www-form-urlencoded
这个也基本是固定的
3、冰蝎生成的服务端webshell中存在固定代码
以php为例:
(file_get_contents(“php://input”));
4、固定的请求头和响应头
请求:
3Mn1yNMtoZViV5wotQHPJtwwj (每个连接请求头和响应头都不一样的,但是本次连接以后的请求头和响应头都是固定的) 响应:
mAUYLzmqn5QPDkyI5lvSp0fjiBu1e7047Yj
5、连接密码
默认时,所有冰蝎4.0 webshell都有“e45e329feb5d925b” 一串密钥。该密钥为连接密码32位md5值的
前16位,默认连接密码rebeyond(自己使用是可以更改密码的)