https://blog.csdn.net/yalecaltech/article/details/89470968
数据包中的点,可能不是点,是空格。
$HTTP_PORTS 范围,不是这个范围内的,可以用any
在/etc/snort.conf
里面可以看到web的端口。
1 | 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检测数据包
1 | snort -c /etc/snort/snort.conf -A fast -r success.pcap -l /var/log/snort |
添加规则
1 | vim /etc/snort/rules/local.rules |
查看告警
1 | cat /var/log/snort/alert |
清除
1 | echo " "> /var/log/snort/alert |
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规则。