frome和to的区别
from server:这通常是指服务器响应客户端发起的请求,并将所需的数据发送回客户端。
to client:这通常是指服务器主动向客户端发送数据,而不是响应特定的客户端请求。
如果要检测服务器向客户端发送的特定类型的数据,可以使用"from server"。如果要检测客户端向服务器发送的特定类型的数据,可以使用"to server"。
from client:这通常是指客户端发起了一个请求,将请求发送到服务器端,以获取特定的资源或执行特定的操作。
to server:同样,这也是指客户端发起请求并将数据发送到服务器,以请求特定的服务或执行特定的操作。
如果要检测客户端发送到服务器的特定类型的数据,可以使用 "from client"。如果要检测服务器接收到的来自客户端的特定类型的数据,可以使用 "to server"。
基本格式
alert http any any -> any any (msg:"哥斯拉/Godzilla PHP Base64 连接成功";
flow:established,from_server;
flowbits:txisset,Godzilla_webshell_request_match;
http.server;
content:"Rising", negate;
http.response_body;
bsize:36;
pcre:"/^([0-9A-F]{16}|[0-9a-f]{16})/";
pcre:"/([0-9A-F]{16}|[0-9a-f]{16})$/";
pcre:"/^[\s\S]{16}(.*)[\s\S]{16}$/";
pcrexform:"^[\s\S]{16}(.*)[\s\S]{16}$";
pcre:"/[\s\S]/";
base64;
flowbits:unset,Godzilla_webshell_request_match;
)
alert http any any -> any any
表示对任何源IP和目的IP之间的HTTP流量生成告警。msg:"哥斯拉/Godzilla PHP Base64 连接成功"
是告警的描述信息。flow:from server,established
表示只对来自服务器端的已建立连接的流量进行检测。flowbits:isset,Godzilla webshell request match
检查名为"Godzilla webshell request match"的流状态位是否已被设置。(注意这里使用了isset而不是txisset)http.server
表示只对HTTP服务器响应进行检测。content:!"Rising"
表示检测HTTP响应正文中不包含字符串"Rising"。http.response body
表示对HTTP响应的正文部分进行检测。bsize:36
指定只检测响应正文的前36个字节。pcre:"/^(\[0-9A-F\]{16}|\[0-9a-f\]{16})/"
和pcre:"/(\[0-9A-F\]{16}|\[0-9a-f\]{16})$/"
使用Perl兼容正则表达式(PCRE)检测响应正文是否以16个十六进制字符开头和结尾。pcre:"/^\[\\s\\S\]{16}(.\*)\[\\s\\S\]{16}$/"
和pcrexform:"^\[\\s\\S\]{16}(.\*)\[\\s\\S\]{16}$"
使用PCRE检测响应正文是否符合特定的模式,即以16个任意字符开头,任意字符串为中间部分,再以16个任意字符结尾。pcre:"/\[\\s\\S\]/"
匹配响应正文中的单个被方括号包围的任意字符。isbase64:3
表示对匹配到的内容进行Base64解码,并检查解码后的字节数是否是3的倍数。flowbits: unset,Godzilla webshell request match
清除名为"Godzilla webshell request match"的流状态位。
综合这些参数,该规则的作用是检测HTTP服务器响应中可能存在与Godzilla恶意软件相关的Base64编码数据,并根据特定的模式和内容特征进行匹配。如果检测到相关模式,则触发告警"哥斯拉/Godzilla PHP Base64连接成功"。同时,该规则利用流状态位机制来关联检测过程,并在检测结束后清除相关状态位。
状态位
txisset(只能在snort在2.9中使用)
flowbits: unset,Godzilla webshell request match;
pcre:"/[\s\S]/";isbase64:3;
bsize(只能在snort在2.9中使用)
pcre:"/^[\s\S]{16}(.*)[\s\S]{16}$/";
http.uri;content:".php";endswith;
用于检测HTTP请求的URI中是否包含 ".php" 字符串。要求URI以 ".php" 结尾。
http.header names;content:!"Cookie:";
检查HTTP请求头中是否不包含 "Cookie:
xor decode: type var "$parameters=array()\;", bytes 16;xor data;
对 16 字节的数据执行异或解码,解码密钥是一个空数组。对数据执行异或操作。
reference:url,https://www.freebuf.com/articles/web/257956.html;
提供了规则的参考链接。
classtype: Webshell access;
设置了规则的分类类型为Webshell访问。
noalert;
表示规则匹配时不发出警报
metadata:attack level 40,event type Web,attack func 恶意软件,attack result 1,attack steps 2,status 2,created at 2021 03 12,by venus;
提供了规则的元数据,包括攻击级别、事件类型、攻击功能、攻击结果、攻击步骤、状态、创建时间和创建者。
http.host;content:!"update.minipage.2345.cc";content:!"update.pinyin.2345.com";startswith;
规则将检查HTTP请求的主机头部分,要求HTTP主机头不包含 "update.minipage.2345.cc" 和 "update.pinyin.2345.com" 这两个字符串。规则将检查HTTP请求的主机头是否以指定的字符串开头。
nocase
不区分大小写
http.set cookie;content:"PHPSESSID=";
规则将检查HTTP响应中设置的Cookie,要求Cookie中包含 "PHPSESSID=" 这个字符串。
http.connection;content:"keep-alive";nocase;
规则将检查HTTP请求的连接头部分,要求连接头部包含 "keep-alive" 这个字符串,不区分大小写。
http.content len; byte test:0,>,36,0,string,dec;
检查HTTP内容的长度是否大于36字节。
Views: 11