国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于動態(tài)二進制插樁的密鑰安全性檢測

2017-11-23 01:20林昊康緋光焱
網(wǎng)絡與信息安全學報 2017年11期
關鍵詞:加解密密碼學密鑰

林昊,康緋,光焱

?

基于動態(tài)二進制插樁的密鑰安全性檢測

林昊,康緋,光焱

(信息工程大學數(shù)學工程與先進計算國家重點實驗室,河南鄭州 450001)

針對加密軟件中的密鑰安全性問題,提出一種基于動態(tài)二進制插樁的密鑰安全性檢測方法。該方法面向CryptoAPI加密應用程序,首先通過對CryptoAPI密鑰應用模式的分析,指出潛在的密鑰安全性漏洞;然后以動態(tài)二進制分析平臺Pin為支撐,動態(tài)記錄程序運行期間的加解密過程信息;在此基礎上設計關聯(lián)性漏洞檢測算法,實現(xiàn)對密鑰安全性的檢測。測試結(jié)果表明,該方法能夠有效檢測出兩大類密鑰安全性漏洞。

密鑰安全性檢測;動態(tài)二進制插樁;Pin平臺;CryptoAPI加密應用程序

1 引言

越來越多的應用程序采用加密手段來保護數(shù)據(jù)安全,但是由于開發(fā)人員的編程失誤等原因,會導致加解密過程存在安全隱患。密鑰是密碼機制的核心環(huán)節(jié),然而近年來,由于密鑰的安全性所引發(fā)的各類漏洞和安全事件層出不窮,因此,對加密應用程序的密鑰進行安全性檢測在提高軟件安全性、保護隱私數(shù)據(jù)等方面具有重要意義。

目前,針對加密應用程序的密鑰安全性檢測主要通過兩種方法。方法一是綜合利用反匯編、二進制分析、軟件動態(tài)調(diào)試等逆向分析手段[1],對加密應用程序的加解密過程分別進行靜態(tài)語義分析和動態(tài)特征提取,從中發(fā)現(xiàn)潛在的密鑰安全性漏洞,此方法的弊端是需要耗費大量人工分析的時間和精力。方法二是基于安全漏洞檢測技術,由于密鑰安全性漏洞屬于軟件漏洞中密碼學漏洞的范疇,通過形式化證明、靜態(tài)程序分析、動態(tài)軟件測試[2]等方法進行密碼學安全性驗證,可以快速、有效地發(fā)現(xiàn)數(shù)據(jù)加解密過程中的密碼學缺陷,實現(xiàn)密鑰安全性的檢測?,F(xiàn)階段國內(nèi)外的研究主要是利用方法二的密碼學安全性驗證的思想,進行密碼學應用安全性漏洞的自動化檢測,已有的檢測工具主要有以下兩種類型。

第一類工具是依靠靜態(tài)程序分析和動態(tài)數(shù)據(jù)跟蹤技術來實現(xiàn)安全性檢測,代表性的檢測工具有以下幾種。2013年,針對Android加密應用程序,Egele等[3]總結(jié)出6條密碼學應用漏洞的規(guī)則,并實現(xiàn)了CryptoLint系統(tǒng)[3],該系統(tǒng)利用靜態(tài)程序切片技術跟蹤密鑰、初始化向量等數(shù)據(jù)流向,并進行漏洞規(guī)則的檢測,由于靜態(tài)分析的約束,該系統(tǒng)會存在一定程度的誤報。2014年,Shao等[4]建立Android應用程序的密碼學誤用模型,并實現(xiàn)了動靜結(jié)合的分析系統(tǒng)CMA(crypto misuse analyzer)[4],該系統(tǒng)首先對Android應用程序做靜態(tài)分析還原控制流圖和密碼函數(shù)調(diào)用圖,以此指導應用程序的動態(tài)執(zhí)行,并生成運行日志,在此基礎上進行密碼學安全性分析。李勇等[5]則以靜態(tài)程序掃描和動態(tài)跟蹤分析為技術支撐。實現(xiàn)了面向iOS應用的密碼學分析系統(tǒng)iCryptoTracer,該系統(tǒng)僅針對密碼學漏洞中的敏感數(shù)據(jù)泄露一類問題。除此之外,文獻[6~9]也分別從靜態(tài)程序分析和動態(tài)數(shù)據(jù)跟蹤角度進行了分析研究。第二類工具則是以漏洞挖掘中的Fuzzing技術為支撐。例如,POET(padding oracle exploitation tool)系統(tǒng)[10]通過Fuzzing技術對Web應用的Padding Oracle攻擊進行自動化檢測;FIAT[11]利用Fault Injection技術對密碼設備進行安全性檢測;2017年的Black Hat會議上,Aumasson等[12]提出通過Differential Fuzzing技術來檢測加密應用程序的安全性,并實現(xiàn)了自動化檢測工具CDF(crypto differential fizzing)。

從上述研究現(xiàn)狀中可知,雖然現(xiàn)階段的密碼學應用安全性漏洞檢測已經(jīng)取得了一定的研究成果,但其針對的目標問題相對單一、分散,沒有專門針對密鑰安全性的檢測方案,且目前還沒有完善的針對Windows平臺應用程序的密碼學應用安全性檢測技術。

本文以Windows平臺的CryptoAPI加密應用程序為研究對象,提出一種基于動態(tài)二進制插樁的密鑰安全性檢測方法。首先,對CVE信息庫中的密鑰安全性漏洞的成因機理進行分類分析;然后,分析CryptoAPI的3種密鑰應用模式及其潛在安全性漏洞;最后,利用動態(tài)二進制插樁技術提取加解密過程信息,以此為基礎設計關聯(lián)性漏洞檢測算法,實現(xiàn)對密鑰安全性檢測。利用上述方法,檢測出在通信軟件RTX中存在著可預測的不安全密鑰的漏洞,該漏洞會造成聊天信息的泄露。

2 密鑰安全性漏洞分類

密碼學漏洞是一類特殊的軟件漏洞,通常會造成中間人攻擊、旁路攻擊和暴力破解攻擊等[13]危害,對軟件安全、數(shù)據(jù)保密構成威脅,而由于密鑰安全性導致的密碼學漏洞更是威脅巨大,通常會造成嚴重的隱私數(shù)據(jù)泄露。本文對NVD(national vulnerability database)中2011年~2016年期間CVE信息庫中的密碼學漏洞進行統(tǒng)計分析,結(jié)果如圖1所示。

圖1 2011年~2016年NVD中密碼學漏洞數(shù)量變化

為研究密鑰安全性漏洞的成因,本文進一步從上述統(tǒng)計的密碼學漏洞中提取出與密鑰相關的127條漏洞記錄,對造成密鑰安全性漏洞的機理進行分析,并依據(jù)其機理進行分類與統(tǒng)計,結(jié)果如下所示。

1) 密鑰自身為弱密鑰而導致的安全漏洞

Key-Weak-Insecure密鑰的安全屬性沒有達到安全需求,包括密鑰長度、密鑰強度等。例如CVE-2012-0655漏洞,蘋果操作系統(tǒng)MacOS的libsecurity庫沒有合理限定X.509證書中的RSA密鑰長度,從而導致密鑰存在安全性缺陷。

Key-Weak-Randomless密鑰未經(jīng)隨機數(shù)生成器處理,不具有足夠的隨機性,如直接取自字符串等方式都會導致此類漏洞。例如CVE-2012- 4366,Belkin無線路由器基于WAN MAC地址的8 bit數(shù)字產(chǎn)生密碼,導致此類漏洞。

Key-Weak-UnsafeRNG密鑰經(jīng)過隨機數(shù)生成器的處理,但隨機數(shù)生成器自身存在安全缺陷。此類漏洞有CVE-2013-4442和CVE-2016-1618等。

Key-Weak-Predicable密鑰可以被預測或產(chǎn)生密鑰的隨機數(shù)種子可預測,包括無種子、固定種子、順序/時間種子以及種子復用等情況。CVE- 2011-0766、CVE-2012-2681和CVE-2013-5180都屬于此類漏洞。

2) 密鑰應用過程不當而導致的安全漏洞

Key-ImproperUse-Reuse不安全復用了密鑰,包括同一用戶不安全復用了自身的密鑰以及不同用戶之間復用了相同的密鑰等情況。例如在CVE-2016-2364漏洞中,Chrome插件HUDweb在不同的安裝用戶之間使用了相同的私鑰,就屬于此類漏洞。

Key-ImproperUse-Hardcoded密鑰被硬編碼在程序中,造成密鑰可以被直接獲取。CVE-2015-4080漏洞中AES密鑰和CVE-2015-3960漏洞中RSA私鑰都存在此類漏洞。

Key-ImproperUse-Exposed密鑰的存儲、傳輸?shù)冗^程處理不當,造成密鑰敏感信息泄露。存儲不當導致的安全漏洞如CVE-2014-0199,傳輸不當導致的安全漏洞如CVE-2011-2223。

圖2是不同類型的密鑰安全性漏洞的數(shù)量統(tǒng)計。從整體上看,應用過程的安全漏洞數(shù)量共67個,由弱密鑰導致的漏洞有60個,前者要略高于后者。針對具體的漏洞類型,密鑰敏感信息泄露類型的漏洞所占比重最高,由于密碼機制的復雜性,造成密鑰敏感信息泄露的原因多種多樣,例如CVE-2015-3322漏洞是Lenovo ThinkServer RD350等系列服務器由于采用了弱算法來加密存儲用戶與管理員的BIO密碼而導致密鑰泄露;CVE-2011-2483漏洞是由于未能正確處理8 bit特征從而導致密鑰泄露。此類漏洞的成因復雜,要實現(xiàn)對此類漏洞的檢測相對困難。在統(tǒng)計結(jié)果中,與隨機數(shù)、隨機數(shù)種子相關的3類漏洞Key-Weak- Randomless、Key-Weak-UnsafeRNG、Key-Weak- Predicable共占總漏洞數(shù)的35%,由此可見,隨機性缺陷是引發(fā)密鑰安全漏洞的一個重要因素。

圖2 密鑰安全性漏洞機理的分類統(tǒng)計

3 CryptoAPI密碼機制分析

在密碼學的現(xiàn)實應用中,應用程序通過調(diào)用各類密碼算法庫來實現(xiàn)隱私數(shù)據(jù)的保護、安全的數(shù)據(jù)通信。CryptoAPI是目前應用最為廣泛的密碼庫之一,是微軟針對Win32平臺的應用程序,為開發(fā)者提供了豐富的編程接口,包括數(shù)據(jù)加解密、散列計算、數(shù)字簽名和證書管理等功能,這些功能函數(shù)為應用軟件的開發(fā)提供了極大的便利。從勒索軟件WannaCry[14]到通信軟件FeiQ,都采用CryptoAPI來實現(xiàn)安全的數(shù)據(jù)加解密過程。

在CryptoAPI的機制中,真正實現(xiàn)加解密操作的是獨立的模塊,全稱為加密服務提供者(CSP, cryptographic service provider),每個CSP有自己的密鑰數(shù)據(jù)庫,統(tǒng)一管理加解密過程中的會話密鑰、公私鑰對。本文在對CryptoAPI密鑰機制分析的基礎上,結(jié)合對大量樣本中CryptoAPI調(diào)用信息的分析,提取出在實際應用軟件中,密鑰的3種主要應用模式,圖3為3種模式對應的密碼函數(shù)流程。

圖3 CryptoAPI 3種密鑰應用模式

模式一 通過調(diào)用接口函數(shù)在CSP內(nèi)部產(chǎn)生

模式一的核心函數(shù)是CryptGenKey,通過傳入CSP句柄和相關標志位參數(shù),在CSP內(nèi)部生成指定算法的密鑰,返回給用戶密鑰句柄。此密鑰句柄是不透明的,即用戶無法通過密鑰句柄直接訪問密鑰的內(nèi)容,只能利用此句柄進行加解密操作。密鑰句柄的不透明特性,降低了密鑰泄露的風險,在一定程度上提高了CryptoAPI體制的密鑰安全性。

模式二 通過散列值派生出會話密鑰

模式二將散列運算引入到密鑰的生成過程中,其具體的調(diào)用模式如下:首先CryptCreateHash申請散列算法句柄,然后通過CryptHashData傳入要進行散列計算的散列對象,最后通過CryptDeriveKey從散列運算結(jié)果中派生出指定算法的會話密鑰,并返回密鑰句柄。

模式三 通過接口函數(shù)從外部導入到CSP中

CryptoAPI提供了CryptImportKey和Crypt- ExportKey 2個接口函數(shù)完成密鑰的導入導出操作。在對海量樣本的分析中發(fā)現(xiàn),應用程序會事先通過模式一或模式二生成密鑰,然后通過CryptExportKey將密鑰以Blob形式導出并保存。在軟件真正執(zhí)行過程中,直接通過CryptImportKey將事先存儲的密鑰Blob導入到CSP中,供應用程序使用。

3種密鑰應用模式分別存在不同類型的密鑰安全性漏洞。針對模式一,密鑰在CryptGenKey函數(shù)內(nèi)部生成,開發(fā)者無法自行指定密鑰也無法干預密鑰的內(nèi)部生成過程,保證了密鑰的安全性。但是,傳入的參數(shù)dwFlags標志位必須滿足對應密碼算法的安全需求,否則會導致弱密鑰的安全性漏洞,這種類型的漏洞在現(xiàn)實應用中的數(shù)量較少。對此類安全性漏洞進行檢測,需要提取應用程序動態(tài)執(zhí)行時CryptGenKey的dwFlags參數(shù),然后對參數(shù)進行條件檢查。在模式二中,進行散列計算的散列對象和散列算法將直接影響到密鑰的安全性。與散列相關的密鑰安全性漏洞出現(xiàn)較多,常見的漏洞有:每次散列計算的散列對象為固定值導致密鑰可預測;散列計算的散列對象為數(shù)字和字母組合的簡單字符串,且散列算法為MD5等已被證實是不安全的算法時,導致生成弱密鑰。散列函數(shù)應用廣泛,除了派生密鑰外,還用于完整性檢驗、簽名與驗簽等,而單一密碼函數(shù)的參數(shù)檢查無法實現(xiàn)對此類安全漏洞的檢測,為此下文引入關聯(lián)性檢測,即對多個彼此存在關聯(lián)關系的密碼函數(shù)及其參數(shù)進行聯(lián)合檢查,從而實現(xiàn)漏洞檢測。在模式三中最大的安全威脅是:一旦密鑰Blob處理不當,就會造成密鑰泄露。比如直接將會話密鑰的Blob明文硬編碼在應用程序中,或者Blob未經(jīng)安全加密處理就進行本地存儲或網(wǎng)絡發(fā)送,都會造成嚴重的密鑰信息泄露,屬于密鑰應用過程不當而導致的漏洞。對于這類漏洞的檢測,則需要借助動態(tài)污點分析技術[15],跟蹤密鑰Blob的數(shù)據(jù)流,包括正向跟蹤CryptExportKey導出密鑰Blob的流向和逆向追蹤CryptImportKey導入密鑰Blob的來源。

基于以上分析,CryptoAPI應用程序主要存在Key-Weak-Insecure和Key-Weak-Predicable兩類弱密鑰漏洞,本文接下來將圍繞這兩類密鑰安全性漏洞進行檢測。檢測的工作包含2個環(huán)節(jié):1) 設計準確、高效的密鑰安全性檢測規(guī)則和檢測算法;2) 通過本節(jié)的分析形成密碼函數(shù)知識庫,指導加解密過程信息的提取。

4 密鑰安全性檢測

4.1 檢測規(guī)則的形式化描述

密鑰安全性檢測需要對加解密過程信息進行規(guī)則檢測,本節(jié)設計了能夠?qū)γ艽a函數(shù)、參數(shù)等信息進行規(guī)則檢測的形式化描述方法。

定義1 加解密過程

加解密過程表示為軟件動態(tài)執(zhí)行的密碼函數(shù)調(diào)用序列1,2,···, f,其中f表示為在第個時刻的密碼函數(shù)調(diào)用信息。每個f定義為三元組{},其中表示密碼函數(shù)調(diào)用點地址,表示調(diào)用的密碼函數(shù)名稱,為參數(shù)集合{P|?},表示密碼函數(shù)調(diào)用的參數(shù)信息。

定義2 安全性漏洞檢測規(guī)則

面向加解密過程的安全性漏洞檢測規(guī)則分為原子規(guī)則和復合規(guī)則。原子規(guī)則定義為三元組{},其中表示密碼函數(shù)名稱,表示觸發(fā)因子,表示關聯(lián)因子。復合規(guī)則定義為原子規(guī)則的組合。

定義3 觸發(fā)因子

觸發(fā)因子定義為集合{<P,C>|?},其中P表示所要檢測的參數(shù),C表示安全性漏洞觸發(fā)條件。觸發(fā)因子表示對密碼函數(shù)的特定參數(shù)進行相應的條件檢查,如果符合條件則表示激活觸發(fā)因子,滿足了此條安全性漏洞檢測的原子規(guī)則。

定義4 關聯(lián)因子

對于密碼函數(shù)的分析發(fā)現(xiàn),密碼函數(shù)的調(diào)用呈現(xiàn)關聯(lián)性特征,即為實現(xiàn)一個復雜的密碼學功能,需要由多個彼此關聯(lián)的密碼函數(shù)協(xié)同完成,而這多個密碼函數(shù)間通過特定的數(shù)據(jù)對象傳遞信息。圖4所示是一次CryptoAPI的加密操作,這是一種以句柄和句柄指針為媒介彼此關聯(lián)、傳遞信息的方式。另外一種關聯(lián)關系則是不同密碼算法在參數(shù)取值上存在相等關系。因此,有的安全性漏洞需要多個彼此關聯(lián)的原子規(guī)則共同作用才會觸發(fā),對于此類安全性漏洞的檢測,需要進行復合規(guī)則的檢查,而復合規(guī)則內(nèi)的原子規(guī)則通過特定的關聯(lián)因子彼此連接。

圖4 CryptoAPI加密示例

關聯(lián)因子定義為三元組{,,},其中表示源關聯(lián)對象,表示與之相關聯(lián)規(guī)則的目標密碼函數(shù)名稱,表示目標密碼函數(shù)的目標關聯(lián)對象。

通過上述定義,實現(xiàn)對安全性漏洞檢測規(guī)則的形式化描述,且該檢測規(guī)則具有良好的通用性和擴展性,不局限于對CryptoAPI的密鑰安全性漏洞檢測。將形式化的檢測規(guī)則映射到XML規(guī)則描述文件中,分析程序參照規(guī)則文件對加解密過程信息進行規(guī)則檢測,下面給出針對每條規(guī)則的安全性漏洞檢測算法。

算法1 安全性漏洞檢測算法

輸入:動態(tài)提取的加解密過程信息1,2,···, f,檢測規(guī)則

輸出:漏洞類型及漏洞點的密碼函數(shù)、參數(shù)信息

算法開始

1) 依次從加解密過程信息中讀取一條密碼函數(shù)調(diào)用信息f,根據(jù)檢測規(guī)則進行檢查。如果是原子規(guī)則,則執(zhí)行2);如果是復合規(guī)則,則執(zhí)行3)。

2) 首先,判斷是否匹配,檢查觸發(fā)因子是否匹配。若兩者均匹配,說明滿足此安全性缺陷檢測的原子規(guī)則,輸出漏洞信息,然后轉(zhuǎn)到1)進入下一次檢查。如果不匹配,則直接轉(zhuǎn)到1)進行下一次檢查。

3) 從復合規(guī)則中依次取出一條原子規(guī)則,進行原子規(guī)則的檢查。如果匹配,則執(zhí)行4);否則轉(zhuǎn)到1)進入下一次檢查。

4) 檢查此條原子規(guī)則的關聯(lián)因子。如果非空,則根據(jù)關聯(lián)因子從加解密過程信息中搜索與之匹配的關聯(lián)信息f,如果找到關聯(lián)信息f,則以f為輸入轉(zhuǎn)到3)進行復合規(guī)則的下一條原子規(guī)則檢查;如果未找到關聯(lián)記錄,則表明復合規(guī)則檢查不通過,轉(zhuǎn)到1)進入下一次檢查。如果為空,則表明已完成復合規(guī)則的檢查,輸出漏洞信息,轉(zhuǎn)到1)進入下一次檢查。

算法結(jié)束

4.2 基于規(guī)則的密鑰安全性檢測

下面針對要檢測的Key-Weak-Insecure和Key-Weak-Predicable兩類密鑰安全性漏洞,用定義的形式化語言描述其檢測規(guī)則。

漏洞1 Key-Weak-Insecure

漏洞1在CryptoAPI的應用中有3種具體表現(xiàn)形式。1) 在調(diào)用CryptGenKey函數(shù)生成指定算法密鑰時,dwFlags參數(shù)的高位16 bit指明密鑰的長度信息,如果不能正確通過參數(shù)指定長度信息,便會導致生成弱密鑰。2) 針對于密鑰導入和導出函數(shù)而言,pbData參數(shù)指向密鑰Blob數(shù)據(jù),Blob具有特定的格式規(guī)范,其包含有算法標志、密鑰長度、密鑰數(shù)據(jù)等數(shù)據(jù)成員,因此需要檢測Blob是否為弱密鑰。3) 在以散列值派生密鑰的模式中,當散列運算的對象為數(shù)字和字母組合的簡單字符串且散列算法為MD5等已被證實是不安全的算法時,其派生的密鑰則被認為是不安全的弱密鑰。漏洞1對應的檢測規(guī)則如下所示,其中1、2、3為原子規(guī)則,4為復合規(guī)則。

漏洞2 Key-Weak-Predicable

在散列值派生密鑰的過程中,如果密鑰種子參數(shù)為固定種子,則認為其派生的密鑰是可預測的不安全密鑰。此漏洞檢測規(guī)則如下所示。

5 加解密過程信息的動態(tài)提取

加解密過程信息的提取是密鑰安全性檢測的基礎,本文通過動態(tài)二進制插樁技術提取應用程序動態(tài)執(zhí)行時的加解密過程信息,最終實現(xiàn)動態(tài)信息提取與離線規(guī)則檢測相結(jié)合的密鑰安全性檢測方法。圖5所示為動態(tài)信息提取的框架,利用動態(tài)二進制平臺,監(jiān)控應用程序調(diào)用密碼算法庫的過程,按照函數(shù)參數(shù)庫提取動態(tài)執(zhí)行過程中的API名稱、返回值和輸入輸出參數(shù)等信息,并最終形成完整的加解密過程信息。

動態(tài)二進制插樁(DBI,dynamic binary instrumentation)技術[16]指在不影響程序動態(tài)執(zhí)行結(jié)果的前提下,按照用戶的分析需求,在程序執(zhí)行過程中插入特定分析代碼,實現(xiàn)對程序動態(tài)執(zhí)行過程的監(jiān)控與分析。目前,應用廣泛的動態(tài)二進制分析平臺有Pin[17]、DynamoRIO[18]和Valgrind[19]等。其中Intel公司的Pin平臺提供了豐富的編程接口,開發(fā)者可以通過調(diào)用編程接口方便地獲取程序動態(tài)執(zhí)行期間的指令、內(nèi)存和寄存器等信息,實現(xiàn)細粒度的動態(tài)監(jiān)控,因此本文選取Pin平臺進行動態(tài)分析。

圖5 動態(tài)監(jiān)控記錄的框架

Pin提供了指令、基本塊和系統(tǒng)調(diào)用等多個層次插樁分析,其中,RTN是函數(shù)級的插樁機制,能夠自動識別API函數(shù);Trace是軌跡層次的插樁機制,能夠自動識別單一入口、多出口的指令軌跡塊。本文通過RTN插樁和Trace插樁的結(jié)合,實現(xiàn)對CryptoAPI動態(tài)調(diào)用信息的獲取。

算法2 加解密過程信息動態(tài)提取算法

輸入 加密應用程序

輸出 加解密過程信息1,2,···, f

RTN插樁模塊

1) 監(jiān)控每一次API調(diào)用,判斷是否滿足兩個條件:是否是需要分析的密碼函數(shù),是否是來自用戶空間的函數(shù)調(diào)用。若滿足條件則執(zhí)行2),否則不處理。

2) 更新為當前密碼函數(shù)調(diào)用的返回地址。

3) 依據(jù)函數(shù)參數(shù)庫,獲取當前動態(tài)執(zhí)行狀態(tài)的密碼函數(shù)輸入?yún)?shù)信息。

Trace插樁模塊

1) 攔截Trace軌跡,判斷當前指令的地址空間,如果位于用戶空間,則執(zhí)行步驟2);否則不處理。

2) 獲取Trace軌跡的入口指令的地址,與當前狀態(tài)的匹配。若相等,則說明識別出當前動態(tài)執(zhí)行的狀態(tài)是對應密碼函數(shù)的返回,此時清空并轉(zhuǎn)到步驟3);否則不處理。

3) 依據(jù)函數(shù)參數(shù)庫,獲取當前動態(tài)執(zhí)行狀態(tài)的密碼函數(shù)輸出參數(shù)信息、返回值信息。

6 測試分析

6.1 功能測試

為驗證基于動態(tài)二進制插樁的密鑰安全性檢測方法的正確性和有效性,本文針對Key-Weak- Insecure和Key-Weak-Predicable兩類密鑰安全性漏洞,選取1 000個包含CryptoAPI調(diào)用信息的樣本進行測試分析,測試環(huán)境:Win7 x64操作系統(tǒng),Intel i7處理器,16 GB內(nèi)存,2 T硬盤,Pin 2.14-71313 動態(tài)二進制平臺。

測試結(jié)果中,存在漏洞的樣本比例達到6%,其中Key-Weak-Insecure類漏洞有5個,Key- Weak-Predicable類漏洞有55個,前者遠少于后者,這也說明在實際CryptoAPI應用程序中更易發(fā)生由于密鑰種子問題而導致密鑰可預測的漏洞。對于存在密鑰安全性漏洞的樣本而言,其漏洞造成的實際危害取決于具體的加解密過程。下面以RTX(騰訊通 2015)為例進行詳細的分析說明。

RTX是騰訊公司推出的企業(yè)級即時通信平臺,提供消息發(fā)送、文本傳輸?shù)榷喾N辦公功能。通過RTX提供的服務器和客戶端軟件,部署搭建測試環(huán)境,然后對客戶端的登錄、消息發(fā)送等過程進行檢測分析,結(jié)果如表1所示。

表1 RTX的檢測結(jié)果

檢測結(jié)果表明在sqlite3.dll的派生密鑰過程中,傳入的密鑰種子參數(shù)為固定的字符串“RTX!”,從而導致產(chǎn)生可預測的不安全密鑰,且該密鑰對于不同RTX用戶而言是相同的。為了對檢測結(jié)果進行驗證,手動對RTX進行逆向分析,圖6所示為密鑰派生過程的反編譯代碼片段,代碼顯示通過對“RTX!”字符串進行MD5計算派生出RC4算法密鑰,證實了檢測結(jié)果的準確性。

圖6 反編譯代碼片段

為了研究此漏洞會帶來的危害,進一步對加解密過程及通信機制進行逆向分析,跟蹤不安全密鑰的應用過程。通過分析發(fā)現(xiàn),聊天信息的發(fā)送首先調(diào)用Crypt.dll的oi_symmetry_encrypt2函數(shù)進行對稱加密,而該函數(shù)是RTX自實現(xiàn)并封裝的TEA算法,聊天信息的發(fā)送過程并未用到上述不安全密鑰。但是在信息發(fā)送之后,RTX會利用不安全密鑰對聊天信息進行RC4加密,并將密文存儲到本地文件。

根據(jù)不安全密鑰編寫逆向解密過程,對本地的密文文件進行解密,圖7所示為一段解密后的明文片段,包括聊天信息和字體信息等內(nèi)容。由于不安全密鑰在不同用戶間是相同的,因此會導致本地加密存儲的聊天信息可以被任何人解密,造成聊天信息泄露,是一種較為嚴重的隱私泄露。

6.2 性能對比分析

將本文方法與現(xiàn)有的典型工具從技術手段和目標漏洞類型2個角度進行對比分析,結(jié)果如表2所示。

通過表2中的數(shù)據(jù)可以看出,相較于CryptoLint而言,本文所采用的動態(tài)分析方法準確更高;CMA和iCryptoTracer具有動靜結(jié)合的混合分析優(yōu)勢,但是iCryptoTracer僅針對單一的敏感數(shù)據(jù)泄露問題,CMA檢測的密碼學誤用相對簡單,不能實現(xiàn)復雜問題的深度檢測,而本文對密鑰安全性的檢測顯然更加深入、全面;POET、FIAT和CDF均采用了Fuzzing技術做支撐,但它們面向的目標漏洞類型僅針對特定類別的攻擊或漏洞,而本文的方法能夠覆蓋整個密鑰安全性漏洞的檢測。另一方面,本文對檢測規(guī)則的形式化描述方法通用性強,可以進一步應用于數(shù)據(jù)加解密過程的其他安全性檢測。

7 結(jié)束語

本文首先對CryptoAPI密碼機制進行分析,然后給出了密鑰安全性檢測規(guī)則的形式化描述,最后討論了基于動態(tài)二進制插樁的密鑰安全性檢測方法。實驗測試表明,本文的方法對于CryptoAPI應用程序具有很好的檢測效果,能夠正確地提取應用程序動態(tài)運行時的加解密過程信息,并且在此基礎上能夠準確地檢測加解密過程中潛在的密鑰安全性漏洞,通過與其他檢測工具之間進行對比,體現(xiàn)了本文方法的優(yōu)越性。

由于動態(tài)分析的限制,當動態(tài)執(zhí)行沒有觸發(fā)加解密函數(shù)時,就無法獲取加解密過程信息進行安全性檢測。提高動態(tài)分析的路徑覆蓋率,需要以樣本的完整性分析技術為支撐,能夠?qū)崿F(xiàn)環(huán)境感知、敏感分支點識別判斷,尤其在惡意代碼分析領域,其采用的反檢測、反調(diào)試等技術手段,使行為分析缺乏完整性,加解密行為無法被激發(fā)。針對樣本的完整性分析是當前研究的一大熱點、難點問題。

圖7 密文文件解密片段

表2 各種工具從技術手段和目標漏洞類型角度進行分析結(jié)果對比

[1] 段鋼.加密與解密(第三版)[M].北京:電子工業(yè)出版社,2008. DUAN G. Encryption and decryption(Third Edition)[M]. Beijing: Electronic Industry Press,2008.

[2] 李舟軍, 張俊賢, 廖湘科,等. 軟件安全漏洞檢測技術[J]. 計算機學報, 2015, 38(4):717-732.

LI Z J,ZHANG J X,LIAO X K,et al.Software security vulnerability detection technology[J].Chinese Journal of Computers,2015, 38(4): 717-732.

[3] EGELE M, BRUMLEY D, FRATANTONIO Y, et al. An empirical study of cryptographic misuse in android applications[C]// ACM Sigsac Conference on Computer & Communications Security. 2013:73-84.

[4] SHAO S, DONG G, GUO T, et al. Modelling analysis and auto-detection of cryptographic misuse in android applications[C]// IEEE International Conference on Dependable, Autonomic and Secure Computing. 2014:75-80.

[5] LI Y, ZHANG Y, LI J, et al. iCryptoTracer: Dynamic Analysis on Misuse of Cryptography Functions in iOS Applications[C]// International Conference on Network and System Security. 2014: 349-362.

[6] MA S, LO D, LI T, et al. CDRep: automatic repair of cryptographic misuses in android applications[C]// ACM on Asia Conference on Computer and Communications Security.2016:711-722.

[7] CHATZIKONSTANTINOU A, NTANTOGIAN C, KAROPOULOS G, et al. Evaluation of cryptography usage in android applications[C]// Eai International Conference on Bio-Inspired Information and Communications Technologies. 2016:83-90.

[8] ALMEIDA J B, BARBOSA M, FILLI?TRE J C, et al. CAOVerif : an open-source deductive verification platform for cryptographic software implementations[J]. Science of Computer Programming, 2014, 91(91):216-233.

[9] FAHL S, HARBACH M, MUDERS T, et al. Why eve and mallory love Android: an analysis of android SSL (in)security[C]// ACM Conference on Computer and Communications Security. 2012:50-61.

[10] RIZZO J, DUONG T. Practical padding oracle attacks[C]// Usenix Conference on Offensive Technologies. 2010:1-8.

[11] BARENGHI A, BREVEGLIERI L, KOREN I, et al. Fault injection attacks on cryptographic devices: theory, practice, and counter- measures[C]// Proceedings of the IEEE.2012:3056-3076.

[12] Automated testing of crypto software using differential fuzzing[EB/OL].https://www.blackhat.com/docs/us-17/wednesday/us-17-Aumasson-Automated-Testing-Of-Crypto-Software-Using-Differential-Fuzzing.pdf.

[13] LAZAR D, CHEN H, WANG X, et al. Why does cryptographic software fail? A case study and open problems[C]// Asia-Pacific Workshop. 2014:1-7.

[14] 安天針對勒索蠕蟲“魔窟”(WannaCry)的深度分析報告[EB/OL]. http://www.antiy.com/response/wannacry.html.

[15] NEWSOME J, SONG D. Dynamic taint analysis for automatic detection, analysis, and signature generation of exploits on commodity software[C]//Conference on NDSS. 2005.

[16] NETHERCOTE N. Dynamic binary analysis and instrumentation or building tools is easy[D]. Trinity Lane, Cambridge: University of Cambridge. 2004.

[17] LUK C K, COHN R, MUTH R, et al. Pin: building customized program analysis tools with dynamic instrumentation[J]. ACM Sigplan Notices, 2005, 40(6):190-200.

[18] BRUENING D L. Efficient, transparent, and comprehensive runtime code manipulation[C]// Massachusetts Institute of Technology.2004.

[19] NETHERCOTE N, SEWARD J. Valgrind:a framework for heavyweight dynamic binary instrumentation[C]// ACM Sigplan Conference on Programming Language Design & Implementation. 2007:89-100.

Key security detection based on dynamic binary instrumentation

LIN Hao, KANG Fei, GUANG Yan

(State Key Laboratory of Mathematical Engineering and Advanced Computing, PLA Information Engineering University, Zhengzhou 450001,China)

For the key security problem in the cryptographic software, the method of key security detection based on dynamic binary instrumentation was proposed. Aimed at CryptoAPI cryptographic software, the method firstly pointed out the potential key security vulnerabilities by analyzing the key applying patterns of CryptoAPI. Then it recorded cryptographic data information during the execution of the program dynamically using Pin platform. On this basis, a relevance vulnerability detection algorithm was designed to detect the key security. Test result indicated that it can effectively detect the two kinds of key security vulnerabilities.

key security detection, dynamic binary instrumentation, Pin platform, CryptoAPI cryptographic software

TP309

A

10.11959/j.issn.2096-109x.2017.00213

林昊(1992-),男,山東榮成人,信息工程大學碩士生,主要研究方向為網(wǎng)絡信息安全。

康緋(1972-),女,河南周口人,信息工程大學教授,主要研究方向為網(wǎng)絡信息安全。

光焱(1983-),男,安徽樅陽人,博士,信息工程大學講師,主要研究方向為密碼學、網(wǎng)絡信息安全。

2017-09-14;

2017-10-23。

林昊,284149270@qq.com

猜你喜歡
加解密密碼學密鑰
幻中邂逅之金色密鑰
密碼系統(tǒng)中密鑰的狀態(tài)與保護*
圖靈獎獲得者、美國國家工程院院士馬丁·愛德華·海爾曼:我們正處于密鑰學革命前夕
TPM 2.0密鑰遷移協(xié)議研究
信息安全專業(yè)密碼學課程體系的建設
密碼學課程教學中的“破”與“立”
一種對稱密鑰的密鑰管理方法及系統(tǒng)
PDF中隱私數(shù)據(jù)的保護方法
電子取證中常見數(shù)據(jù)加解密理論與方法研究
網(wǎng)絡數(shù)據(jù)傳輸?shù)募咏饷芟到y(tǒng)研究