一、识别中国菜刀
1、环境搭建:
(1)先在测试网站里写一个一句话木马文件
<?php eval($_POST[1]); ?>
(2)使用菜刀连接
建立连接
刷新后连接成功:
2、分析中国菜刀流量
使用Wireshark抓取流量,通过菜刀不断浏览目标网站文件目录来创建流量。
分析流量
锁定特征:
Form item: "1" = "@eval(base64_decode($_POST[z0]));"
具体位置
@eval\001(base64_decode($_POST[z0])); #001代码无法识别字符
3、编写规则与测试
编写正则表达式:
@的十六进制:0x40,在suricata十六进制表述方式:|40|
eval:直接填
\001(:|01 28|,因为\001是无法识别的字符,则使用0x01作为占位符来代表它。(为0x28。
base64_decode直接填写。
|40|eval|01 28|base64_decode
将构造好的正则表达式填入//中并添加i声明不区分大小写。
pcre:"/|40|eval|01 28|base64_decode/i"
构建规则
根据Form item得知,菜刀流量特征存在于表单中,那么pcre中的内容应该在关键字http.request_body 中进行匹配,这是因为
http.request.body
是更通用的关键字,适用于匹配 HTTP 请求体的任何内容,包括表单数据。规则代码:
alert http $EXTERNAL_NET any <> $HOME_NET 80 (msg:"检测到了疑似来自菜刀的攻击,请及时检查"; http.request_body;pcre:"/|40|eval|01 28|base64_decode/i";sid:561010;)
加入规则并测试:
加入规则:
测试:
二、识别蚁剑
1、环境搭建
一句话木马上一步就创建成功了
使用蚁剑连接:
2、分析蚁剑流量
使用Wireshark抓取流量,通过蚁剑不断浏览目标网站文件目录来创建流量。
但是这不能当作编写规则的参照物,这是因为蚁剑可以进行伪造。
伪造:
验证:
锁定特征:
具体特征:
锁定蚁剑使用的函数:
function asoutput(
3、编写规则与测试
编写正则表达式:
function直接填写
空格:十六进制:0x20,在suricata十六进制表述方式:|20|。
asoutput(:asoutput|28|
function|20|asoutput|28|
将构造好的正则表达式填入//中并添加i声明不区分大小写。
pcre:"\function|20|asoutput|28|\i"
构建规则:
根据Form item得知,菜刀流量特征存在于表单中,那么pcre中的内容应该在关键字http.request_body 中进行匹配。
规则代码:
alert http $EXTERNAL_NET any <> $HOME_NET 80 (msg:"检测到蚁剑的流量特征";http.request_body;pcre:"/function|20|asoutput|28|/i";sid:5001002;)
加入规则并测试:
加入规则:
测试:
成功
三、 识别冰蝎(存在加密)
1、环境搭建
生成服务端
点击生成服务端,获得shell.php后将其上传到目标系统中,最后点击保存
建立连接:
连接成功:
2、分析冰蝎流量
使用Wireshark抓取流量,通过冰蝎不断浏览目标网站文件目录来创建流量。
分析:
锁定特征:
特征一:需要根据代码写十条规则
特征二:相对简单些
3、编写规则与测试
根据特征构建content内容:
因为特征很具体,所以不使用正则表达式
http.content_type; content:"application/x-www-form-urlencoded";
构建规则:
在 Suricata 中,检测 c
ontent-type
头通常使用 http.content_type关键字alert http $EXTERNAL_NET any -> $HOME_NET 80 (msg:"识别到冰蝎流量"; http.content_type; content:"application/x-www-form-urlencoded"; sid:5622012; rev:1;)
写入规则并测试
写入规则:
测试:
成功