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来说,目前仍只能通过长度等简单的判断!