https://blog.csdn.net/yalecaltech/article/details/89470968

数据包中的点,可能不是点,是空格。

$HTTP_PORTS 范围,不是这个范围内的,可以用any

/etc/snort.conf里面可以看到web的端口。

portvar HTTP_PORTS [80,81,311,383,591,593,901,1220,1414,1741,1830,2301,2381,2809,3037,3128,3702,4343,4848,5250,6988,7000,7001,7144,7145,7510,7777,7779,8000,8008,8014,8028,8080,8085,8088,8090,8118,8123,8180,8181,8243,8280,8300,8800,8888,8899,9000,9060,9080,9090,9091,9443,9999,11371,34443,34444,41080,50002,55555]

自己可以修改

正则

URL编码:[%\w]+

16进制

‘\r’是回车( 0D),’\n’是换行( 0A),前者使光标到行首,后者使光标下移一格对应|0D0A|

snort检测数据包

 snort -c /etc/snort/snort.conf -A fast -r success.pcap -l /var/log/snort

添加规则

vim /etc/snort/rules/local.rules

查看告警

 cat /var/log/snort/alert

清除

echo " "> /var/log/snort/alert
echo " "> /etc/snort/rules/local.rules

snort需要注意的细节

使用http_method的时候,要相应的规定http的端口(http服务),要限定端口或者是使用$HTTP_PORTS 变量。不然无法触发。


1、byte_extract关键字会使检测指针定位到byte_extract所提取内容后面一个字节的位置,在下一个匹配中用到的relative、distance等都是相对于此位置的。例如用byte_extract提取“00 01 02 03 04 05”中的02 03,那么,指针会移到04的位置。

2、byte_test不会改变检测指针位置。

3、content:!”XXXX”,!否定检测会导致检测指针回到初始位置,也就是说下一个匹配中的relative、distance相对的是整个检测内容的开始位置。

4、byte_jump如果跳到一个不存在的位置,则会导致此规则失效。例如待检内容为b6 5b 00 00 00 06 02 03 00 00 00 01,用byte_jump:2,4; 跳过后到达的是最后一个字节01的下一个字节,但不存在这个字节,因此不管后面的匹配是什么,规则都不会告警了。这种情况可以用byte_extract提取长度,用isdataat判断一下,再用byte_jump跳转。

5、从开源渠道引入规则的时候,如果规则中包含flowbits关键字,一定要把前续和后续规则都一起引入,要不然规则不会起作用。例如有带flowbits:isset的规则,就要找到对应的flowbits:set规则。

评论