第四節 辯證看待數字化審計
一、數字化審計的重要性
提到數字化審計,很多從事審計工作多年的人也會有困惑:什么時候需要用到數字化審計呢?感覺目前不太用得著,或者沒有想到可以用在哪里。也許隱隱約約感覺到數字化審計很有用,在聽培訓或者講座的時候會感覺它無所不能,但在面對具體的項目時還是不知道如何下手。
數字化審計和審計在工作邏輯上是相通的,都是期望通過少量的數據或信息來了解大量數據中的信息。在這個過程中,需要投入大量的精力和時間,不斷爬坡過坎。類似的項目做多了,自然可以總結出一些檢查規則和通用路徑,將這些轉為代碼或者程序,就可以通過自動化的方式來完成類似的審計工作,大大提高工作效率,降低審計風險。
在審計過程中,所有需要重復勞動、機械操作的地方,數字化審計都可以出力。例如,拆分一個機構的全量業務清單,并將郵件自動分發給幾十家機構核實,然后在收到核實結果后,自動拼接幾十家機構的結果進行分析。再如,獲取外部網頁上的數據在日常審計工作中是很常見也很枯燥的工作,獲取一張頁面的數據可以手動復制、粘貼,但如果需要獲取成百上千頁的數據,就需要利用數字化審計中的數據獲取技術,通過代碼或者工具實現。
審計需要做的工作很大程度上是在不確定性中尋找確定性,獲得感、成就感是審計人員能持續工作下去的動力,未來很遠,不如先去主動獲取。結合審計業務,思考在什么場景、適應什么需求、有什么好處,才能用好數字化審計。純粹的理論知識學習起來會非常枯燥,但結合一個個案例,并以此切入,學習起來就更有獲得感。數字化審計入門后,一定是個很精彩的世界!
二、內部審計是業務流程的逆向工程
業務是一筆筆做出來的,但內部審計是先看總體再分析個體。要批量、快速地找出個體,就離不開數字化思維和方法。內部審計檢查不是僅跟著業務走,而是要分析業務背后的邏輯,要透視流程后面的業務邏輯。
這句話知易行難,因為業務是從投入到產出,遵循正向流程一步步實現的。但由于信息不對稱、信息屏蔽、規章制度文檔等與實際業務存在差異等,檢查人員面對的近乎是一個業務“黑匣子”,很多時候還是只有結果沒有過程的“黑匣子”。
這時候,檢查人員首先需要做的就是基于已有的結果進行逆向分析和研究,搞清楚業務的來龍去脈和風險點,透視業務邏輯。這個過程其實非常類似于軟件的逆向工程。
軟件逆向工程(Software Reverse Engineering)又稱軟件反向工程,是指從可運行的程序系統出發,運用解密、反匯編、系統分析、程序理解等多種計算機技術,對軟件的結構、流程、算法、代碼等進行逆向拆解和分析,推導出軟件產品的源代碼、設計原理、結構、算法、處理過程、運行方法及相關文檔等。
通常,人們把對軟件進行反向分析的整個過程統稱為軟件逆向工程,把在這個過程中所采用的技術統稱為軟件逆向工程技術。
內部審計就是業務分析的逆向工程,好的審計項目的難度不亞于一項高難度的軟件逆向工程。內部審計人員要做好這個“逆向工程”,首先必須要搞清楚審計方向。就如同軟件逆向工程首先需要搞清楚分析對象是本機代碼,還是某種虛擬機,或是解釋性的求值機一樣。其次,內部審計人員還需要和軟件逆向工程分析人員一樣,具備進行“逆向工程”的能力。
(一)搞清楚方向
開展軟件逆向工程,首先需要搞清楚分析對象是本機代碼(Native Code)、某種虛擬機,還是解釋性的求值機;是否混淆、加密、加殼。這樣才能選擇正確的路徑和工具,進行有效的工作。
要做好數字化審計,首先要堅持風險導向,分析和梳理清楚業務或產品的生產環境、管理架構、同業情況等,弄清不同的機構是否有差異性、差異性的表現等。
(二)具備通用能力和素質
軟件逆向工程的順利進行離不開分析人員對通用指令集和工具集的掌握。指令集和工具集是開展逆向工程的基礎。包括CPU指令集架構(x86系列、ARM系列)、可執行文件格式(PE)、OS特定的編程接口(API)、調試器。如Windows環境下常用的指令集是x86,工具集是IDA,WinDbg、DeDe等。
在軟件逆向工程中,推測能力決定了逆向分析效率,編程經驗則是推測能力的基石。雖然審計工作每一次面對的業務或產品都不同,但審計人員必須夯實抽象于業務的通用能力和素質,包括審計思維、邏輯思維、溝通與沖突管理能力、數字化審計能力、工具應用能力等。
(三)善于分析定位
做軟件逆向工程時,最重要的方法就是通過斷點調試手段定位關鍵代碼。結合動態調試與靜態分析,跟蹤、分析軟件的核心代碼,理解軟件的設計思路等,獲取關鍵信息。通過靜態分析,對程序的單步執行進行分析,以定位代碼。然后在靜態分析所得結果的基礎上進行動態調試,找到合適的地方給代碼打上斷點,讀取當前變量的值,進一步分析程序的邏輯、獲取程序關系數據。
要做好數字化審計,也離不開靜態分析和動態調試。首先基于風險導向思維,搞清楚重點區域和環節,然后再對重點區域和環節進行重點檢查和剖析。準確定位和把脈,是審計工作成功實施的基石。
(四)學習和還原
通過軟件逆向工程得到代碼、算法,并不是分毫不差的還原,而是功能等價的還原,相關人員可在此基礎上生成目標軟件的設計思想、架構、算法等相關文檔。
在業務實踐中,審計面對的業務是一筆筆做出來的,但內部審計是先看總體再分析個體。這需要在對個案業務進行逆向分析,形成相關的特征、閾值、規則后,再還原成數字化審計路徑,從而批量、快速地找出可疑個體。
三、依靠但不能依賴數字化審計
在推進數字化審計的過程中,審計人員很容易產生一種數據和數據分析可以解決一切問題的感覺。甚至會將內部審計工作沒有做好、做深的原因歸為審計支持系統不夠強大。
《混沌》一書中指出:線性關系很容易理解,越多越好;線性方程組總是可解的;世界上到處是非線性關系;在非線性的世界里,不要用線性的思維模式。
從內部審計的工作實踐看,沒有數字化審計是萬萬不能的,但數字化審計也不是萬能的。內部審計人員需要依靠數字化審計,但又不能依賴數字化審計,更不能神化數字化審計,遇到任何問題都要拿出數據來分析一通。數字化審計不僅需要合適的工具,更需要深刻了解業務場景,了解業務流程中的人。數字化不是目的,而是為了從思維、工具等方面支撐內部審計工作,數字化并不是為了取代審計本身。
四、避免數字化審計成為唯一依賴
要避免數字化審計成為內部審計的唯一依賴,“談審計不談數字化就是落伍了”這種觀點是不對的。數字化審計很好,但不是越復雜就越先進,有些時候,線下的工作比線上的數據分析更有效果。例如,要核實兩個企業是否有關系,通過數據固然可以找到,但去現場一看,發現同一個大門掛了兩個牌子,有無關系一目了然。如果審計對象對審計檢查的模式和方法比較清楚,那么數字化審計的作用也會弱化。
此外,也不是所有的經驗和感覺都可以數字化,對內部審計而言,現場第一感覺往往是常識在發揮作用。常識不斷在我們的感知中出現,是因為它的背后往往就是真相。
正如克勞塞維茨在《戰爭論》中指出,要想根據麥粒的化學成分去研究麥穗的形狀,這無疑是錯誤的,因為要想知道麥穗的形狀,只要到田野里去看一看就行了。
五、正確認識數字化審計十分必要
審計的角色是什么?它是風險監測的傳感器、監管合規的游標尺、經營安全的守護人。
十年前,提到數字化審計,很多審計人員可能覺得它很“高大上”,離自己很遙遠。但十年后的今天,數字化審計是審計人員安身立命的技能,是風險探索的工具,是審計智慧的延伸,是審計進行價值創造的基礎,也是管理層做出決策的基礎。
只有對數字化審計有正確的認識,才能在正確的道路上走下去,發揮數字化審計的巨大作用。