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;
)
  1. alert http any any -> any any 表示对任何源IP和目的IP之间的HTTP流量生成告警。
  2. msg:"哥斯拉/Godzilla PHP Base64 连接成功" 是告警的描述信息。
  3. flow:from server,established 表示只对来自服务器端的已建立连接的流量进行检测。
  4. flowbits:isset,Godzilla webshell request match 检查名为"Godzilla webshell request match"的流状态位是否已被设置。(注意这里使用了isset而不是txisset)
  5. http.server 表示只对HTTP服务器响应进行检测。
  6. content:!"Rising" 表示检测HTTP响应正文中不包含字符串"Rising"。
  7. http.response body 表示对HTTP响应的正文部分进行检测。
  8. bsize:36 指定只检测响应正文的前36个字节。
  9. pcre:"/^(\[0-9A-F\]{16}|\[0-9a-f\]{16})/"pcre:"/(\[0-9A-F\]{16}|\[0-9a-f\]{16})$/" 使用Perl兼容正则表达式(PCRE)检测响应正文是否以16个十六进制字符开头和结尾。
  10. pcre:"/^\[\\s\\S\]{16}(.\*)\[\\s\\S\]{16}$/"pcrexform:"^\[\\s\\S\]{16}(.\*)\[\\s\\S\]{16}$" 使用PCRE检测响应正文是否符合特定的模式,即以16个任意字符开头,任意字符串为中间部分,再以16个任意字符结尾。
  11. pcre:"/\[\\s\\S\]/" 匹配响应正文中的单个被方括号包围的任意字符。
  12. isbase64:3 表示对匹配到的内容进行Base64解码,并检查解码后的字节数是否是3的倍数。
  13. flowbits: unset,Godzilla webshell request match 清除名为"Godzilla webshell request match"的流状态位。

综合这些参数,该规则的作用是检测HTTP服务器响应中可能存在与Godzilla恶意软件相关的Base64编码数据,并根据特定的模式和内容特征进行匹配。如果检测到相关模式,则触发告警"哥斯拉/Godzilla PHP Base64连接成功"。同时,该规则利用流状态位机制来关联检测过程,并在检测结束后清除相关状态位。

状态位

image-20240322162209385

txisset(只能在snort在2.9中使用)

image-20240322152606832

flowbits: unset,Godzilla webshell request match;

image-20240322153107926

pcre:"/[\s\S]/";isbase64:3;

image-20240322153150851

bsize(只能在snort在2.9中使用)

image-20240322153213913

pcre:"/^[\s\S]{16}(.*)[\s\S]{16}$/";

image-20240322153230971

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

邮箱:zzpqwetvg@gmail.com
最后更新于 2024-03-26