编辑: sunny爹 | 2016-10-20 |
1 3 ] , 即静态分析法和 动态分析法.静态分析使用的主要技术有词法分析、 约束求 解、 抽象解释和类型检查, 同时也有定理证明、 模型检测和验证 等技术, 主要特点是在程序不执行的情况下进行安全威胁的检 测, 代码的覆盖率较高.然而静态分析无法对间接跳转过程进 行处理, 无法实时获取寄存器以及内存运行时的信息, 使得静 态分析误报率和漏报率较高. 动态分析技术是在程序动态运行的过程中对程序的行为 进行监视分析, 以发现运行时的安全威胁.由于是在程序的执 行过程中进行的安全威胁的检测, 所以具有检测结果准确、 误 报率低的优点.动态分析使用的技术主要有污点分析、 符号执 行和模糊测试( f u z z i n g ) 等, 其中符号执行和 f u z z i n g 技术主要 用于软件的漏洞挖掘, 污点分析主要用于对攻击行为的检测. 动态污点分析技术[
1 4 ] 按照分析的数据粒度可以分为粗粒 度的动态污点分析技术和细粒度的动态污点分析技术两类. 粗粒度的污点分析一般应用于攻击行为的检测, 而细粒度的污 点分析主要应用于程序的脆弱性发现.粗粒度的污点分析具 有速度快、 占用空间小的优点, 适合追踪判断攻击过程中的数 据流有无问题;
细粒度的污点分析具有分析精度高优点, 但是 空间消耗比较大.本文从提高攻击检测的效率出发, 选用粗粒 度的动态污点分析技术来进行 C i s c oI O S 攻击行为的检测. 本文实现的 C i s c oI O S 动态污点分析技术是基于 C i s c o 路 由器的硬件模拟器 d y n a m i p s [
1 5 ] 进行的, 具有分析准确、 无须源 码的优点.与普通的污点分析不同, 本文通过在记录的污点属 性中添加了目标攻击数据包的标志号, 用于追踪攻击的来源. 本文提出了一种基于动态污点分析的 C i s c oI O S攻击源追踪 方法. / 解决思路 C i s c oI O S 是在 U N I X操作系统下经过 G C C交叉编译生成 的[
2 ] , 其本身是采用 C语言编写的, 通过对二进制的 I O S文件 逆向分析之后, 从中可以发现 G C C的痕迹, 同时其中包含了大 量用于调试分析的字符串.文献[
1 6 ] 研究发现, 在实际程序 中, 特别是使用 C 、 C+ +等高等语言开发的程序中, 库函数的 数量占到了
5 0 %以上, 对于库函数的调用高达
9 5 %.因此, 研 究定位出 C i s c oI O S 中的库函数具有重要意义.缓冲区溢出的 产生主要与 C语言中安全库函数的使用有关, 通过修改这些 函数的参数会导致意想不到的程序异常.按照此检测思路, 采 用粗粒度的动态污点分析技术.本文进行 C i s c oI O S 内存溢出 攻击检测技术的核心思想就是通过检查安全库函数的参数是 否被污染来判定 I O S 是否受到了攻击, 安全库函数的地址就是 进行攻击检测的 t a i n t s i n k 点.本文进行 C i s c o I O S 内存溢出攻 击检测的系统框架如图 1所示. ! #$%&
'
( )* +,'
(-. '
( /0 1234&
5 6789:;
'
(<
,67 &
5# =>
? @A 4BC D EFGHI=JKL! MN C i s c oI O S 内存溢出攻击检测的具体思路如下: a ) 基于二进制的 C i s c oI O S文件, 需要首先定位出其中的 安全库函数的地址;
b ) 基于 C i s c o 路由器硬件模拟器 d y n a m i p s , 实现 C i s c oI O S 上的动态污点分析技术;
c ) 当CiscoI O S 接收到网络攻击数据包之后, 分别完成污 点源的引入和污点属性的传播;