1、基于逆向工程计算机取证方案研究 摘 要:自从互联网问世几十年来,带动了计算机普及同时,同时也造成了计算机犯罪案件大幅上升。计算机中电子证据因为其虚拟性,易修改、易丢失等特征,加之操作系统、程序本身封装限制,所以造成了计算机犯罪中取证困难。近几年来,因为逆向工程方案问世,一个崭新程序测试方法也随之诞生。本文利用逆向工程方面知识,探讨该项技术方案在计算机取证中应用,以求能降低计算机犯罪中取证困难度。 关键词:逆向工程;计算机取证;网络犯罪 中图分类号:TP391.7 目前,网络空间现在在以高速节奏发展壮大,几乎天天全部有计算机被用于从事犯罪活动。伴随计算机网络、硬件和软件组成越来越复杂,加之其和传
2、统证据勘验、检验方法和取证对象等不一样,也增加了将其用于犯罪活动可能性和取证难度。因为在软件测试中,黑盒测试方法无法获知源程序是否被篡改,犯罪分子有可能利用程序封装性所造成取证难度加大而隐藏了犯罪证据。逆向工程可从本质上分析程序代码结构和程序运行步骤,从而得到犯罪分子犯罪证据。 1 逆向工程介绍 计算机程序通常是用C、C+等高级语言编写后,由编译器编译成机器语言形式目标文件后,再经过链接过程最终生成可实施程序。逆向工程(Reverse Engineering)是将某封装好可实施程序还原成高级语言、汇编语言或是二进制代码一个技术。通常源程序和逆向分析后结果存在不一样,运行结果即使相同,不过代码会
3、发生很大改变,这就需要分析侦查人员对软件测试、计算机低级语言甚至程序运行原理有着深刻认识和了解。 现在逆向工程常见分析软件分为两大类:动态反汇编分析和静态反汇编分析软件。在“动态分析”过程中,调试器加载程序,并以调试模式运行,分析者能够在程序实施过程中获知程序运行步骤和最终结果。不过实际分析中,很多情况并不能实际运行目标程序,比如某一个无法单独运行模块、恶意代码、硬件环境和程序不兼容而造成无法运行而所谓“静态分析”,是相对于“动态分析”而言。调试工具Ollydbg含有动态分析功效,不过其反汇编辅助分析功效有限,所以通常使用功效极为强大反汇编静态分析工具IDA Pro。 2 利用逆向技术分析计算
4、机物证实例 本文以某个已经捆绑了一个隐藏未知程序可实施程序为例,此已知可实施程序为一个常见应用程序,并无危害,不过其内部捆绑了一个未知程序,一般黑盒测试中是无法判定其危害性,进而也无法取得这种情况下电子物证。下面经过逆向技术分析,来判定这个未知程序作用和取得该电子物证。 试验环境为Windows 8.1下VMWare虚拟机配置Windows XP SP3操作系统环境。某未知程序,其运行后效果为系统提供cmd.exe程序,不过因为其被附加了另一个未知程序,不能判定该程序类型、功效,所以我们利用互式反编译工具IDA Pro来进行分析。图1为使用IDA Pro打开该程序后界面。 图1 使用IDA P
5、ro打开该程序后界面 从图1能够得出该文件是一个Win32 PE文件。Win32 PE(Protable Execute)文件名称为可移植实施文件,日常所用exe、com、sys等后缀名文件全部属于PE文件类型,该文件是windows系统上程序文件,其有可能直接实施,也有可能以动态链接库(dll)形式间接运行。我们在调试VC+开发程序时,总是从main(或是WinMain)函数开始,实际上,在这两个函数被调用运行之前,已经有真正入口函数被调用,通常入口函数是mainCRTStartup、wmainCRTStartup、WinMainCRTStartup和wWinMainCRTStartup,具
6、体情况和编译器选项相关。用IDA Pro程序树视图(图2)能够看到,IDA Pro已经把真正入口函数部分隐藏,它会直接分析出WinMain函数所在位置而且直接显示出来,这对于分析人员进行逆向分析降低了一定难度。 图2 IDA Pro程序树视图 在windows绝大部分程序调用中,实际上程序调用时会释放到临时变量中,载入内存,然后再运行程序。本文所用程序也属于这种情况,所以分析时从CreateFile和WriteFile两个函数入手,具体分析出该程序具体实现功效。 在IDA Pro导入信息函数窗口(Imports)中,找到CreateFileA和WriteFileA函数,因为这两个函数总是成对出
7、现,所以分析时只观察一个即可。列出全部CreateFileA被用引用过窗口(图3)发觉本程序共调用了4次CreateFile函数,说明其共创建了4份临时文件。 图3 列出全部CreateFileA被用引用过窗口 查看用户变量文件夹,在运行qqq.exe以后,变量文件夹内产生了3个临时文件(图4)。 图4 运行qqq.exe以后,变量文件夹内产生了3个临时文件 也证实了该程序确实调用了4个CreateFile函数,第一个CreateFile函数创建了程序本身,后三个函数分别创建了qqq.exe,iexpoler.exe,svchsot.exe三个应用程序。现经过十六进制文本编辑器来分离其中一部分
8、程序。利用010edit编辑器打开qqq.exe文件,在识别ASCII字符串中可发觉MZ文件头,MZ文件头是PE文件类型标志之一,这使得PE文件成为一个正当DOS可实施文件。经过筛选几处MZ字符串,发觉此程序是由两部分组合而成,将最终MZ标识以后全部数据全部复制到记事本中,修改后缀名为exe,运行结果图5所表示: 图5 修改后缀名为exe后运行结果 结束,原程序是由cmd控制台程序和上述MessageBox程序捆绑组合而成。这里我们利用了IDA Pro分析了程序结构,和利用了十六进制文本编辑器进行了程序分离操作,同理也可引用到计算机取证分析中去。 3 结束语 计算机程序因为其含有封装性质,通常
9、在程序测试中,所用黑盒测试占了绝大部分。不过黑盒测试有其无法避免缺点:黑盒测试通常只能用来测试程序功效性、可用性是否完好,而无法判定一个程序内部结构。若某程序封装了一个在表面看不出运行结果程序段,那么在运行时,利用进程隐藏等技术,是能够静默地运行某段未知程序代码,这就势必造成了一定安全问题,同时在计算机犯罪事后取证中也造成了一定影响。利用逆向工程方面知识,能够将一个程序完全“解剖”开来,和白盒测试相类似,这就处理了上述难题,相信伴随逆向工程理论和技术发展,一定会有更宽广前景和用途。 参考文件: 1Frederic Lemieux.Investigating Cyber Security Thr
10、eats:Exploring National Security and Law Enforcement Perspectives. Report GW-CSPRI-2, April 7,. 2Markson Aigbodi,Karim Ouazzane, Daniel Mitchell.Defence in-depth for Cyber Security With Custom Anti-Virus Signature Definition.ISBN:978-0-9853484-3-5,.SDIWC. 3Chris Eagle.The IDA Pro Book: The Unofficial Guide to the Worlds Most Popular DisassemblerM.ISBN:978-1-59327-178-7,published by No Starch Press,. 作者介绍:刘天悦(1989-),男,蒙古族,辽宁沈阳人,现为网络安全保卫学院硕士硕士,研究方向:信息安全及计算机犯罪侦查。 作者单位:中国人民公安大学,北京 100038