Android端惡意鎖屏勒索應用分析
一、前言
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端惡意鎖屏勒索應用分析