1. 程式人生 > >Android端惡意鎖屏勒索應用分析

Android端惡意鎖屏勒索應用分析

oid recovery 界面啟動 沒有 apk反編譯 人的 一律 reset 臺電腦

一、前言

5月12日,一場全球性互聯網災難悄然而至,一款名為WannaCRY的PC端惡意勒索軟件利用NSA泄漏的危險漏洞“永恒之藍”,給100多個國家和地區10萬臺電腦造成了巨大的損失。到2017年為止,全球手機用戶總量已經突破50億,而作為占比超過50%的android系統中,同樣有許許多多類似WannaCRY的勒索軟件正在危害我們的財產安全。

接下來,以一款主流的Android端惡意鎖屏勒索應用為例,結合人工分析的方式,深入剖析勒索應用的惡意行為。知己知彼,才能更好的防患於未來。

二、運行特征

這是一款偽裝成”秒贊大師”的鎖屏勒索惡意應用

技術分享

第一次點擊啟動之後,主界面會彈出誘騙激活設備管理員權限的對話框

技術分享

技術分享

當你點擊激活後,恭喜你,你的屏幕將被鎖定,無法進入手機的主界面,除非聯系勒索者獲得解密密碼

技術分享

那麽,接下來我們一起來分析下這款勒索軟件的實現原理,並且破解出它的解鎖密碼

三、準備工作

1. 分析工具:JEB/Android killer

JEB是一款收費的Android應用程序反編譯工具,解析能力強,兼容性高。

Android Killer是一款免費的android應用程序反編譯工具,集Apk反編譯、Apk打包、Apk簽名,編碼互轉,ADB通信等特色功能於一身。

可根據個人的習慣選擇工具,這裏將使用jeb進行分析

2. 分析環境:android模擬器

主要用於惡意應用的運行時分析,可使用android原生的模擬器,也可使用第三方如genymotion、天天模擬器等

四、流程分析

應用整體運行流程圖如下

技術分享

接下來,我們對整個流程進行詳細的分析

1. 入口點

首先,我們使用jeb打開要分析的apk

技術分享

其中左邊為該應用反編譯出來的類列表,右邊為AndroidManifest.xml清單文件的內容

技術分享

我們可以發現,應用的入口類為com.bugzapk.b,接下來我們分析下b類的執行邏輯,b類對應的界面如下,該界面只有一個按鈕

技術分享

我們找到這個按鈕的點擊事件

技術分享

發現點擊之後跳轉到com.bugzapk.z類中

2. root權限

我們繼續分析com.bugzapk.z類,首先分析入口函數onCreate

技術分享

在入口處做了一些界面相關的初始化工作,重點在於這個100000000線程

技術分享

我們可以看到,該應用首先會嘗試將system分區mount為可寫狀態,再將應用挪入固件中,並且重啟手機。如果你的手機有root過,並且給予了root權限,你將無法再通過普通的方式來卸載這個應用,就連刷機都無法清除。

技術分享

當獲取root權限失敗後,將會誘導你激活設備管理員權限。

技術分享

當你點擊確定後,會跳轉到com.bugzapk.c界面

3. 訪問網絡獲取PIN碼

分析com.bugzapk.c類的入口函數oncreate

技術分享

啟動後,首先會運行100000000這個線程

技術分享

技術分享

這個線程會先解密字符串得到一個鏈接,並調用get方法訪問網絡獲得一個字符串,接下來我們分析下加密的算法,這裏進行了三層解密:decrypt->解密->decoder

技術分享

這個decrypt函數首先將16進制字符串轉換成字節,再將字節進行AES解密

技術分享

解密函數中有一個簡單的字典,進行字符串替換。

技術分享

decoder函數會對字節進行異或,得到最終的url。

技術分享

根據這三個函數,我們可編寫對應的解密算法解出url的值。

接下來我們打開瀏覽器訪問這個url

技術分享

我們發現返回了一大段的字符串,

技術分享

最終,程序會調用正則表達式函數,並進行解密,我們調用對應的解密算法,可計算出pin值為7531

技術分享

4. 激活設備管理員並且設置PIN碼

com.bugzapk.c界面只有一個激活按鈕

技術分享

點擊後會調用系統的api申請設備管理員權限,並且調用resetPassword函數將PIN碼修改為上一步獲取的值7531

技術分享

Android中的設備管理員權限可以對手機進行鎖屏,防止應用被卸載等

獲取權限後,會調用鎖屏函數,將屏幕鎖定

技術分享

並且跳轉到com.bugzapk.g頁面

技術分享

5. 上傳手機型號/釣魚頁面

com.bugzapk.g界面啟動後會自動上傳手機型號

技術分享

並且彈出釣魚頁面誘導你輸入QQ賬號密碼

技術分享

當你輸入完點擊登陸後,跳轉到com.bugzapk.h頁面

技術分享

6. 鎖屏主頁面

終於進入我們最重要的密碼輸入界面com.bugzapk.h了,首先分析密鑰獲取邏輯

技術分享

其中c為要訪問的域名,get函數訪問域名。通過解密算法可得到url為

技術分享

打開瀏覽器,訪問頁面返回如下字符串

技術分享

獲得數值後,使用正則表達式提取出37598這個密碼

技術分享

並且賦給pass這個成員變量,如果網絡無法訪問的情況下,將會使用本地的密鑰

技術分享

通過執行對應的解密算法,可解得本地密碼值為8810

技術分享

接下來我們來分析解鎖函數js的邏輯

技術分享

如果輸入的密碼值為654321,則將PIN碼更改為654312

技術分享

如果輸入的密碼值為4321,則將PIN碼修改為4312

技術分享

如果輸入的密碼值為上面分析出來的密碼值,將會跳轉到com.bugzapk.i界面

7. 鎖屏主頁面2

鎖屏主頁面1的密碼正確後,將會進入第二個頁面com.bugzapk.i

技術分享

我們直接查看點擊確定按鈕後的解鎖邏輯

技術分享

輸入4951密碼後,頁面會跳轉會上一個界面

技術分享

輸入997998後,界面的文字會做一些改變

技術分享

正確的密碼值為l.x(v17,v9)這個解密函數,我們執行對應的解密函數得到正確的密碼為2415

技術分享

密碼輸入正確後,跳轉到最後的PIN碼界面

8. PIN碼界面

技術分享

com.bugzapk.d界面直接顯示系統的PIN碼輸入頁面,輸入之前計算得到的PIN碼即可解鎖成功,進入手機,至此整體流程結束

五、修復方法參考

如果你的手機也被這種勒索病毒鎖屏了該怎麽辦呢,你可以嘗試以下幾種方法:

1. 如果你有基本的android開發經驗和逆向知識,你可以嘗試直接分析勒索軟件的解密算法得到正確的密碼,一般這種軟件的邏輯和算法都不會太復雜

2. 如果你的手機開啟了USB調試模式,可以進入adb shell環境,並且擁有root權限,你可以嘗試使用命令直接刪除密碼文件,刪除後重啟即可直接進入手機界面

1 adb shell rm /data/system/access_control.key
2 adb shell rm /data/system/password.key
3 adb shell rm /data/system/gesture.key

3. 如果手機有刷過第三方的recovery,你可以重啟進入recovery模式,直接將該軟件刪除,或者執行第2步的命令刪除密碼。如果手機上的數據不重要的話,可以直接執行雙wipe清除手機上的所有數據(勒索軟件在固件將無效)。

4. 刷機,刷入新的系統。

5. 聯系勒索者得到密碼

註意:以上方法僅供參考,其中2/3/4方法有可能造成手機重要數據丟失、系統無法正常使用,請慎重操作。

tips 現在市面上流傳的移動設備勒索病毒種類繁多,其中許多病毒制作較為簡單,解鎖密碼都是直接明文寫在字符串中。

六、建議

最後,在給大家以下幾點建議:

1. 不要從非官方的渠道下載應用,防止應用被人為修改,加入了惡意代碼

2. 對於別人發過來的apk下載鏈接,要慎重點擊下載

3. 不要貪小便宜,去安裝那些搶紅包/遊戲輔助之類的插件,大部分都是木馬病毒

4. 對於新安裝的應用,如果有彈出申請設備管理員權限或者root權限的對話框,請一律點擊拒絕,除非你確定這個應用沒有問題

5. 沒有必要的情況下,請不要root你的手機

文章轉載自安全客 原文地址:http://bobao.360.cn/learning/detail/4053.html

更多安全類熱點資訊及知識分享,請持續關註阿裏聚安全博客

Android端惡意鎖屏勒索應用分析