蘇圣魁 劉樹發(fā) 王婷
摘 要:智能終端的普及促進了各種APP應用的快速發(fā)展,這些應用極大地方便了人們的工作生活,但是在APP應用快速發(fā)展的同時由于其自身存在的一些安全問題也給民眾造成了巨大的危害:個人隱私信息泄露、銀行賬戶被竊取等。只有及時地發(fā)現(xiàn)存在的安全問題,才能更好地提高APP應用的安全性。該文從基于Android的APP應用開始入手,對當前常見的幾類安全問題進行了分析,提出了對這些安全問題的檢測方法和思路。
關鍵詞:Android APP 安全檢測
中圖分類號:TP393.08 文獻標識碼:A 文章編號:1674-098X(2016)05(a)-0081-02
隨著智能終端的大量普及,各種APP應用應運而生,金融類APP、生活類APP,以及娛樂類APP應用程序數(shù)量眾多,這些APP應用極大地方便了人們的生活,足不出戶即可實現(xiàn)購物、訂餐、金融等服務。但是這些APP應用在極大地便利了人們的同時還帶來了一系列的安全問題,這些安全問題都可能造成個人信息泄露、財產(chǎn)損失等。如何對APP應用程序進行安全檢測,提高APP的安全性成為目前一個亟需解決的問題。
1 當前APP應用程序常見安全問題
在當前眾多的APP應用中面臨一系列的安全威脅,這些安全威脅都可能給民眾造成巨大的損失,APP存在的主要安全問題有以下幾方面。
1.1 程序安全
1.1.1 反編譯二次打包安全
由于大部分基于Android的APP應用程序沒有進行加殼保護,導致APP可以被攻擊者反編譯,反編譯后植入廣告、惡意代碼、病毒等重新打包。二次打包后雖然從性能、用戶體驗、外觀都與正規(guī)APP一模一樣,但后臺卻在悄悄地進行著竊取用戶信息、界面劫持、偷窺隱私、廣告騷擾等惡意行為。
1.1.2 Android組件安全
APP應用程序的后臺服務、Content Provider、第三方調(diào)用和廣播等組件權(quán)限的設置存在安全問題,導致數(shù)據(jù)失竊密等。
1.2 數(shù)據(jù)安全
1.2.1 Log日志安全
Log日志是APP運行期間自身產(chǎn)生的,是對程序運行情況的記錄和監(jiān)控,通過Log日志可以詳細了解APP內(nèi)部的運行狀況。
1.2.2 本地儲存數(shù)據(jù)安全
本地文件存儲經(jīng)常會使用以下方式,同樣也會遇到一些安全問題。
SharedPreferences:通過一個key-Value(鍵值對)來存儲一些輕量級的數(shù)據(jù),用于保存一些軟件配置信息等小型數(shù)據(jù)。黑客破解后可以讀取和修改value值。
文件存儲:是文件(I/O)存儲方案,用于存儲大數(shù)量的數(shù)據(jù)。內(nèi)容提供者:也稱ContentProvider,是指能實現(xiàn)所有應用程序共享的一種數(shù)據(jù)存儲方式。
SQLite數(shù)據(jù)庫:是一種嵌入式的、關系型的數(shù)據(jù)庫,黑客可以修改一些SQL語句或者讀取數(shù)據(jù)庫中的數(shù)據(jù)信息,導致APP用戶的信息泄露。
1.3 數(shù)據(jù)傳輸安全
1.3.1 網(wǎng)絡監(jiān)聽與攻擊
APP運行時,可以通過特定的工具對APP和外界之間發(fā)送或接收的網(wǎng)絡包進行抓取。獲取網(wǎng)絡包后,可以分析APP自身的網(wǎng)絡協(xié)議,從而針對服務器進行攻擊,或逆向分析網(wǎng)絡包的加密算法。
1.3.2 登錄請求重發(fā)攻擊
大部分APP使用的是HTTP的傳輸,這樣在網(wǎng)絡請求時很容易被嗅探到數(shù)據(jù),如果對登錄過程中的網(wǎng)絡封包進行重放攻擊測試,攻擊者可能會登錄到系統(tǒng),從而獲取用戶敏感信息。
2 APP應用程序漏洞安全檢測技術
和傳統(tǒng)的PC程序安全檢測相比對APP應用程序漏洞的安全檢測也分為動態(tài)檢測和靜態(tài)檢測兩部分。
2.1 靜態(tài)檢測
靜態(tài)檢測主要通過檢測工具對APP應用程序的權(quán)限配置、程序代碼進行檢測。最常用的方法就是反編譯,dex2jar和apktool分別代有兩種反編譯方式,dex2jar反編譯出java源代碼,apktool反編譯出來的是java匯編代碼。
2.1.1 dex2jar反編譯
工具:dex2jar+jdgui。
方法:
(1)修改apk為zip擴展名。
(2)解壓出classes.dex文件。
(3)使用dex2jar反編譯(dex2jar.bat classes.dex)。
2.1.2 apktool反編譯
工具:apktool。
這個工具比較簡單,直接(apktool d apkfile)就可以反編譯apk文件,反編譯出來的東西為smali反匯編代碼、res資源文件、assets配置文件、lib庫文件,人們可以直接搜索smali文件和資源文件來查找鏈接等(圖1)。
通過靜態(tài)反編譯可以分析APP應用程序組件的配置與權(quán)限,檢查APP代碼的安全性。同時通過對源碼的分析了解APP加密機制和數(shù)據(jù)存儲位置。采用靜態(tài)反編譯方法對APP應用程序進行安全檢測可以最大限度地對APP的安全性進行分析。
2.2 動態(tài)檢測
除了靜態(tài)對APP應用程序進行檢測外,由于檢測內(nèi)容和APP自身安全加固的問題還可以利用動態(tài)方式對APP應用程序進行安全檢測。
2.2.1 brupsuite
利用brupsuite工具設置代理服務器,可以對APP應用程序中的http協(xié)議內(nèi)容進行檢測和分析,利用這種方法可以檢測APP是否采用加密傳輸機制、登陸重放攻擊等安全檢測。
2.2.2 IDA Pro
IDA Pro從6.1版本開始,支持動態(tài)調(diào)試Android原生程序。調(diào)試一般的Android原生程序可以采用遠程運行與遠程附加兩種方式來調(diào)試。
采用動態(tài)調(diào)試的方法可以對一些采用了加殼技術的APP程序進行檢測,這樣可以發(fā)現(xiàn)嵌入APP應用程序中的惡意程序,是一種比較深入的安全檢測方式。
3 APP應用程序安全檢測內(nèi)容
3.1 組件安全檢測
對Activity安全、Broadcast Receiver安全、Service安全、Content Provider安全、Intent安全和WebView的規(guī)范使用檢測分析,發(fā)現(xiàn)因為程序中不規(guī)范使用導致的組件漏洞。
3.2 代碼安全檢測
對代碼混淆、Dex保護、SO保護、資源文件保護以及第三方加載庫的代碼的安全處理進行檢測分析,發(fā)現(xiàn)代碼被反編譯和破解的漏洞。
3.3 內(nèi)存安全檢測
檢測APP運行過程中的內(nèi)存處理和保護機制進行檢測分析,發(fā)現(xiàn)是否存在被修改和破壞的漏洞風險。
3.4 數(shù)據(jù)安全檢測
對數(shù)據(jù)輸入、數(shù)據(jù)存儲、存儲數(shù)據(jù)類別、數(shù)據(jù)訪問控制、敏感數(shù)據(jù)加密、內(nèi)存數(shù)據(jù)安全、數(shù)據(jù)傳輸、證書驗證、遠程數(shù)據(jù)通信加密、數(shù)據(jù)傳輸完整性、本地數(shù)據(jù)通訊安全、會話安全、數(shù)據(jù)輸出、調(diào)試信息、敏感信息顯示等過程進行漏洞檢測,發(fā)現(xiàn)數(shù)據(jù)存儲和處理過程中被非法調(diào)用、傳輸和竊取漏洞。
3.5 業(yè)務安全檢測
對用戶登錄,密碼管理,支付安全,身份認證,超時設置,異常處理等進行檢測分析,發(fā)現(xiàn)業(yè)務處理過程中的潛在漏洞。
3.6 應用管理檢測
(1)下載安裝:檢測是否有安全的應用發(fā)布渠道供用戶下載。檢測各應用市場是否存在二次打包的惡意應用。
(2)應用卸載:檢測應用卸載是否清除完全,是否殘留數(shù)據(jù)。
(3)版本升級:檢測是否具備在線版本檢測、升級功能。檢測升級過程是否會被第三方劫持、欺騙等漏洞。
參考文獻
[1]柯元旦.Android內(nèi)核刨析[M].電子工業(yè)出版社,2011.
[2]豐生強.Android軟件安全與逆向分析[M].人民郵電出版社,2013.
[3]Chris Eagle.IDA Pro權(quán)威指南[M].2版.人民郵電出版社,2012.