【逆向實戰】惡意勒索軟件分析_披着羊皮的狼_被注入惡意代碼的apk

/文章作者:Kali_MG1937
QQ:3496925334
CSDN博客號:ALDYS4
/

今天逛某論壇的時候發現了一篇求助貼
在這裏插入圖片描述
有意思,好久沒分析過惡意軟件了
今天就拿它來練練手

反編譯工具

apktool
jd-gui
eclipse(CFR,JD-CORE等反編譯引擎)
JADX
DEX2JAR

0x01>分析AndroidManifest.xml

先看看惡意軟件的基本信息
在這裏插入圖片描述
先百度一下惡意軟件的包名
在這裏插入圖片描述
搜索結果顯示這是一個被各大應用市場收錄的軟件
那麼我分析我手上的這個惡意軟件應該是被注入了惡意代碼

如果我是惡意軟件的開發者,一定會在第一時間讓受害者觸發惡意代碼
那麼先查看軟件的主入口
在這裏插入圖片描述
com.superthomaslab.rootessentials.main_screen.MainActivity
看來這就是軟件主入口了

0x02>分析代碼

跟進主入口
在這裏插入圖片描述
可以看到截屏中的第6行
程序引入了一個包(Unlock.Unlock),而且我與未被注入代碼的軟件對照
原軟件並沒有引入此包
果斷搜索Unlock

在這裏插入圖片描述
程序在重寫onCreateOptionsMenu方法時調用了Unlock中的方法
並向方法內傳入了一個Context
跟進Unlock
在這裏插入圖片描述
查看Unlock方法
在第一句就申請了root權限,emm
不管,先看下去
在這裏插入圖片描述
第12行,變量名爲file2的File獲取了軟件本身的資源
並將參數傳遞給zipFile2,調用getEntry方法獲取了軟件內的/lib/armeabi/libbaidu.so
接着程序又new了一個FileOutputStream對象並賦予了一個參數作爲文件輸出口
輸出的文件名爲Unlock

再看看19行
程序利用Runtime實例執行了一系列命令:
掛載/system
複製Unlock文件到/system/app/內,並命名爲Unlock.apk
給Unlock.apk以644權限(寫入系統)

接下來軟件調用了isAZ方法,並傳入了一個參數com.antilock.antilock
在這裏插入圖片描述
isAZ方法是判斷軟件是否存在的
如果手機安裝了包名爲com.antilock.antilock的軟件,就調用runtime卸載掉它
根據包名來判斷,這個軟件大概是某個木馬查殺軟件
全部的代碼執行完畢後調用reboot重啓手機
(之前惡意代碼向system分區寫入了一個apk,重啓才能讓apk安裝在手機上)

0x03>解密libbaidu.so文件

通過上一步的代碼分析可知
libbaidu.so是一個被加密過的apk安裝包,需要調用程序內的算法來進行解密
在這裏插入圖片描述
圖中就是解密算法了
程序調用了一個while死循環
循環中的變量名爲i的int被賦予了inputStream調用read方法後的值
而inputStream方法正是讀取libbaidu.so的,
若i的值爲-1(文件不存在)則跳出循環
否則就對變量名爲bArr的byte進行一系列異或算法
最後輸出文件

按照這個邏輯,我果斷打開eclipse進行代碼編寫
在這裏插入圖片描述
最後輸出一個可以正常打開的zip,將其後綴改爲apk
在這裏插入圖片描述
是個僞裝成正常應用的apk,看來之前分析的是個殼子,這就是真正的鎖機文件了
不過這包名…

0x04>分析鎖機文件代碼

老樣子,先看AndroidManifest.xml
在這裏插入圖片描述
軟件入口:com.fuck.lock.MainActivity
在這裏插入圖片描述
從第20行看出,軟件的log日誌被傳入com.aide.ui這個軟件
看來作者是用aide開發的這個軟件
A I D E 風 評 被 害(暴論)
可以看到onCreate方法內軟件發送了一個意圖
啓動了com.fuck.lock.mc這個服務
跟進
在這裏插入圖片描述
mc這個類內的一個值引起我的注意
eq參數貌似是一個被加密的值
先不管,看看onCreate方法
在這裏插入圖片描述
其中調用了a方法和c類
值得一提的是a方法
在這裏插入圖片描述
程序在手機上創建了一個覆蓋整個屏幕的懸浮窗
並且進一步分析發現,這個程序禁止了用戶在懸浮窗以外的地方進行手勢接觸
很可疑
其中0x7f700…等等16進制,通過與軟件自帶的R文件對照
發現這幾個16進制分別代表了幾個佈局文件
在這裏插入圖片描述
從病毒作者繪製的layout文件內容來看,軟件在創建懸浮窗時其真正的意圖就已經暴露了
勒索受害者,若不給錢,就惡意鎖定受害者手機
而c類就是一些密碼的加密解密之類的
不過我在瀏覽mc類的時候發現了一個有意思的方法:init
在這裏插入圖片描述
可以看到init方法內的代碼:如果有人打來的電話,就記錄下號碼
這就有意思了,爲什麼病毒要記錄號碼?信息收集?這些信息這對作者有用嗎?
並且受害者已經被鎖定,也沒法接電話,那麼收集號碼也沒什麼用啊
但是,柳暗花明又一村
我發現了一個廣播類:IncomingReceiver
這個廣播內調用了mc類的init方法
很有意思的類名,對吧
在這裏插入圖片描述
onRecevie方法內
程序正不斷監聽廣播
如果廣播內容是android.intent.action.PHONE_STATE
則程序就會截取extra爲incoming_number的值
並且利用md5加密算法加密這個值
程序正在不斷監聽來電!

調用mc類的access$L100025方法
在這裏插入圖片描述
這個方法返回了eq這個值
你還記得嗎!mc類最開始時的那個eq參數,是一串加密的密文
這讓我的大腦興奮了起來!
繼續查看廣播內的代碼
程序校驗了eq這個值是否與加密過的來電號碼一樣
如果一樣,調用endCall方法掛斷來電電話
並且
將鎖機懸浮窗移除!

整理一下邏輯,程序的大致意思是:
如果有電話打來,並且加密過的電話號碼和eq密文一樣
則停止鎖機
這是作者留的後門嗎?
ん?流 向 改 變 了

不管了,將密文複製
926e459bfecfc239953d3ff5aec1446a
解密
在這裏插入圖片描述
解密後:15527952330
一 轉 攻 勢
病毒作者的手機號碼已經拿到了
已經提交給警方備案
迫害,請

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章