盧委紅+陶一鳴
摘 要
近年來,Android系統以極高占有率制霸智能手機市場,但由于其開放性,使得針對Android平臺的惡意代碼數量呈現出爆炸式增長,導致隱私數據泄露、程序越權操作、電池耗盡攻擊、惡意進程交互等手機安全事件頻繁涌現。近期,公安機關接連接到若干通過安卓平臺遠程控制木馬從而實施詐騙的案件,詐騙者依靠偽基站設備發送釣魚網址,給用戶手機植入Android木馬,從而實施詐騙。因此,對惡意代碼進行分析成為一個亟待解決的問題。文章結合Android平臺的特點和一線公安機關辦理的惡意竊取隱私案件中的相關apk,重點進行apk反編譯分析和動態調試,為公安機關打擊移動網絡下的違法犯罪活動提供了技術支持。
【關鍵詞】Android 木馬 APK 惡意代碼
1 安卓體系結構
安卓體系從上到下可以分成4層,第1層是應用程序層(Application)。這一層包括電話、瀏覽器、聯系人及各種第三方應用。應用程序使用Java語言編寫,所有源代碼及資源文件都包含在一個.apk文件當中,以供安裝時使用。
第2層是應用程序框架層(Application Framework)。包含眾多供應用程序調用的應用程序編程接口,這些接口多數是由安卓軟件開發工具包提供的。
第3層是庫(Libraries)和安卓運行環境層(Android Runtime)。這一層分為兩部分:庫包含一系列C/C++語言編寫的原生庫,這些原生庫可供所有上層組件調用;安卓運行時環境包含dalvik虛擬機和核心庫,其中提供了所有用來訪問本地庫、硬件和操作系統的接口。
最底層是Linux內核層(Linux Kernel)。提供諸如設備驅動、文件系統等最核心的系統服務。
2 基于安卓平臺惡意代碼的靜態分析技術
靜態分析法就是在不運行惡意代碼的情況下,利用分析工具對惡意代碼的靜態特征和功能模塊進行分析的方法,利用靜態分析方法,可以找到惡意代碼的特征字符串、特征代碼段等,還可以得到惡意代碼的功能模塊和各個功能模塊的流程圖。
基于靜態分析機制的逆向分析技術主要優點包括:
(1)不需要真正執行惡意代碼,可以避免對惡意攻擊者發現;
(2)誤報率低;
(3)不受具體進程執行流程的制約,可以對代碼進行詳盡的細粒度分析。
我們通過對一線公安機關辦理的相關惡意竊取隱私案件中的apk樣本進行反編譯,對木馬部分源碼進行靜態分析后可以掌握犯罪嫌疑人的手機號碼及電子郵箱等個人信息,并能掌握木馬取證的惡意操作:如讀取短信、監控短信收發、讀取聯系人、后臺發送郵件等操作。
3 基于安卓平臺惡意代碼的分析
3.1 分析工具
AndroidKiller是一款可視化的安卓應用逆向工具,集Apk反編譯、Apk打包、Apk簽名,編碼互轉,ADB通信(應用安裝-卸載-運行-設備文件管理)等特色功能于一身。它包含了adb、apktool、dex2jar、jd-gui等反編譯工具。其中apktool能將android中的.apk文件轉換成.dex文件;dex2jar能將第一步的.dex文件反編譯成.jar文件;jd-gui能將.jar文件反編譯成.java文件進行分析。
3.2 安卓木馬固定
文件名稱:weizhang.apk
文件類型:apk
MD5 校驗值:3b49ef4f2c385bff9a700e5a3dd6882c
文件大?。?98317 bytes
3.3 木馬分析
安卓應用程序的擴展名為apk,可以直接用AndroidKiller進行反編譯操作。打開工程管理器可以看到apk文件的內容。比較重要的文件有:
(1)META-INF目錄,用來存放簽名信息,保證apk包的完整性和系統安全;
(2)res目錄,用來存放資源文件,包括程序圖片等內容;
(3)AndroidManifest.xml文件,用來描述應用的名字、版本、權限和引用的庫文件等信息;
(4)smali文件,是java源代碼反編譯后的格式代碼。
3.3.1 AndroidManifest.xml文件
AndroidManifest.xml 是每個Android程序中必須的文件。它位于整個項目的根目錄,描述了package中暴露的組件(activities, services, 等等),他們各自的實現類,各種能被處理的數據和啟動位置。除了能聲明程序中的Activities, ContentProviders,Services,和Intent Receivers,還能指定permissions和instrumentation(安全控制和測試)。用AndroidKiller打開AndroidMainfest.xml,可以看到該apk一共申請了17個權限,其中值得注意的有如下權限:
android.permission.RECEIVE_BOOT_COMPLETED 允許程序開機自動運行
android.permission.READ_CONTACTS 允許應用訪問聯系人通訊錄信息 android.permission.READ_PHONE_STATE 訪問電話狀態
android.permission.READ_SMS 允許程序讀取短信息
android.permission.RECEIVE_SMS 接收短信
android.permission.WRITE_SMS 允許程序寫短信
android.permission.SEND_SMS 發送短信
android.permission.ACCESS_WIFI_STATE允許程序訪問Wi-Fi網絡狀態
3.3.2 smali文件
通過AndroidKiller中的smali文件轉換器將MainActivitiy.smali轉換為java源碼后進行分析。
通常根據發送短信、啟動activity、啟動后臺服務和撥打電話等特征來判斷該程序是否為惡意代碼。
通過分析可以得出結論,該段程序的作用就是劫持手機用戶后在用戶不知情的情況下群發短信,讓受害者在不知情的情況下惡意扣費,并誘導手機聯系人安裝木馬,之后及時刪除信息,很大程度上加大了該類案件的證據收集及偵破難度。
4 結束語
隨著智能手機的快速普及和手機系統的不斷更新,手機上集成的功能會越來越多,針對Android平臺下的木馬植入、隱藏和通信等關鍵技術也會不斷更新,這將會給移動通信的安全帶來更大的威脅。研究Android平臺下木馬關鍵技術,可以幫助我們做好手機木馬的反查殺工作,更好地保證移動終端的設備安全。
我國惡意代碼防治工作面臨著嚴峻挑戰,需要國家信息安全主管部門不斷創新管理機制和防范措施,以應對日趨嚴重的網絡安全威脅。系統地、有效地開展Android惡意代碼的檢測方法研究,是移動應用軟件開發安全保障的一項基礎性課題,將有效推動互聯網應用的持續健康發展。
參考文獻
[1]鄭吉飛.Android惡意代碼的靜態檢測研究[D].華中師范大學,2013.
[2]余倩.Android木馬及其關鍵技術的研究與實現[D].電子科技大學,2016.