xsw_usa 发表于 2011-12-20 09:47

snort中content匹配

<DIV>&nbsp;&nbsp;&nbsp; 在研究snort过程中,我最感兴趣的就是对payload中内容的匹配,用户在定制规则时包括了content这个关键字后,snort就会在收到的数据包中搜索content指定的内容。无论这些指定的内容在数据包中的哪个位置出现,即,只要数据包中有这些内容(说明是对整个数据包中的数据进行了搜索),snort就会被触发对这些内容的反应。snort可采用几种不同的算法进行匹配。</DIV>
<DIV>&nbsp;&nbsp;&nbsp; content中指定的数据可以有文本和二进制数据类型。二进制数据一般被包在管道符“|”中,由字节码(bytecode)表示。字节码使用16进制数字表示二进制数据。</DIV>
<DIV>&nbsp;&nbsp;&nbsp; content规则的一些修饰符。offset:设置对content内容进行模式匹配时的起始位置。这个规则选项在某些情况下很有用,例如CGI扫描,要搜索的字符串从来不会在数据包的前4个字节出现。注意:设置偏移值一定要小心,它可能会造成漏检!这个规则选项只能和 content规则选项搭配使用。depth:它用来设置最大的搜索深度,以减少无谓的搜索,使snort只在特征码可能出现的区域内搜索,例如如果在一个web绑定(web-bound)包中搜索“cgi-bin/phf",你就不必浪费时间在数据包负载数据的前20个字节之外搜索。表11的规则结合了content、offset、depth。alert tcp any any -&gt;&nbsp;192.168.1.0/24&nbsp;80&nbsp;(content:"cgi-bin/phf";offset:3;depth:22;msg:"CGI-PHF&nbsp;access"&nbsp;)。nocase:nocase使对content进行模式匹配时大小写不敏感。snort将不再区别每个ASCII字符的大小写。格式:nocase;例如:alert&nbsp;tcp&nbsp;any&nbsp;any&nbsp;-&gt;&nbsp;&nbsp; 192.168.1.0/24&nbsp;21&nbsp;(content:"USER&nbsp;&nbsp; root";nocase;msg:"FTP&nbsp;&nbsp; root&nbsp;&nbsp; login&nbsp;&nbsp; attempt"&nbsp;)。</DIV>
<DIV>&nbsp;&nbsp;&nbsp; 至于snort是怎么在数据包中进行相对应内容的搜索的,现在还没弄明白,再继续看看源代码。</DIV>
<DIV>&nbsp;&nbsp;&nbsp; </DIV>
<DIV>&nbsp;</DIV>
<DIV>以上资料来自自己总结以及互联网,如果侵犯了您的权益,请您告知,经核实后我会及时删除相关内容。&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp; <BR></DIV>
页: [1]
查看完整版本: snort中content匹配