软件逆向工程技术在信息系统审计中的探析

2013-04-09 14:23马静华上海铁路局收入稽查处
上海铁道增刊 2013年1期
关键词:工程技术逆向应用程序

马静华 上海铁路局收入稽查处

1 引言

传统的财会业务不断向数字化方向转变,审计对象扩展到了信息系统及系统中的数据,这些变化对审计从业人员带来了前所未有的挑战。如何适应新变化开展计算机环境下的审计工作成为了摆在审计人员面前一个急迫的现实问题。

审计工作的基本方式是审查和评价,即搜集证据,查明事实,对照标准,做出好坏优劣的判断。新形势下要提高审计水平,就要在审计手段上有所突破,在传统查证方法的基础上不断扩充新的技术手段。现场审计实施系统(AO)、“审计之星”等计算机审计系统的出现,在信息系统审计数据审计方面迈出了实质性的一步。但应用程序审计作为信息系统审计的另一重要领域,由于缺乏重视、工作难度大等原因,发展比较缓慢。

近年来蓬勃发展的软件逆向工程技术,为应用系统审计,特别是闭源应用系统的安全性审计提供了有效的技术手段,可以借鉴到信息系统审计工作中来。

2 信息系统审计的发展现状和面临的困境分析

2.1 信息系统审计的发展现状

信息系统审计是一个通过收集和评价审计证据,对信息系统是否能够保护资产安全和维护数据完整、使被审计单位的目标得以有效实现和组织资源得到高效使用等方面作出判断的过程。

自1960年代电子数据处理审计(EDP审计)出现至今,信息系统审计作为一门新兴学科正日益成熟起来。广义的信息系统审计对象涵盖了企业中运行的供应链管理、生产管理、财务管理、客户关系管理等各类信息系统。通常所说的信息系统审计是狭义的概念,仍然属于财务审计的范畴,其重点是对财务会计管理的信息系统进行审计[1]。

按照审计对象性质的不同,信息系统审计可分为面向数据的审计和面向应用程序的审计两类[2]。面向数据的审计是以被审计系统中的数据为中心,通过对数据的采集、转换、整理、分析和验证,来判断其与既定财会勾稽关系的符合程度,并运用查询分析、数据挖掘等多种技术构建模型进行数据分析,发现趋势、异常和错误,从而收集审计证据,以达成整体审计目标。面向应用程序的审计是对信息系统及其内部控制措施以及信息系统生命周期进行的审计。应用程序审计不仅包括基础设施,软硬件管理,通讯网络等与应用程序运行密切相关设备设施和管理措施,还包含应用程序的功能模块的实现与处理规则、算法的合法性效益性、控制的执行与效率,最终达到检查与评价各种类型信息系统的合法性、安全性、可靠性和高效性的审计目的。

2.2 应用程序审计面临的困境分析

目前,受各种因素影响,信息系统审计很大程度上还局限于数据审计范畴,对应用程序进行深入的查证分析面临很多困难。

首先,应用程序审计所需的知识相对离散,除传统的财务审计知识外,还需要很多计算机专业知识,应用程序审计实践对操作系统原理、网络通信原理、编程语言、软件调试的要求相对较高。

其次,针对不同的信息系统,审计人员需采用不同的技术手段。以代码审计为例,Winform应用程序的开发语言就有 ASM、C、C++、C#、Java等,审计时需要根据系统选用的语言和开发技术,有针对性地分析,没有通用的分析方法。个人掌握的知识终究有限,不可能全面覆盖分析技术,这增加了应用程序审计的困难程度。

再次,信息系统审计人员缺乏进行系统审计所需的条件。目前应用程序审计的环境还不成熟,进行审计工作还需解决很多实际的问题,最复杂的就是对闭源系统的运行逻辑分析。对系统的安全控制过程审计的比较高效的方式就是代码审计,通过阅读开发文档和系统的源代码,可以有效地找到系统中潜在的安全风险。但是,实际工作中系统源码和开发文档属于软件开发商的核心机密,几乎不可能公开,审计人员源码和开发文档可能性较少,只能通过现象分析或技术手段在较低层次进行系统执行逻辑的查证。

3 软件逆向工程技术的发展现状及其在信息系统审计应用中的关键点分析

3.1 软件逆向工程技术的发展现状

逆向工程技术最早出现于工业领域,即根据已存在的产品,反向推出产品设计数据(包括各类设计图或数据模型)的过程。软件逆向工程(SoftwareReverseEngineering)由此发展而来,指从可运行的程序系统出发,运用解密、汇编、系统分析、程序理解等多种计算机技术,对软件的结构、流程、算法、代码等进行逆向拆解和分析,推导出软件产品的源代码、设计原理、结构、算法、处理过程、运行方法及相关文档等[3]。通常,人们把对软件进行反向分析的整个过程统称为软件逆向工程,把在这个过程中所采用的技术都统称为软件逆向工程技术。

3.2 软件逆向工程技术在信息系统审计应用中的关键点分析

3.2.1 信息系统审计使用软件逆向工程技术应实现的目标

要明确逆向工程在信息系统审计中应达到的目标,首先应明确信息系统审计的职能。信息系统审计是对信息系统及其数据的真实性、安全性和绩效性三方面进行分析和评价[4]。其中安全性审计是其他审计的基础与前提,一个在安全方面存在严重问题和缺陷的信息系统,它提供的数据不会真实可靠。企业的许多内部控制机制已经程序化、数字化、虚拟化以后,内部控制与信息系统已经成为相互融合的一个整体,这是内部控制面临的新问题,也是系统安全性审计的重点内容。信息系统审计工作中采用软件逆向工程技术进行软件分析的主要目标在于恢复软件的数据访问机制、用户的身份认证机制以及权限控制机制的运作原理,并对系统及系统中数据的真实性、完整性、安全性、可靠性、保密性进行分析和评价。

3.2.2 软件逆向工程应用到信息系统审计中应采用的主要技术

软件逆向工程分析所使用的技术手段,一般分为静态分析技术和动态分析技术两种。

所谓静态分析,即采用反汇编或反编译等技术手段,得到对应程序的近似代码或汇编程序清单、并在其上分析程序流程,了解软件功能[5]。动态分析技术是一种对目标程序模拟执行并进行跟踪调试的技术,其工具是软件调试器程序。静态分析是以程序为中心,动态分析是以输入为中心。静态分析只是通过目标系统的代码清单来推断系统的行为,立足于分析人员对代码清单的理解,与输入无关。动态分析立足于用户输入和与之相应的系统执行过程的分析,不同的输入可能得到不同的分析结果。动态分析对输入的依赖导致动态分析的不完全,但同时也将程序的输入、输出和程序行为紧密地联系起来。通过动态分析可以看到程序由于输入的变化直接引起了程序的内部行为和系统输出的变化。不同的分析可以收集到不同的有用信息,先后执行静态分析和动态分析比单独地执行任一种分析更有效。因此,分析人员应将这两种方法结合使用以达到最好的分析效果。

3.3 信息系统审计运用软件逆向工程应确保的一般步骤

对一个应用软件的逆向工程会涉及到软件的多个模块,由需求决定对软件中某个或某些功能模块进行调试。通常,一个完整的逆向工程分析过程一般应确保经过以下步骤:①通过阅读用户手册、帮助信息、开发文档等资料并结合实际运行操作,充分掌握系统的各项信息;②分析并去除软件的保护措施;③恢复可执行程序为程序清单;④进行静态、动态分析;⑤记录分析过程、编写分析文档。

3.4 信息系统审计运用软件逆向工程应注意的特殊要求

破解一个软件通常只需对其认证保护的功能模块进行逆向分析,简单地说只是对应用程序做了一个局部检查,而应用程序审计则是全身体检,这就要求我们在众多的检查内容中找到最关键的部分进行重点检查。每一个信息系统因其软件架构的不同各有薄弱环节,要找到这些薄弱环节首先要弄清楚系统的架构和运行模型。所以,审计人员对各种模块进行逆向分析,首要的任务是梳理出整个软件的架构和系统运行模型。在此基础之上,根据软件架构和运行模型的特点有针对性地选择出需要重点分析的软件模块,并进一步对其运行细节进行分析查证,最终达成整体审计目标。

4 信息系统审计运用软件逆向工程技术的风险防控建议

4.1 加强软件反调试保护以防范不法人员的逆向分析

随着软件逆向分析技术的不断发展,逆向分析工具的功能越来越强大,可执行文件被反编译或反汇编后所得到的代码清单可读性越好,分析工作的难度大大降低。信息系统审计人员应协助企业最大程度地做好信息系统的反调试保护,降低信息系统风险。如果采用了合适的保护机制,如对程序集库采用了加壳处理,反编译软件之前就必须先进行脱壳操作,这就增加了逆向工程分析的成本。审计人员无法去除的高强度外壳程序,不法分子进行逆向分析所需要的代价和技术要求会更高。无法查明的安全隐患被封装在软件中,其风险程度将大大降低。

4.2 加强逆向分析中的信息系统运行保护

信息系统审计需要特别注意信息系统运行保护,如果对生产环境中的信息系统进行软件逆向工程分析,有可能对信息系统造成意想不到的破坏。在目前各种系统广泛集成和实时协作的信息系统审计环境下,一个系统的宕机有可能会对整个企业的生产经营环境造成严重损失。可行之举是先通过技术手段模拟出信息系统及其运行环境,在此基础之上再进行逆向工程分析。比如所逆向的系统可架设在VMWare虚拟机上的模拟系统,就不会对实际生产环境造成任何威胁。

4.3 注意保持适度的漏洞细节披露

信息系统审计中采用软件逆向工程技术进行分析,会揭示出很多系统内在的、不为人知的漏洞或弱点,从系统漏洞被发现,到软件开发商修补好漏洞的这段时间是一个真空期,这期间系统比任何时刻都更加脆弱容易受到攻击。所以,对漏洞的细节披露需要慎重,不能过于详细,要做到既能揭示问题,又无法轻易被不法分子利用。待系统升级后,方可公开有危险的漏洞细节。

5 结束语

软件逆向工程技术一度被认为是软件知识产权的严重威胁,提起逆向工程人们马上就会联想到软件破解、注册机、系统入侵等负面作用,其实,软件逆向工程本身没有善和恶的属性,使用它的人最终决定了用途的正确与否。在信息系统审计中运用软件逆向工程技术,能够解决其他审计方法所无法解决的问题,有其特殊的用途和特有的价值。

猜你喜欢
工程技术逆向应用程序
逆向而行
工程技术矩阵
工程技术研究院简介
删除Win10中自带的应用程序
谷歌禁止加密货币应用程序
对磁浮工程技术的一些思考
逆向工程技术及应用
三星电子将开设应用程序下载商店
微软软件商店开始接受应用程序