漏洞挖掘与分析
主动发掘并分析信息系统的未知安全漏洞,对攻防双方来说都具有非常重要的意义。目前,依据在信息系统中所处的层次划分,信息系统的漏洞挖掘目标对象包括以下 4 类:
网络基础设施:包括各类网络的联网硬件和软件,涵盖 IP 网、卫星通信网、光纤网、移动通信网、无线网以及各种信息专网等。
基础服务对象:包括基于通信网实现的各类基础性服务,如 Web 服务、E-mail 服务、分布式计算以及云计算服务等。
高级应用系统:包括构建于基础性服务之上的各类应用系统,如金融业务系统、工业控制系统、物联网系统、电力管理系统等,涉及一些重要系统联网使用的专用硬件和软件。
终端和接入设备目标对象:包括上述基础服务和高级应用的接入设备或终端硬件,如计算机终端、PDA、嵌入式接入系统、智能手机以及传感器等,还包括运行于上述设备或硬件之上的软件,如桌面操作系统、文字或图像处理软件等。
漏洞挖掘技术的框架和方法
根据不同的分类原则,漏洞挖掘方法的分类如下图所示:
漏洞挖掘分析技术
静态分析方法
常用的静态分析方法简介:
(1)模式匹配分析
(2)词法语法分析
(3)数据流分析
(4)污点传播分析
(5)补丁对比分析
静态分析的优缺点
优点:不需要实际运行系统或软件,相对来说较为简单方便,而且效率较高。
缺点:① 对漏洞的判断依赖于漏洞规则或模式的定义;
② 因未实际动态运行程序,分析发现的问题可能存在于实际并不执行的路径,虚报率较高;
③ 由于程序运行时是动态变化的,如果不考虑函数调用的参数和调用环境,不对源代码进行词法分析和语 法分析,就没有办法准确把握程序的语义,因此这种方法不能发现程序动态运行过程中的安全漏洞。
动态分析方法
常用的动态分析方法
(1)Fuzz测试
(2)动态污点分析
动态分析典型案例: 使用PEACH FUZZ动态分析工具
Michael Eddington等人开发的Peach是一个遵守MIT开源许可证的模糊测试框架,最初采用Python语言编写。
Peach支持对文件格式、ActiveX、网络协议、API等进行Fuzz测试;Peach Fuzz的关键是编写Peach Pit配置文件。
Windows下使用Peach3需要预先安装.net 4和windbg;Linux、OS X下需要安装Mono .net开发框架。
漏洞挖掘技术面临的挑战和发展方向
1.如何获取源代码?
传统PC终端、智能手机、路由器等设备具有相对成熟的仿真、调试和分析环境,相对来说易于实现设备的逆向剖析、代码提取及仿真分析,而工控系统、物联网终端、云计算平台等信息系统中设备的逆向剖析、代码提取及仿真分析则较难实现。
2.反编译工作越来越困难。
传统的X86/X64 架构、ARM 和 Windows/Linux 等通用平台上的软件可以采用 DA PRO 等专业反编译工具实现反编译和分析,而以 iOS、Android 为代表的移动智能终端平台实现的电子商务、即时通信、网银支付、影音互动、在线游戏、社交网络等都是基于 Dalvik 虚拟机、嵌入式系统等新型平台开发的,给反编译工作带来很大的困难。再者,采用加密芯片的硬件设备,操作系统甚至以固件形态出现,还包括通信协议、安全算法与应用程序等,也增加了其难度。
3.面临越来越多安全防护机制。
操作系统采用了多种安全保护机制。例如地址加载空间随机化(ASLR)、数据执行保护(DEP)、安全异常处理结构链保护(SafeSEH)等内存保护技术。在硬件方面,为了提高抗逆向分析能力,很多信息系统的硬件设备综合采取了多种安全防护措施。