高级应用举例
上面介绍了如何编写 Snort 规则,下面再给出几个实际应用中的例子(几个对当前主要的几种攻击手段的检测的例子)来说明如何灵活、高效地应用 Snort 规则。
检测尼姆达病毒
Nimda 是一个蠕虫病毒,在 2001 年的下半年曾经在互联网上肆虐。nimda 的检测规则主要是在扫描的时候、运行的时候和传播的时候。由于该病毒的机理比较复杂,具体的分析过程不在这里详细阐述,可以给出如下的检测规则:
preprocessor http_decode: 80 443
8080 preprocessor minfrag: 128 preprocessor portscan: 12.23.34.45/32 3 5 /var/log/snort_portscan.log preprocessor portscan-ignorehosts:
alert tcp any any -> any 80 (msg:"W32/Nimda@mm WORM SCAN!"; \ flags:PA; content:"/root.exe?/c+dir"; nocase;) alert tcp any any -> any 80 (msg:"W32/Nimda@mm WORM SCAN!"; \ flags:PA; content:"/system32/cmd.exe?/c+dir"; nocase;) alert tcp any any -> any 80 (msg:"W32/Nimda@mm WORM TRANSFER!!"; \ flags:PA; content:"/root.exe?/c+tftp%20-i"; nocase;) alert tcp any any -> any 80 (msg:"W32/Nimda@mm WORM TRANSFER!!"; \ flags:PA; content:"/system32/cmd.exe?/c+tftp%20-i"; nocase;) alert tcp any any -> any 80 (msg:"W32/Nimda@mm WORM RUN!!!"; \ flags:PA; content:"/scripts/Admin.dll"; nocase;) alert tcp any any -> any 80 (msg:"W32/Nimda@mm WORM RUN!!!"; \ flags:PA; content:"/MSADC/Admin.dll"; nocase;) alert tcp any any -> any 80 (msg:"W32/Nimda@mm WORM RUN!!!"; \ flags:PA; content:"/winnt/system32/Admin.dll"; nocase;) alert udp any 69 -> any any (msg:"W32/Nimda@mm WORM TRANSFER!!"; \ flags:PA; content:"|15 90 AC 17 36 F7 D8 1B C0 5E 40 5B 5F C9 C2 04 \ 00 55 8B EC 81 EC B0 00|";) alert tcp any 80 -> any any (msg:"W32/Nimda@mm WORM IN WEB SERVER!!"; \ flags:PA; content:">window.open("readme.eml"";) alert tcp any any -> any 25 (msg:"W32/Nimda@mm WORM MAILSEND!!"; \ flags:PA; content:"UgEAAI1F6Ild6FCNRfxQU2g/AA8AU1NT";) alert tcp any 110 -> any any (msg:"W32/Nimda@mm WORM MAILRECV!!"; \ flags:PA; content:"UgEAAI1F6Ild6FCNRfxQU2g/AA8AU1NT";)
检测 PHPUpload 溢出攻击
PHP 语言为用户提供了上传文件的功能,用户可以使用提供的类进行各类文件、档案的上传功能传送数据给服务器。然而,该类由于没有对上传文件的大小或者类型做严格的判断,在程序执行过程当中,有可能造成服务器端的缓冲区溢出,从而导致缓冲区溢出攻击。
下面给出防范该溢出攻击的 Snort 检测规则:
alert tcp $EXTERNAL_NET any -> $HOME_NET 80 \ (msg:"EXPERIMENTAL php content- disposition"; flags:A+; \ content:"Content-Disposition\:"; content:"form-data\;"; \ classtype:web-application-attack; reference:bugtraq,4183; sid:1425; rev:2;)
以上规则判断提交给服务器的 HTTP 请求中是否包含"Content-Disposition:"及"form-data;"字串,如果含有该字符串的话,对于某些没有打补丁的系统来说会造成缓冲区溢出攻击。通过添加上述规则,一旦发现客户端有此操作,则 Snort 将会报警。