衛志剛 張曉龍

摘 要:在智能手機的普遍應用過程中,大量Android的應用程序存在著一定的密碼誤用問題,對此相關學者對密碼學誤用檢測方式進行了系統的研究分析。在常規狀況之下,密碼學誤用是在程序操作以及實現過程中對于密碼的各種算法調用出現了失誤問題,導致密碼機制無法實現既定的安全標準的狀況。而通過動靜結合的分析方式對密碼學誤用進行檢測,精準度相對較高,可以精準檢測各種誤用狀況。
關鍵詞:Android應用程序 密碼學誤用 檢測方法
中圖分類號:TN919 文獻標識碼:A 文章編號:1672-3791(2018)03(b)-0011-02
1 基于Android CMA的靜態密碼學誤用檢測模塊
基于smali文件內容生成控制圖以及調用圖,并根據控制流圖和調用圖,對應用程序與密碼相關的函數調用進行分析,得到密碼相關的函數名以及執行密碼函數調用的路徑以及分支。靜態分析的具體流程如圖1所示。
在基于Android CMA的靜態密碼學誤用檢測模塊中,首先要對APK文件解壓,獲得dex文件,再利用Baksmali以及smali0將dex文件進行轉換,使其變為smali格式。再對smali文件進行分析,生成控制流圖以及調用圖。在整個控制流圖中主要是通過節點、連接節點的邊構成,這些節點是基本塊。在Android CMA中,這些基本塊主要是通過不同的dalvik字節碼共同構建形成,其連接節點的邊主要是基于jump指令以及異常處理兩個程序共同構建形成。在進行控制流圖的構建過程中,先通過jump指令以及異常處理程序的目的地址對各個基本塊進行鏈接處理。在調用圖中要先對調用的入口進行分析,基于Android自身的系統特征,對不同的活動的程序如onCreate、onResume、onStart以及onPause等作為主要的調用操作的入口,基于這些入口對其進行系統分析,進而將不同的函數信息進行鏈接應用。
2 基于Android CMA的動態密碼學誤用檢測模塊
基于Android CMA的動態密碼學誤用檢測模塊主要是基于靜態分析過程中獲得的各項數據信息以及結果,通過執行密碼函數調用的路徑分支,對不同的函數密碼進行調用監控處理,了解不同函數以及參數信息,詳實記錄整理。
動態密碼學誤用檢測模塊在實踐中主要應用的技術手段是APK重打包技術。APK重打包利用API monitor工具開展操作,在APK中嵌入一個日志代碼,獲得相關運行記錄。
在進行Android應用程序密碼學誤用檢測方法的動態處理過程中應用的是動態污點分析方式,是一種在應用程序運行過程中,對于各種信息記錄進行動態的標記、跟蹤以及分析的實時性檢測技術與手段。在應用程序的安全中,因為動態污點分析方式可以有效地組織一些廣泛范圍的攻
圖1 基于Android CMA的靜態密碼學誤用檢測模塊流程
圖2 Android 密碼誤用案例
擊,可以對緩沖區溢出攻擊、命令注入攻擊、格式字符串攻擊以及跨站點腳本攻擊等攻擊方式進行處理,檢測相對較為精準。
2.1 污點源
污染源是基于Android CMA的動態密碼學誤用檢測模塊中的重點內容,是在相關應用程序數據被一些污點標記過程中的初始化的描述處理,是通過何種污點標記對特定的污染敏感數據進行標記的方式手段。在程序數據中涵蓋了不同的污染類型,主要是變量名(variable names)以及函數返回值(function-return values)、數據讀取與I/O流等相關內容,其涵蓋了文件傳遞以及網絡信息系統的鏈接。
2.2 傳播策略
傳播策略在基于Android CMA的動態密碼學誤用檢測模塊中的主要作用是對執行污點標記過程中的傳播方式進行分析。在進行污點傳播過程中可以將其具體步驟進行如下概括分析,設置特定的語句S,將其產生的數據叫做起始數據信息,利用控制污點標記的方式進行函數的分配,其稱之為映射函數。在實踐中對于S結果產生影響的稱之為影響數據描。因為初始數據是各種信息數據的集合,識別相對較為容易,這些數據在寄存器或者內存中進行存儲,其各項信息數值會基于S的執行也出現不同的變化。同時,也有不同的模式識別影響相關數據以及定義映射函數,因為在操作中其既定的目標具有一定的靈活性。對此可以基于實際的狀況,進行傳播策略的定義與處理。
2.3 污點池
污點池是基于Android CMA的動態密碼學誤用檢測模塊中的代碼地址,在操作中,用戶要想對多個或者幾個存儲單元中的污點進行標準監測,可以基于ID地址、內存地址以及代碼地址,在特定代碼地址中綜合關聯此內存地址的污點標記執行一個或者多個不同的檢測與操作。其中ID是被用戶分配給一組匯點或者一個匯點的整數數值。
3 基于Android CMA的密碼誤用檢測模塊
在基于Android CMA的密碼誤用檢測模塊中,主要是通過對各種記錄結果進行分析,獲得其需要的密碼誤用分析結果。在操作中要利用密碼誤用檢測模塊進行函數名的匹配分析,了解其各項參數信息,是否存在與預先設定的密碼誤用模型相吻合的模型,然后進行各項參數信息的分析處理。密碼誤用識別模塊對記錄結果進行分析,得到密碼誤用漏洞分析結果。
在實踐中使用基于Android CMA的密碼誤用檢測模塊,對一些使用了密碼機制保護用戶敏感數據的應用程序進行驗證分析,發現一半以上的應用都存在密碼勿用。觀察某一應用的程序調用如圖2所示,其中第一行中的函數參數為MD5,這種狀況就是密碼誤用中的hash算法勿用。
4 結語
在常規狀況之下,密碼學誤用是在程序操作以及實現過程中對于密碼的各種算法調用出現了失誤問題,導致密碼機制無法實現既定的安全標準的狀況。而通過動靜結合的分析方式對密碼學誤用進行檢測,精準度相對較高,可以精準檢測各種誤用狀況。
參考文獻
[1] 邵帥,王眉林,時志偉,等.Android和iOS應用軟件密碼誤用漏洞分析[A].信息安全漏洞分析與風險評估大會[C].2014.
[2] 曹歡歡.Android平臺下的安全檢測軟件的設計與實現[D].江蘇科技大學,2015.