snort 规则结构分析(一)

snort中比较复杂的结构很多,今天和大家分享一下snort的规则设计的数据结构:规则头和规则选项

先从一条规则实例开始分析:

alert tcp $HOME_NET any -> $EXTERNAL_NET $HTTP_PORTS (msg:"MALWARE-CNC GzWaaa outbound data connection"; flow:to_server,established; content:"POST"; http_method; content:".php"; http_uri; content:"User|2D|Agent|3A 20|Mozilla|2F|3.0|20 28|compatible|3B 20|Indy Library|29 0D 0A|"; http_header; content:"form-data|3B| name=|22|userfile|22 3B| filename="; fast_pattern:only; http_client_body; metadata:impact_flag red, policy balanced-ips drop, policy security-ips drop, ruleset community, service http; reference:url,www.virustotal.com/en/file/04edf40eaf652dfab4e8dc2ca21fbf2e99d361746995767071789cc3fa24d2cc/analysis/1361822708/; classtype:trojan-activity; sid:25949; rev:2;)

规则头 (固定数量:7):

  1. alert : 匹配成功的动作(告警)
  2. tcp :  数据包协议
  3. $HOME_NET : 源IP地址 (支持网段)
  4. any : 源端口 (任意端口)
  5. -> : 数据包方向 (出去的数据包)
  6. $EXTERNAL_NET : 目的IP地址(支持网段)
  7. $HTTP_PORTS :目的端口(http协议端口, 支持范围,单个端口 任意组合)

其中$HTTP_PORTS 表示变量, 以$开头表示变量, 在程序第一次处理配置文件时,会做解析。这个变量的解析,会在其他博客中进行分析整个处理过程。 

portvar HTTP_PORTS [36,80,81,82,83,84,85,86,87,88,89,90,311,383,555,591,593,631,801,808,818,901,972,1158,1220,1414,1533,1741,1830,1942,2231,2301,2381,2578,2809,2980,3029,3037,3057,3128,3443,3702,4000,4343,4848,5000,5117,5250,5600,6080,6173,6988,7000,7001,7071,7144,7145,7510,7770,7777,7778,7779,8000,8008,8014,8028,8080,8081,8082,8085,8088,8090,8118,8123,8180,8181,8222,8243,8280,8300,8333,8344,8500,8509,8800,8888,8899,8983,9000,9060,9080,9090,9091,9111,9290,9443,9999,10000,11371,12601,13014,15489,29991,33300,34412,34443,34444,41080,44449,50000,50002,51423,53331,55252,55555,56712] 

  1. 规则选项(数量不固定):(msg:"MALWARE-CNC GzWaaa outbound data connection"; flow:to_server,established; content:"POST"; http_method; content:".php"; http_uri; content:"User|2D|Agent|3A 20|Mozilla|2F|3.0|20 28|compatible|3B 20|Indy Library|29 0D 0A|"; http_header; content:"form-data|3B| name=|22|userfile|22 3B| filename="; fast_pattern:only; http_client_body; metadata:impact_flag red, policy balanced-ips drop, policy security-ips drop, ruleset community, service http; reference:url,www.virustotal.com/en/file/04edf40eaf652dfab4e8dc2ca21fbf2e99d361746995767071789cc3fa24d2cc/analysis/1361822708/; classtype:trojan-activity; sid:25949; rev:2;)
  2. msg:表示匹配到这条规则时,向日志文件或者其他输出设备打印后日志,方便调试
  3. flow:数据流的配置,to_server表示数据包的方向,来自客户端
  4. content:表示要进行字符串搜索,底层使用bm算法实现
  5. http_method:它从属于之前的content的字段
  6. http_uri:它从属于之前的content的字段,但是它会选择uri规则引擎进行搜索
  7. http_header:和http_uri一样
  8. fast_pattern:也是从属于前面的content,only表示在构建规则选项树的时候,不会加入它所描述的content内容
  9. http_client_body:与http_header一样
  10. metadata:可能是键值对或者只有键,在规则匹配成功后使用
  11. classtype: 规则类型
  12. sid:在规则索引时和gid一起使用
  13. rev:版本

猜你喜欢

转载自blog.csdn.net/guoguangwu/article/details/88381965
今日推荐