張文川
(蘭州石化職業技術大學,甘肅蘭州,730060)
隨著計算機技術的快速發展,人們的日常生產生活發生了巨大轉變,也獲得了各種便捷,從而演變成了現代化社會最不可獲取的部分。但是計算機系統的安全性依舊有待提高,其不安全因素主要有計算機信息系統自身與人為操作,而計算機病毒是最常見且最不安全的因素,病毒的存在不僅會造成資源與財富浪費,還會導致社會性災難。并且在互聯網技術的大范圍普及下,郵件、腳本、網頁、木馬、蠕蟲等病毒愈發泛濫,計算機用戶隨時隨地可能會遭遇攻擊,所以采用多元化算法與技術檢測并預防計算機病毒已是必然趨勢[1]。據此本文基于密碼算法設計了計算機病毒檢測系統,以期能夠為防控病毒做出一定貢獻。
密碼算法可保護并認證數據,通常用于為計算機提供安全防護,但是密碼算法實際上一把雙刃劍,其在提供安全保護的同時,很多攻擊者也會利用密碼算法逃避安全部門的追蹤檢測,導致有關調查取證工作難以有序開展,從而嚴重威脅著網絡安全與社會和諧[2]。
一般情況下,密碼算法主要基于加殼免殺、加密通信、加密勒索方式散播計算機病毒。其中加殼免殺方式會隱藏病毒特性,無法以靜態特征碼識別并查殺病毒;加密通信方式會通過HTTP 協議偽裝為網頁,以此繞過防火墻入侵計算機;加密勒索方式的破壞性更巨大,此方式下散播的病毒會直接導致用戶的計算機文件訪問異常,給用戶帶來不可挽回的損失。比特幣勒索病毒便是以加密勒索方式攻擊了數百萬計算機,支付贖金用戶上萬,用戶根本無法獲取解密私鑰,無法破解,很多用戶只能通過支付贖金的方式獲取密鑰。
現階段基于密碼算法的計算機病毒依舊在蔓延,對此如何有效迅速地檢測并分析病毒的工作已經迫在眉睫,但是當前計算機病毒密碼算法的自動化系統研究仍舊亟待深入[3]。
雖然當前的計算機病毒逐漸海量化,類型也逐步復雜化,但基于病毒程序代碼分析,對比可知大部分病毒程序均是由引導模塊、傳染模塊、破壞表現模塊共同組成的。計算機病毒結構模式[4]具體見圖1。

圖1 計算機病毒結構模式
計算機病毒密碼算法檢測系統整體架構具體見圖2。

圖2 計算機病毒密碼算法檢測系統整體架構
用戶通過傳輸待分析病毒文件于系統中,經過三種算法檢測之后生成最終分析結果[5-6]。
第一環節,加殼算法檢測。基于加殼指紋特征庫和PE 文件信息熵相結合的方式,可保障計算機病毒加殼算法識別精確度。其中已知殼需構建指紋特征庫,以指紋特征匹配可迅速精準地檢測出既知病毒使用的加殼算法;而未知殼由于加殼會造成文件數據信息熵增高,對此可通過PE 文件信息熵方式對病毒進行檢測,以得知是否加殼。第二環節,靜態特征密碼算法檢測。以病毒靜態特征的詳細分析實現密碼算法和靜態特征的映射建設,通過算法特征匹配檢測病毒所使用的加密算法。第三環節,動態行為加密算法檢測。一般情況下病毒為了逃避追蹤檢測,會采取加殼或指令轉變技術隱匿算法的靜態特征碼,這時便可基于靜態檢測分析,進行算法動態分析與實時跟蹤,從而提升密碼算法檢測精確度。
3.2.1 加殼檢測算法分析與實驗
3.2.1.1 算法分析
傳統靜態加殼技術影響下,加殼病毒執行過程中會具備相同編碼,所以檢測與破解難度較小。為滿足計算機病毒防護需求,攻擊者提供了動態加殼技術理念,以隨機加密算法,加密病毒程序代碼與數據。為生成各種特征加密殼,通過隨機密鑰加密算法可實現多態引擎技術,基于保障同功能病毒樣本,以新方式生成不同病毒代碼序列,且序列中的特征碼完全不同,從而導致單一特征碼匹配檢測技術逐漸失去了效用。
3.2.1.2 檢測實驗
通?;赨PX 加殼算法指紋特征匹配模式進行已知殼檢測,結果具體見圖3。

圖3 UPX 加殼算法檢測結果
由圖可以看出,UPX 加殼算法能夠迅速且準確地識別病毒為64 為可執行程序,且可通過UPX 實現加殼處理。
檢測未知殼的時候利用以信息熵檢測技術研發檢測儀器,檢測結果具體見圖4。

圖4 未知殼算法檢測結果
由圖可以看出,第一個樣本評估為加殼,第二個樣本評估為未加殼,準確率較高。
3.2.2 靜態特征密碼檢測算法分析與實驗
3.2.2.1 算法分析
靜態特征密碼檢測算法即基于提取算法所需靜態特征碼,以標識密碼算法。所以特征碼提取合理性在很大程度上決定了密碼算法識別準確率。
就原理不同主要劃分為Hash 函數、分組密碼算法、公鑰密碼算法三種算法。Hash 函數密碼算法主要利用初始鏈值進行加密數據處理分析,即算法使用的初始鏈值保持不變的狀態下,以這些數據為靜態特征;分組密碼算法則通過S 盒和置換盒等常數發揮輔助作用,其中S 盒負責混淆視聽,定義為靜態數值,就AES 算法來講若病毒文件匹配到了S 盒,則病毒可能使用了AES 算法;公鑰密碼算法中的RSA 算法在生成密鑰的時候需采用2 個大素數,而大素數的生成以小素數表為載體,所以此特征可在RSA 算法中得以應用。
3.2.2.2 檢測實驗
通過靜態特征密碼檢測算法原理進行特征提取,并將其輸入到IDA 密碼算法檢測插件特征庫中。就AES 算法來講,S盒作為16×16 數組,在內存內可存儲為256 長度字符串。AES字節替代是關于字節的非線性變換,可通過可逆變換復合生成。
首先計算字節E 于有限域內的乘法逆元,結果記錄為F=f0f1f2f3f4f5f6f7,規定字節00 變化成自身;其次對結果F 進行仿映射變換,字節E 替代之后的結果記錄為字節G=G0G1G2G3G4G5G6G7。
基于轉變生成S 盒字節代替數組,以其中前32 個字節作為算法識別特征。

基于以上所提取靜態字符串特征,進行AES 密碼算法識別檢測,結果具體見圖5。

圖5 靜態AES 密碼算法識別結果
由圖可以看出,靜態特征密碼檢測算法可以快速準確識別出待檢測程序內所包含的AES 算法。
3.2.3 動態行為密碼檢測算法
分析與實驗
3.2.3.1 搭建環境
以Cuckoo 沙箱為載體搭建病毒動態行為密碼檢測分析環境,動態分析環境配置具體見表1。

表1 動態分析環境配置
3.2.3.2 算法庫調用
許多病毒程序基于調用既有密碼算法庫得以實現。以動態行為密碼檢測算法調動過程識別技術,能夠對病毒程序運行過程中加載的密碼算法動態鏈接庫加以準確識別,還可就API 函數跟蹤調取的加密函數與所傳輸相關參數進一步生成密碼算法調取序列,以還原勒索病毒中密碼算法的具體調用過程。病毒可通過Crypto API 給予的有關函數對用戶數據進行加密,并保障解密密鑰不被用戶獲取。
3.2.3.3 加密通信流量
就已經感染病毒的計算機來講,所有主機操作系統類型均需以網絡實現和攻擊者之間的通信交流,還可為了逃避檢測選用加密通信方式。在計算機病毒動態化運行過程中會產生網絡流量數據,將其儲存為pcap 格式文件,在此文件中可分析病毒所用加密通信協議。通過加密通信流量分析可以順利獲得病毒在外對接的控制端或中轉站的具體IP。對于比較簡單的加密通信方式來講,可以選用還原流量的方式,但是高強復雜的加密通信方式選用流量還原方式雖然難度非常大,但是依舊可在獲取IP 通信地址的同時,以防火墻為輔助阻隔木馬或者僵尸網絡,最大程度上防控威脅,避免信息丟失。
通過Cuckoo 沙箱環境執行病毒程序,可獲取加密流量數據報文,以數據報文分析可知,病毒程序與控制服務器的信息傳輸均會基于TLS 加密處理。
以WannaCry 勒索病毒為例進行計算機病毒密碼算法檢測系統測試。
WannaCry 是一種蠕蟲式勒索病毒軟件,在2017 年爆發時,大量高校與企業內網遭遇感染,甚至部分政府機構業務被迫中斷。此病毒加密設計比較復雜,切實結合了RSA 算法密鑰安全分發和AES 算法數據加密速度快的優點。為進一步檢驗病毒密碼算法檢測系統精確性,給定勒索病毒加密和解密過程具體見圖6。

圖6 WannaCry 勒索病毒加密與解密
放置WannaCry 勒索病毒試樣于計算機病毒密碼算法檢測系統后運行,跟蹤檢測發現了加密與解密函數的調用及參數,并詳細分析調用的加密函數與參數,可以切實還原其生成密鑰、導出密鑰、加密處理等流程。
Crypt Acquire Context A 函數調用可實現CSP 密鑰容器句柄獲取,而參數provider_type 指定加密算法類型,而數值24 代表PROV_RSA_AES,明確病毒程序基于AES 與RSA 算法混合加密方式進行加密??赏ㄟ^調用Crypt Gen Key 函數,以生成RSA 子密鑰;可通過調用Crypt Export Key 函數,以導出RSA 子公鑰;可通過調用Nt Write File 函數,編寫RSA子公鑰于文件內;可通過調用Crypt Export Key 函數,實時到處RSA 子私鑰;可通過調用Crypt Encrypt 函數,基于RSA主公鑰加密處理其子私鑰;可通過調用Nt Write File 函數,把加密之后的RSA 子私鑰結果儲存于文件中。在文件加密處理之后會通過網絡傳輸到攻擊者服務器上,但是只有在用戶繳納贖金時,才可以獲取解密密鑰,從而實現數據信息解密。