几种漏洞发现技术简介

2009/2/22 来源:www.arpun.com 作者:小白

fuzzing技术。 其中二进制比较技术主要用于漏洞补丁分析, 对于未知漏洞作用不大, 在

1.1 手工测试

Web应用程序、浏览器及其他需要用户交互的程序。

1.2 静态分析

。 静态分析重点检查函数调用及返回状态, 特别是未进行边界检查或边界检查不正确的函数调用(如strcpy, strcat, snpfinf等可能造成缓冲区溢出的函数);由用户提供输入的函数;在用户缓冲区进行指针运算的程序等。

strcpy、strcat等。 静态分析主要针对程序的高级语言代码或汇编代码, 在静态分析过程中, 可以将函数调用和可疑结构特征化, 根据特征在目标程序的代码中搜索匹配, 实现自动化。 Splint、Bugscam就是漏洞静态分析工具, 这些工具虽然都存在较高的误报率和错报率, 但仍然在很大程度上减少了人工分析的工作量。

I.3 运行时分析技术

SoftIce、OllyDbg、WinDbg等

1.4 Fuzzing技术

Fuzzing是一种基于缺陷注入的自动软件测试技术。 通过编写fuzzer工具向目标程序提供某种形式的输入并观察其响应来发现问题, 这种输入可以是完全随机的或精心构造的。

Fuzzing测试通常以大小相关的部分、字符串、标志字符串开始或结束的二进制块等为重点, 使用边界值附近的值对目标进行测试。

fuzzing技术 :dumb fuzzing 这种测试无需了解协议或文件本身格式, 通过提供完全随机的输入或简单改变某些字节去发现问题。 这种方法实现起来较简单, 容易快速触发错误, 但它的完全随机性会导致产生大量无效的输入或格式。 Intelligent fuzzing 研究目标应用程序的协议或文件格式、功能配置, 了解各类漏洞的成因, 有目的地编写fuzzer。 编写有效的fuzzer需要花费时间, 但能够对某些感兴趣的部分集中测试, 因此更有效。

fuzzing的过程中, 也可能存在各种问题H]:校验和、加密、压缩等措施会大大增加fuzzer工具的编写难度;编写智能化的fuzzer依赖目标程序的协议文档, 因此

fuzzing测试的效果, 等等。 Fuzzing测试过程中需要采取措施记录目标的状态, 通常通过13志的方式记录下各种信息, 以便后续分析。 目前比较有名的fuzzer工具有SPIKE和Peach, 它们提供了对许多协议接口的支持, 现有的许多fuzzer都是基于这两个框架实现的

网友评论
评论(...
全部评论