標籤:打包 命令 免費 丟失 res 檔案 http 按鈕 模擬器
一、前言
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
我們發現返回了一大段的字串,
最終,程式會調用Regex函數,並進行解密,我們調用對應的解密演算法,可計算出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為
開啟瀏覽器,訪問頁面返回如下字串
獲得數值後,使用Regex提取出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端惡意鎖屏勒索應用分析