snort--byte_test,byte_jump用法

byte_test byte_jump 用法详解

byte_test:

测试一个字节的域为特定的值。能够测试二进制值或者把字节字符串转换成二进制后再测试。

格式:byte_test: , , , [[relative],[big],[little],[string],[hex],[dec],[oct]]
bytes_to_convert 从数据包取得的字节数。
operator 对检测执行的操作 (<,>,=,!)。
value 和转换后的值相测试的值。
offset 开始处理的字节在负载中的偏移量。
relative 使用一个相对于上次模式匹配的相对的偏移量。
big 以网络字节顺序处理数据(缺省)。
little 以主机字节顺序处理数据。
string 数据包中的数据以字符串形式存储。
hex 把字符串数据转换成十六进制数形式。
dec 把字符串数据转换成十进制数形式。
oct 把字符串数据转换成八进制数形式。


distance

distance关键字是content关键字的一个修饰词,确信在使用content时模式匹配间至少有N个字节存在。它被设计成在规则选项中和其他选项联合使用。

格式:
distance: ;

例子:
alert tcp any any -> any any (content: "2 Patterns"; content: "ABCDE"; content: "EFGH"; distance: 1;)

Within

Winthin关键字是content关键字的一个修饰词,确保在使用content时模式匹配间至多有N个字节存在。它被设计成在规则选项中和distance选项联合使用。

格式:
within: ;

例子:
alert tcp any any -> any any (content: "2 Patterns"; content: "ABCDE"; content: "EFGH"; within: 10;)



例子:
alert udp $EXTERNAL_NET any -> $HOME_NET any (msg:"AMD procedure 7 plog overflow "; content: "|00 04 93 F3|"; content: "|00 00 00 07|"; distance: 4; within: 4; byte_test: 4,>, 1000, 20, relative;)

alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:"AMD procedure 7 plog overflow "; content: "|00 04 93 F3|"; content: "|00 00 00 07|"; distance: 4; within: 4; byte_test: 4, >,1000, 20, relative;)


其中relative作用是使用一个相对于上次模式匹配的相对的偏移量。即在最后一个匹配到的十六进制00 00 00 07的后面。若十六进制一段为00 00 00 07 00 00 00 00 00 08则byte_test:4,>,1000,2,relative;的意思是在07后偏移2字节,后取四个字节(00 00 00 08)转换成二进制与1000比较。


byte_jump

Byte_jump 选项用来取得一定数量的字节,并把它们转换成数字形式,跳过一些字节以进一步进行模式匹配。这就允许相对模式匹配在网络数据中进行数字值匹配。

格式:
byte_jump: , [[relative],[big],[little],[string],[hex],[dec],[oct],[align]]

bytes_to_convert 从数据包中选出的字节数。
offset 开始处理的字节在负载中的偏移量。
relative 使用一个相对于上次模式匹配的相对的偏移量。
big 以网络字节顺序处理数据(缺省)。
little 以主机字节顺序处理数据。
string 数据包中的数据以字符串形式存储。
hex 把字符串数据转换成十六进制数形式。
dec 把字符串数据转换成十进制数形式。
oct 把字符串数据转换成八进制数形式。
align 以32位为边界对转换的字节数对齐,即转换的字节数为4的倍数。

例子:
alert udp any any -> any 32770:34000 (content: "|00 01 86 B8|"; content: "|00 00 00 01|"; distance: 4; within: 4; byte_jump: 4, 1, relative, align; byte_test: 4, >, 900, 20, relative; msg: "statd format string buffer overflow";)


byte_jump: 4, 1, relative 的意思是在原匹配位置上偏移1个字节,然后取4个字节的数据(假设为 00 00 00 08),得出结果为8,就根据结果跳过8个字节。


http://man.chinaunix.net/network/snort/Snortman.htm一篇snort中文手册的链接

猜你喜欢

转载自blog.csdn.net/energysober/article/details/51031089
今日推荐