目錄
引言
一、Android 病毒介紹及分析方法
1.1 Android 病毒預覽
1.2 Android 病毒分析必備知識
1.3 Android 病毒的常見類型及惡意行為
1.3.1 常見病毒類型
1.3.2 常見病毒行為
1.4 病毒激活條件
1.5? Android 病毒的傳播方式
1.6? Android 病毒分析的一般方法
二、經典安卓簡單病毒案例分析
2.1?病毒分析-免流服務器
2.2 病毒分析-王者榮耀刷皮膚
2.3 病毒分析-秒搶紅包
引言
????????隨著智能手機的普及,Android 系統成為了全球用戶最廣泛使用的移動操作系統之一。然而,Android 的開放性也使其成為了病毒和惡意軟件的主要目標。Android 病毒不僅威脅用戶隱私和財產安全,還可能對設備系統造成嚴重破壞。為了更好地理解和防范這些威脅,本文將從 Android 病毒的基本概念入手,詳細介紹其常見類型、惡意行為、傳播方式及分析方法。此外,本文還將通過幾個經典案例,深入剖析 Android 病毒的運作機制。
一、Android 病毒介紹及分析方法
1.1 Android 病毒預覽
????????Android 病毒種類繁多,為了直觀展示其危害,本文將以鎖機病毒為例,深入分析其運作機制,幫助讀者更直觀地理解 Android 病毒的威脅。
1.2 Android 病毒分析必備知識
在分析 Android 病毒時,掌握 Android 的四大組件及權限相關知識至關重要。
(1) Activity - Android 的窗口界面
Activity 是用戶與應用交互的界面,病毒常通過偽裝成正常應用的 Activity 來誘騙用戶。
(2)Service - Android 的后臺服務
Service 在后臺運行,病毒利用其執行惡意操作而不被用戶察覺。
(3)BroadcastReceiver - 廣播接收器/全局回調
BroadcastReceiver 用于接收系統廣播,病毒通過監聽特定廣播觸發惡意行為。
(4)ContentProvider - 內容提供商/注冊表
ContentProvider 管理應用數據共享,病毒可能通過其竊取或篡改數據。
(5) 清單文件中權限的聲明
AndroidManifest.xml 文件中的權限聲明,病毒通過申請敏感權限實施惡意操作。
1.3 Android 病毒的常見類型及惡意行為
1.3.1 常見病毒類型
(1)信息竊取 (privacy)
?? 名稱:a.privacy.GpsSpy.a (竊聽幽靈)
(2)惡意扣費 (payment)
?? 名稱:a.payment.suad.a (扣費內鬼)
(3)遠程控制 (remote)?
?? 名稱:a.remote.DieSms.a (致命短信)
(4)資費消耗 (expense)?
?? 名稱:a.expense.vimob.a (TT 僵尸)
(5)誘騙欺詐 (fraud)
(6)流氓行為 (rogue)
(7)系統破壞 (system)
1.3.2 常見病毒行為
(1)獲取用戶手機信息
?? - 使用 `TelephonyManager` 類獲取手機號、MAC 地址、設備 ID、IMSI 號、SIM 卡序號、手機型號等。 ?
?? - 后續操作:上傳服務器或通過第三方服務獲取詳細位置。
(2)發送短信
?? - 使用 `SmsManager` 類發送單條或多條短信,內容通常為通知病毒作者安裝成功。
(3)獲取聯系人列表
?? - 使用 `getContentResolver().query()` 獲取聯系人信息。 ?
?? - 后續操作:上傳服務器、發送到指定郵箱或群發帶短 URL 的短信以擴散病毒。
(4)獲取短信數據
?? - 使用 `getContentResolver().query()` 獲取短信內容。 ?
?? - 后續操作:上傳服務器、發送到指定郵箱、屏蔽控制短信或私自回復扣費短信。
(5)獲取安裝應用列表
?? - 使用 `getPackageManager().getInstalledPackages()` 和 `getRunningAppProcesses()` 獲取應用列表。 ?
?? - 后續操作:上傳服務器或檢測是否有殺毒軟件。
(6)獲取 Root 權限
?? - 使用 `Runtime.getRuntime().exec(cmd)` 執行底層命令。 ?
?? - 后續操作:靜默下載插件、加載惡意插件或靜默安裝 APK 文件。
(7)激活設備管理器防止卸載
?? - 使用 `DevicePolicyManager` 和 `android.app.action.ADD_DEVICE_ADMIN` 激活設備管理器。 ?
?? - 后續操作:隱藏自身圖標。
(8)私自關閉 WiFi 并開啟移動網絡
?? - 使用 `setWifiEnabled()` 和 `setMobileDataEnabled()` 控制網絡連接。 ?
?? - 后續操作:連接指定服務器上傳程序包信息。
1.4 病毒激活條件
病毒安裝后不一定立即啟動,常見的激活條件包括:
(1)檢測用戶劃屏解鎖。
(2)檢測用戶開機。
(3)檢測網絡變化。
這些信息通常注冊在 `AndroidManifest.xml` 文件中,熟悉四大組件和權限有助于快速定位惡意代碼。
1.5? Android 病毒的傳播方式
(1)瀏覽器搜索關鍵詞?
?? 誘惑用戶下載,如搜索“美女圖片”、“激情視頻”。
(2)短信傳播下載地址?
?? 誘導用戶下載,如短信內容為“孩子成績”、“老婆丈夫出事”。
(3)捆綁正常 APP?
?? 偽裝廣告誘導用戶下載。
(4)二維碼?
?? 通過掃描二維碼傳播病毒。
(5)其他方式?
?? 加殼加密、免殺等技術手段。
1.6? Android 病毒分析的一般方法
分析 Android 病毒的步驟如下:
(1)上傳至分析平臺
?? 使用金山火眼或騰訊哈勃等平臺初步分析病毒樣本。
(2)反編譯 APK 文件
?? 將 APK 文件反編譯為可讀代碼,注意文件名應改為數字或英文。
(3)導入 IDE 分析
?? 將反編譯后的代碼導入 IDE,便于查看代碼跳轉。
(4)查看 AndroidManifest.xml
?? 找到入口類,查看申請的權限、廣播監聽類和服務類。
(5)定位關鍵 API
?? 搜索并分析關鍵 API,結合上下文理解病毒流程。
(6)安裝病毒樣本
?? 在測試手機中安裝病毒樣本,使用殺毒軟件觀察攔截的敏感 API。
(7)抓包分析
?? 使用抓包工具分析病毒上傳的數據。
(8)動態分析加密字符串
?? 通過斷點調試解析加密字符串,必要時修改 smali 代碼。
(9)檢查資源目錄
?? 若未找到敏感 API,檢查資源目錄中是否存在可疑文件,如惡意 APK 或 SO 文件。
(10)分析 SO 文件?
??? 若病毒通過 SO 文件執行惡意代碼,需具備 ARM 匯編知識。
通過以上步驟,可以有效分析 Android 病毒的運作機制,并采取相應的防護措施。
二、經典安卓簡單病毒案例分析
所有樣本程序安裝均在模擬器中進行
2.1?病毒分析-免流服務器
點擊安裝核心,會有root權限申請:
Runtime.getRuntime().exec(cmd)
當安裝核心之后,重啟模擬器,會發現開機之后,有鎖屏窗口,還發送大量短信
通過AndroidKiller反編譯,分析組件和權限信息
再分析activity對應的布局文件
直接查看java代碼中的az調用,az調用了copyAppToSystem
其中執行的命令有:
(1)獲取root
(2)修改system目錄權限
mount -o remount, rw /system/
(3)拷貝文件到系統目錄
cp /storage/sdcard0/stk3.apk /system/app/
(4)修改文件權限
chmod 0777 /system/app/stk3.apk
(5)退出命令行
exit
stk3.apk的來源在onCreate函數中可以找到
根據以上分析,可以看出,stk3.apk才是真正的病毒文件,它被釋放到SD中和系統目錄中。
(1)/storage/sdcard0/stk3.apk
(2)/system/app/stk3.apk
免流服務器-清除病毒
刪除sd卡中的stk3.apk
(1)進入shell
選用androidkiller中adb,執行 adb shell
(2)切換到SD目錄
cd /storage/sdcard0/
(3)刪除病毒
rm stk3.apk
刪除system/app中的stk3.apk
(1)使用cd 切換根目錄
(2)使用cd 切換到system/app
cd system/app
(3)刪除病毒
rm stk3.apk
病毒分析-免流服務器-stk3.apk
Stk3.apk模仿系統應用痕跡很深。
從MainActivity找到 llxfc服務,在服務的代碼中找到密碼
密碼:TFB4
解鎖之后,可以使用模擬器中文件管理器刪除病毒
2.2 病毒分析-王者榮耀刷皮膚
鎖機密碼:6699
特征字符串:lockNow,resetPassword
刪除病毒時需要取消激活設備管理器,才能刪除
2.3 病毒分析-秒搶紅包
激活之后,顯示的是上圖界面,可以輸入密碼進行解鎖,當重啟之后,還會有密碼,PIN碼鎖機,根據上一個案例,找特征字符串就可以解鎖。
鎖機密碼是:8985
病毒分析-秒搶紅包-第一層密碼解密
從資源文件找到按鈕ID以及代碼
在代碼中找到響應函數
使用smali注入方式,注入Log代碼在解密函數的末尾,打印返回值
由于這個apk資源編譯有問題,所以采用的方法就是將smali代碼轉為dex文件,然后再將源apk中的dex文件替換,再簽名的方法。
編譯smali代碼為的dex命令:java -jar smali-2.2.0.jar a smali
使用Android監視器監控到日志信息: