第四节 辩证看待数字化审计
一、数字化审计的重要性
提到数字化审计,很多从事审计工作多年的人也会有困惑:什么时候需要用到数字化审计呢?感觉目前不太用得着,或者没有想到可以用在哪里。也许隐隐约约感觉到数字化审计很有用,在听培训或者讲座的时候会感觉它无所不能,但在面对具体的项目时还是不知道如何下手。
数字化审计和审计在工作逻辑上是相通的,都是期望通过少量的数据或信息来了解大量数据中的信息。在这个过程中,需要投入大量的精力和时间,不断爬坡过坎。类似的项目做多了,自然可以总结出一些检查规则和通用路径,将这些转为代码或者程序,就可以通过自动化的方式来完成类似的审计工作,大大提高工作效率,降低审计风险。
在审计过程中,所有需要重复劳动、机械操作的地方,数字化审计都可以出力。例如,拆分一个机构的全量业务清单,并将邮件自动分发给几十家机构核实,然后在收到核实结果后,自动拼接几十家机构的结果进行分析。再如,获取外部网页上的数据在日常审计工作中是很常见也很枯燥的工作,获取一张页面的数据可以手动复制、粘贴,但如果需要获取成百上千页的数据,就需要利用数字化审计中的数据获取技术,通过代码或者工具实现。
审计需要做的工作很大程度上是在不确定性中寻找确定性,获得感、成就感是审计人员能持续工作下去的动力,未来很远,不如先去主动获取。结合审计业务,思考在什么场景、适应什么需求、有什么好处,才能用好数字化审计。纯粹的理论知识学习起来会非常枯燥,但结合一个个案例,并以此切入,学习起来就更有获得感。数字化审计入门后,一定是个很精彩的世界!
二、内部审计是业务流程的逆向工程
业务是一笔笔做出来的,但内部审计是先看总体再分析个体。要批量、快速地找出个体,就离不开数字化思维和方法。内部审计检查不是仅跟着业务走,而是要分析业务背后的逻辑,要透视流程后面的业务逻辑。
这句话知易行难,因为业务是从投入到产出,遵循正向流程一步步实现的。但由于信息不对称、信息屏蔽、规章制度文档等与实际业务存在差异等,检查人员面对的近乎是一个业务“黑匣子”,很多时候还是只有结果没有过程的“黑匣子”。
这时候,检查人员首先需要做的就是基于已有的结果进行逆向分析和研究,搞清楚业务的来龙去脉和风险点,透视业务逻辑。这个过程其实非常类似于软件的逆向工程。
软件逆向工程(Software Reverse Engineering)又称软件反向工程,是指从可运行的程序系统出发,运用解密、反汇编、系统分析、程序理解等多种计算机技术,对软件的结构、流程、算法、代码等进行逆向拆解和分析,推导出软件产品的源代码、设计原理、结构、算法、处理过程、运行方法及相关文档等。
通常,人们把对软件进行反向分析的整个过程统称为软件逆向工程,把在这个过程中所采用的技术统称为软件逆向工程技术。
内部审计就是业务分析的逆向工程,好的审计项目的难度不亚于一项高难度的软件逆向工程。内部审计人员要做好这个“逆向工程”,首先必须要搞清楚审计方向。就如同软件逆向工程首先需要搞清楚分析对象是本机代码,还是某种虚拟机,或是解释性的求值机一样。其次,内部审计人员还需要和软件逆向工程分析人员一样,具备进行“逆向工程”的能力。
(一)搞清楚方向
开展软件逆向工程,首先需要搞清楚分析对象是本机代码(Native Code)、某种虚拟机,还是解释性的求值机;是否混淆、加密、加壳。这样才能选择正确的路径和工具,进行有效的工作。
要做好数字化审计,首先要坚持风险导向,分析和梳理清楚业务或产品的生产环境、管理架构、同业情况等,弄清不同的机构是否有差异性、差异性的表现等。
(二)具备通用能力和素质
软件逆向工程的顺利进行离不开分析人员对通用指令集和工具集的掌握。指令集和工具集是开展逆向工程的基础。包括CPU指令集架构(x86系列、ARM系列)、可执行文件格式(PE)、OS特定的编程接口(API)、调试器。如Windows环境下常用的指令集是x86,工具集是IDA,WinDbg、DeDe等。
在软件逆向工程中,推测能力决定了逆向分析效率,编程经验则是推测能力的基石。虽然审计工作每一次面对的业务或产品都不同,但审计人员必须夯实抽象于业务的通用能力和素质,包括审计思维、逻辑思维、沟通与冲突管理能力、数字化审计能力、工具应用能力等。
(三)善于分析定位
做软件逆向工程时,最重要的方法就是通过断点调试手段定位关键代码。结合动态调试与静态分析,跟踪、分析软件的核心代码,理解软件的设计思路等,获取关键信息。通过静态分析,对程序的单步执行进行分析,以定位代码。然后在静态分析所得结果的基础上进行动态调试,找到合适的地方给代码打上断点,读取当前变量的值,进一步分析程序的逻辑、获取程序关系数据。
要做好数字化审计,也离不开静态分析和动态调试。首先基于风险导向思维,搞清楚重点区域和环节,然后再对重点区域和环节进行重点检查和剖析。准确定位和把脉,是审计工作成功实施的基石。
(四)学习和还原
通过软件逆向工程得到代码、算法,并不是分毫不差的还原,而是功能等价的还原,相关人员可在此基础上生成目标软件的设计思想、架构、算法等相关文档。
在业务实践中,审计面对的业务是一笔笔做出来的,但内部审计是先看总体再分析个体。这需要在对个案业务进行逆向分析,形成相关的特征、阈值、规则后,再还原成数字化审计路径,从而批量、快速地找出可疑个体。
三、依靠但不能依赖数字化审计
在推进数字化审计的过程中,审计人员很容易产生一种数据和数据分析可以解决一切问题的感觉。甚至会将内部审计工作没有做好、做深的原因归为审计支持系统不够强大。
《混沌》一书中指出:线性关系很容易理解,越多越好;线性方程组总是可解的;世界上到处是非线性关系;在非线性的世界里,不要用线性的思维模式。
从内部审计的工作实践看,没有数字化审计是万万不能的,但数字化审计也不是万能的。内部审计人员需要依靠数字化审计,但又不能依赖数字化审计,更不能神化数字化审计,遇到任何问题都要拿出数据来分析一通。数字化审计不仅需要合适的工具,更需要深刻了解业务场景,了解业务流程中的人。数字化不是目的,而是为了从思维、工具等方面支撑内部审计工作,数字化并不是为了取代审计本身。
四、避免数字化审计成为唯一依赖
要避免数字化审计成为内部审计的唯一依赖,“谈审计不谈数字化就是落伍了”这种观点是不对的。数字化审计很好,但不是越复杂就越先进,有些时候,线下的工作比线上的数据分析更有效果。例如,要核实两个企业是否有关系,通过数据固然可以找到,但去现场一看,发现同一个大门挂了两个牌子,有无关系一目了然。如果审计对象对审计检查的模式和方法比较清楚,那么数字化审计的作用也会弱化。
此外,也不是所有的经验和感觉都可以数字化,对内部审计而言,现场第一感觉往往是常识在发挥作用。常识不断在我们的感知中出现,是因为它的背后往往就是真相。
正如克劳塞维茨在《战争论》中指出,要想根据麦粒的化学成分去研究麦穗的形状,这无疑是错误的,因为要想知道麦穗的形状,只要到田野里去看一看就行了。
五、正确认识数字化审计十分必要
审计的角色是什么?它是风险监测的传感器、监管合规的游标尺、经营安全的守护人。
十年前,提到数字化审计,很多审计人员可能觉得它很“高大上”,离自己很遥远。但十年后的今天,数字化审计是审计人员安身立命的技能,是风险探索的工具,是审计智慧的延伸,是审计进行价值创造的基础,也是管理层做出决策的基础。
只有对数字化审计有正确的认识,才能在正确的道路上走下去,发挥数字化审计的巨大作用。