從2017年4月份開始,我們就一直在觀察這個通過Google Play應用商店進行傳播的新型惡意軟件。與其他root型惡意軟件不同,這款惡意軟件不僅會將自己的模塊植入目標系統中,而且它還會將惡意代碼注入至系統運行時庫。卡巴斯基安全實驗室將這款惡意軟件標記為Trojan.AndroidOS.Dvmap.a。

Dvmap分析
實際上,通過Google Play應用商店來傳播惡意軟件已經不是什么新鮮事了。比如說,從2016年9月至今,Ztorg木馬已經上傳至Google Play大約100多次了。但Dvmap是一款非常特殊的Android root惡意軟件,它使用了很多新的攻擊技術,其中最有意思的是它竟然能夠將惡意代碼注入至目標設備的系統庫中,例如libdmv.so或libandroid_runtime.so等等。
這也使得Dvmap成為了歷史上首個能夠在設備運行過程中向系統庫中注入惡意代碼的Android惡意軟件。目前它在Google Play應用商店中的下載量已經超過了5萬次。目前,卡巴斯基實驗室已經將該木馬報告給了Google,Google也在收到報告后的第一時間將其從應用商店中移除了。

為了成功繞過Google Play應用商店的安全檢測,這款惡意軟件的開發者使用了一種非常有意思的方法:他們在2017年3月底向應用商店上傳了一個干凈的App,隨后又對這款App進行了更新,并將原本的代碼替換成了惡意代碼,操作完成之后他們會在同一天向Google Play重新上傳一個干凈版本的App。研究人員通過觀察發現,攻擊者在4月18日到5月15日之間至少進行了5次這樣的上傳和更新操作。
所有的惡意Dvmap App都擁有相同的功能,它們首先會對App安裝數據包中assets文件夾下的一些歸檔文件進行解密,然后利用這些文件來啟動惡意可執行文件(文件名包含“start”)。

有趣的地方就在于,該木馬甚至支持Android的64位版本,這就非常罕見了。下圖為該木馬選取32位和64位兼容文件的部分代碼:

所有的加密文件可以被分為兩大類:第一類由Game321.res、Game322.res、Game323.res和Game642.res組成,惡意軟件在攻擊的初始階段需要使用到這些文件;第二類由Game324.res和Game644.res組成,這些文件用于攻擊的主要階段。
初始階段
在這個階段中,木馬會嘗試獲取目標設備的root權限并安裝某些模塊。這個階段中所要用到的歸檔文件都包含相同的文件,但除了一個名叫“common”的文件之外。這是一個本地root利用包,而且該木馬會使用4種不同的漏洞利用包文件,其中3個針對的是32位系統,另一個針對的是64位系統。如果這些文件成功獲取到了root權限,該木馬將會向目標系統中安裝一些惡意工具。除此之外,它還會安裝惡意App“com.qualcmm.timeservices”。
這些歸檔文件中包含一個名叫“.root.sh”文件,而這個文件代碼的注釋部分竟然寫的是中文:

主要階段
在這個階段中,該木馬會通過Game324.res或Game644.res啟動之前的“start”文件。它會檢測目標設備所安裝的Android版本,然后再決定攻擊哪一個庫。對于Android 4.4.4或更老的版本,該木馬會修改libdvm.so中的_Z30dvmHeapSourceStartupBeforeForkv方法,對于Android 5及其以上版本,它將會修改libandroid_runtime.so中的nativeForkAndSpecialize方法。這兩個庫是跟Dalvik和ART運行時環境相關的系統運行時庫。在修改代碼之前,該木馬會對原始庫進行備份,備份命名格式為bak_{原始名稱}。下圖為修改過后的libdvm.so:

在修改代碼的過程中,該木馬會用惡意代碼重寫現存的代碼,然后它所要做的就是執行/system/bin/ip了。這是非常危險的,因為這種代碼重寫(覆蓋)行為可能導致會導致設備發生崩潰。接下來,該木馬會將修改過的庫文件放回系統目錄中,然后替換掉原始的/system/bin/ip。這樣一來,Dvmap就可以確保它的惡意模塊能夠以系統權限執行。但是惡意ip文件中并不包含原始ip文件中的任何方法,這也就意味著所有需要使用這個文件的app都會失去一部分功能,有時甚至還會發生崩潰。
惡意模塊 -“ip”
修改過的系統庫將會執行這個惡意文件,它可以通過修改系統設置來關掉系統的“VerifyAPPs”功能并允許用戶從第三方商店安裝應用。除此之外,它還可以通過注入控制命令在與用戶沒有任何交互的情況下給“com.qualcmm.timeservices” App提供設備管理員權限,對于惡意軟件獲取設備管理員權限來說,這種方法還是很罕見的。
惡意App – “com.qualcmm.timeservices”
正如我之前所提到的,在攻擊的初始階段,該木馬需要安裝“com.qualcmm.timeservices” App。它的主要目的是下載歸檔文件并執行其中的“start”代碼。在我們的分析過程中,這款App能夠成功連接到其后臺C&C服務器,但當時它并沒有接收到任何命令。所以目前我們還不清楚它執行的到底是哪種文件,但肯定是惡意文件或廣告文件。總結
這款名叫Dvmap的木馬主要通過Google Play應用商店進行傳播,并且使用了多種非常危險的技術,包括修改系統庫代碼。它會在目標系統中安裝各種不同功能的惡意模塊,由此看來,它的主要目標就是感染目標系統,然后以root權限執行那些從惡意C&C服務器下載來的惡意文件,但我們目前還無法得知具體的惡意文件類型。
就目前的分析來看,我們認為Dvmap的開發者仍在測試這款惡意軟件,因為他們現在所使用的技術很有可能會導致受感染系統發生崩潰。因此,我們系統能夠在這款惡意軟件的早期攻擊階段就將它公之于眾,這樣一來,我們將有更加充足的時間來設計出更好的應對方案。
MD5
43680D1914F28E14C90436E1D42984E2
20D4B9EB9377C499917C4D69BF4CCEBE
|