基于BP神经网络的shellcode检测(图文)_第1页
基于BP神经网络的shellcode检测(图文)_第2页
基于BP神经网络的shellcode检测(图文)_第3页
基于BP神经网络的shellcode检测(图文)_第4页
基于BP神经网络的shellcode检测(图文)_第5页
全文预览已结束

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于BP神经网络的shellcode检测(图文)论文导读:其中,Shellcode的变形技术,可以隐藏shellcode中的大量特征,使得使用传统检测引擎的IDS需要更多的CPU时间来检测,同时还存在较高的误报率,这是高速网络上的NIDS所不能接受的。为了使得该引擎更加的通用,需要分析大量的变形引擎,并加入更多的常用指令到符号数组中。关键词:Shellcode,入侵检测,BP神经网络,变形引擎1 引言在信息安全日益被关注的今天,缓冲区溢出攻击无疑是最大的安全威胁之一,严重威胁着大量企事业单位门户网站和内部网络的安全。缓冲区溢出攻击的主要技术就是shellcode技术,包括shellcode的编

2、写和注入。因此,检测缓冲区溢出攻击的主要手段也就是检测流入网络中的数据流中是否包含shellcode。早期的shellcode较简单包含大量的特征,一般的使用特征匹配检测引擎的NIDS都可以较准确的检测出来。为了避免攻击被检测,于是出现了各种针对IDS 的规避手段,使得传统的IDS遭遇了重大考验。其中,Shellcode的变形技术,可以隐藏shellcode中的大量特征,使得使用传统检测引擎的IDS需要更多的CPU时间来检测,同时还存在较高的误报率,这是高速网络上的NIDS所不能接受的。2 Shellcode及其变形技术缓冲区是内存中用于存放数据的区域,当程序向缓冲区中填入的数据量超过缓冲区的

3、容量时,就会发生溢出。在许多C或者C+ 编写的程序中,由于未对字符串进行严格的边界检查,将超长字符串拷入函数的栈内时,字符串的溢出会覆盖函数的返回地址,通过精心计算这个覆盖后的返回地址,就能使函数返回后执行恶意代码并操纵系统。Shellcode代码是缓冲区成功溢出后,实现攻击系统的恶意指令集的16进制机器码,它常包含在拷贝进栈内的超长字符串中,一般将此此超长字符串称为shellcode,它包括了三部分:空运算符:用无效的单字节或多字节命令来填充字符串,用于精确的返回。Shellcode代码:通常为实现攻击功能的代码的等效指令码。三部分的分布如下图1示:图1 一般的shellcode组成由于NI

4、DS 可对简单的Shellcode 进行有效的检测,各种针对传统NIDS 行之有效的Shellcode 变形手法便应运而生。变形的Shellcode在功能上完全等同于变形前原始的Shellcode,但在表现特征上与原始的Shellcode 完全不同。这些变形过的Shellcode 在实施攻击时,它们大都能轻松躲避上述两种传统的Shellcode 检测技术。目前常用的一些生成变形Shellcode 的引擎主要有,ADMmutate,CLET和 Jempiscodes,当攻击者将原始的Shellcode输入后,引擎能根据不同的设置来生成上百种的变形。Shellcode主要的变形方式有:NOP段变形

5、,返回地址变形和shellcode代码段变形。2.1 NOP 段的变形NOP段包含了一些无特定意义的单字节或多字节指令。在溢出成功后要执行shellcode那么必须准确的跳转到shellcode代码段的头部,但是返回地址的不固定性,使得无法保证能精确跳转,错误的跳转意味着攻击的失败。为了扩大攻击的成功率,一个NOP段被放置在Shellcode 段之前,只要返回地址能跳转进入NOP段,指令会顺序的执行直到攻击代码成功实施攻击。2.2 Shellcode代码段的变形在shellcode的中存在一些稳定的特征包括一些特定的字符串,例如存在一些shell的名称(./bin/bash,/bin/sh.)

6、。为了避免很容易被检测到,利用病毒常用的多态技术对Shellcode段进行变形以隐藏特征,迷惑一些简单的检测方法。变形后的shellcode就称为多态shellcode,主要的变形方法有编码和变换。编码是指,每次使用一个随机的密钥对shellcode进行编码,编码算法不用是很复杂的密码算法,因为在高速网络中使用的NIDS有一定的时间和CPU限制,同时被利用的缓冲区的太小也存在限制,所以简单的编码算法就能彻底改变代码的特征,使得NIDS 的特征匹配失效。同时在shellcode 段之前插入一个解码函数,该函数用于在shellcode 段被执行之前对进行解码恢复成原来的可执行代码。编码是最有效的变

7、形方法,这种方法的溢出字符串的结构如下图2:图2 变形shellcode组成为了防止对解码引擎进行检测,在更高级的变形技术中,shellcode解码引擎本身也必须进行相当的变形。例如,在解码引擎中随机地插入一些无效的代码;把一条指令能完成的工作用两条或更多的指令代替;随机改变寄存器的使用顺序,打乱寄存器的用途。如果同时引入这三种变形方法,即便是具有相同功能的解码引擎也会拥有截然不同的特征,导致NIDS通过检测Shellcode解码引擎来检测Shellcode变得异常困难。 shellcode段变形过程中有一个必须遵循的原则就是不允许“0x00”字节出现,因为字符串处理函数中以“0x00”作为字

8、符串的结尾标志,若存在“0x00”字节,shellcode可能在字符串复制过程中被截断失效。变换的方法主要是相同功能指令替换,例如用XOR EAX EAX 替换MOV EAX 0。2.3 返回地址区的变形溢出字符串必须覆盖真实的返回地址,一般情况下溢出字符串中的返回地址被多次重复,以便可以准确的覆盖真实的地址。溢出字符串中的返回地址不该被编码或隐藏,因为确切的溢出字符串地址还不能事先确定,一旦变形后的地址值不在NOP 段的范围之内,就会造成攻击的失败,所以对返回地址区的变形最为困难。目前最有效的变形方法是轻微的改变地址的不重要位即最后一位,但有限的变化并不足以使NIDS 无法辨别出变形后的返回地址区。有些Windows 平台上的Shellcode 利用系统内某

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论