蘇圣魁 劉樹發 王婷

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