IDS作为企业安全防护的重量级产品,自然也成为了黑客试图攻破的目标。事实证明,绕过IDS防护进行攻击是完全可以实现的,接下来的文章里就将简述黑客攻击时如何通过针对缓冲区溢出绕过IDS。
一些NIDS检测远程缓冲区的主要方式是通过判断数据包的内容是否包括/bin/sh或者是否含有大量的NOP。针对IDS的这种检测办法,有的溢出程序的NOP考虑到用eb 02 代替,但这种方式目前也已经成为一些NIDS检测是否为缓冲区溢出时匹配的标志。
不过,k2先生又写了一个加密shellcode的程序ADMmutate,利用了名为多形态代码的技术,使攻击者能够潜在的改变代码结构来欺骗许多入侵检测系统,但它不会破坏最初的攻击性程序。溢出程序经它一改,就可以摇身一变,而且由于采用了动态改变的技术,每次伪装的shellcode都不相同,本来NIDS依靠提取公开的溢出程序的特征码来检测报警,特征码变了后就可以达到绕过IDS的目的。
伪装前的shellcode格式为: [NNNNNNNNNNNNN][SSSS][RRRR]
伪装后的shellcode格式为: [nnnnnnn][dddd][ssss][rrrr]
其中:N表示NOP,S表示shellcode,R表示返回地址; n表示经过编码的NOP,d为解码器,s表示经过编码的shellcode,r表示返回地址。
经过ADMmutate伪装的shellcode可以逃过使用模式匹配并且利用字符串匹配的大部分NIDS!不过如果NIDS还依靠长度,可打印字符等等综合判断,则ADMmutate还是不能逃脱NIDS的监视,但是依靠长度、可打印字符等判断未必准确,以此判断会造成IDS漏报或误报。不过,对于使用模式匹配的NIDS来说,目前仍只能通过长度等简单的判断!
【编辑推荐】