IDS逃避技术和对策(2)
- 编辑:admin -IDS逃避技术和对策(2)
而对付智能化 的大概基于协议阐明的检测系统的效果要差许多。
可以实现对多变 shell代码的精确检测,为了能够检测可能呈现的会话拼接打击,使用这种技能从头结构的shell代 码更为危险。
例如:小TTL值,为了真正有效地检测这种打击,多变shell代码(polymorphic shell code)使用许多要领逃避字符串匹配系统的检测,。
就是把会话数据放到多个数据包中发出, 2.多变shell代码(polymorphic shell code) 多变shell代码(polymorphic shell code)技能由K2开发的,就可能避开字符串匹配入侵检测系统的监督,最近。
IIS/Win2K期待的时间很是长,但是打击者只要稍加修改就可以避开这个检测,但是,热点新闻,Apache/RedHat 的会话超时时间是6分钟,shell代码自己也回收XOR机制编码,例如,成立缓冲区溢出shell代码包括无操纵(no-op)指令的部门。
多变shell代码检测对基于特征码检测的IDS是一个很大的挑战,可以对上面这条 snort法则进行扩展,应该注意的是目前 大大都系统能够重组会话,例如,有55种替代方法,假如某小我私家在配置时设置了80、21、23和53等端口,296; classtype:attempted-recon; reference) 这条法则使snort检测方针为$HTTP_SERVERS 80端口的ACK报文的负载长度是否便是1以及是否包括空格(16进制的20),除此之外,不外这长短常坚苦的,因此,为了便于讨论, 3.会话拼接(session splicing,使其查抄负载很短的HTTP请求,大概回收其它的技能监督这种打击,它们会期待一些时间,首先(以x86架构为例),互联网资讯,而期待时间的是非与措施有关,RFP在Whisker 中实现了一种IDS逃避技能叫作会话拼接(session splicing),snort使 用以下法则来监督会话拼接: alert tcp $EXTERNAL_NET any - $HTTP_SERVERS 80 (msg:"WEB-MISC whisker space splice attack"; content:"|20|"; flags:A+; dsize:1;reference:arachnids,没有涉及打击数据和会话通过多个数据包投递的环境,这个预处理惩罚插件有端口和长度两个配置选项,叫会话支解更符合一些) 上面讨论的这些要领都是属于打击数据在一个数据包中的环境,通过这种方法成立的缓冲区溢出shell代码被重组后不会包 含以上的特征码,而IIS还会认为是 有效的会话,2347; reference:cve。
设计思想来源于病毒逃避(virus evasion)技能,它就只对这几个 端口的数据流量进行多变shell代码的检测,在所有的会话数据达到之前,搜索里面是否包括字符串/bin/sh,其它的要少一些,而不会对其它端口(例如:22)进行检测,CVE-2001-0144; classtype:shellcode-detect; sid:1324; rev:1;) alert tcp $EXTERNAL_NET any - $HOME_NET 22 (msg:"EXPLO99v ssh CRC32 overflow NOOP"; flags:A+; content:"|90 90 90 90 90 90 90 90 90 90 90 90 90 90 90) 上面的第一条法则简朴地查抄从外部到$HOME_NET,最新版本的snort能够监督恒久的会话和网络层欺骗,Dragos Ruiu宣布了一个用于检测多变shell代码的snort预处理惩罚插件spp_fnord,通过搜索无操纵(no-op)字符的一个特定长度的正则表达式,这样做的副感化是提高了误报警数量,每次只投递几个字节的数据,热点新闻,要监督这种打击,我们以SSH CRC32缓冲区为例。
这种技能只用于缓冲区溢出打击,方针端口是22的数据包,需要入侵检测系统能够完整地理解网络会话,使用这条法则 可以精确地检测出whisker,Next Generation Security Technologie公司的技能白皮书Polymorphic Shellcodes vs. Application IDSs中提出了一些检测多变shell代码的设想, 使用其它的字符取代0x90执行无操纵(no-op)指令,搪塞基于特征码的检测系统很是有效,这个插件回收了和上面相似的 检测技能,这些替代方法以一种伪随机的 方法结合到一块,例如: +-------------------------+ | packet number | content | |---------------+---------| | 1 | G | |---------------+---------| | 2 | E | |---------------+---------| | 3 | T | |---------------+---------| | 4 | 20 | |---------------+---------| | 5 | / | |---------------+---------| | 6 | H | +---------------+---------+ 通过这种方法, ,我们先看以下snort检测法则: alert tcp $EXTERNAL_NET any - $HOME_NET 22 (msg:"EXPLO99v ssh CRC32 overflow /bin/sh"; flags:A+; content:"/bin/sh"; reference:bugtraq。
对付X86架构,第二条法则是查抄是否 包括x86空操纵字符(0x90),打击者完全可以每15分钟发送一个字节的会话数据,并且在某些环境下打击者照旧能 够避开监督,打击者也可以通过其它的通常避开监督),入侵检测设备很是难以检测到。
想了解无操纵(no-op)指令的所有替代字符可以参考 cansecwest.com/noplist-v1-1.txt。
需要入侵检测系统大概 能够理解、监督网络会话(纵然IDS有这种能力,从而能够逃过字符串匹配检测。