FireEye實驗室一位移動安全研究專家近期發(fā)現(xiàn)一款迅速蔓延全球的,可完全控制Android設備的惡意軟件家族病毒。據(jù)稱該攻擊來源于中國。因其命令以及控制域:aps.kemoge.net,便將其命名為Kemoge。
如上圖所示,已確認的感染范圍超過20國,其中包括政府以及大型企業(yè)。該惡意廣告軟件通過重新打包將自身偽裝成流行App,因而得到廣泛傳播。其中一些樣本如下圖所示:
Kemoge的樣本很多,這里就不一一列舉了。
Kemoge的生命周期
如上圖所示,攻擊者將App上傳到第三方應用商店,通過網(wǎng)站或者App內(nèi)置廣告來進行推廣,一些激進的廣告聯(lián)盟還可能會通過獲取root權(quán)限直接進行安裝樣本。
在初始啟動時,Kemoge收集設備信息并將其上傳到廣告服務器,無論受害者當前是在干什么在一定時間都會看到廣告橫幅(即使停留在Android主屏幕,也可能會突然彈出)。
起初Kemoge只是令人有些許不滿,但是很快就會令人感到憤怒。從上圖中可以看到當用戶開啟設備屏幕或者網(wǎng)絡連接變化,其將AndroidManifest中的MyReceiver設置為自啟動,接著MyReceiver喚醒MyService;兩者都是偽裝成Google的代碼(前綴com.google.rp.confirm)。一些樣本也使用下列作為組件前綴:
com.google.system.provider.confirm,
com.google.ad.sprovider,
com.android.ad.sprovider
啟動之后,MyService就開始尋找一個名為.mp4的資源,這個影藏的.mp4資源實際上是一個進行多級加密的.ZIP文件。總的說來,其使用.ZIP自有的文件加密對資源內(nèi)容進行保護,受保護的.ZIP文件再使用DES加密,最后在將DES密鑰進行加密(此處稱之為Key1)與此同時也對另一個DES密鑰(此處稱做Key2)進行加密,并且在代碼中反匯編Key2將其作為字節(jié)。如下圖,逆向破解Kemoge解密ZIP文件。
下圖為反匯編生成DES密鑰的Java代碼片段:
從上圖反匯編DES密鑰代碼片段中我們獲得了Key2,接著就可以生成Key1了。這代碼片段把字節(jié)[0x73, 0x41, 0x26, 0x73, 0x32, 0x76, 0x24, 0x31]為Key2,接著解密[0x87, 0xAF, 0xF9, 0xE5, 0x93, 0xE1, 0x50, 0x5A, 0x12, 0x8B, 0x9F, 0x8C, 0x72, 0x86, 0x79, 0xE3]。注意通過替換真實ASCII字符可實現(xiàn)代碼混淆加密字節(jié)。例如使用0×38和0×37(8和7)來替換0×87,解密沒有指定初識向量直接使用Android Bouncy Castle默認的DES模式(DES/ECB/PKCS5Padding)。解密后的字節(jié)為[0x35, 0x64, 0x26, 0x4c, 0x32, 0x2c, 0x54, 0x39, 0x77, 0x4f]由此推導出的Key1(以及DESKeySpec)來解密ZIP文件。
使用上面相同的方法獲得Key1,但隨著作為輸出的不同加密字節(jié),Kemoge生成ZIP保護密碼。解壓這個文件后,從其中提取出以下文件:
AndroidRTService.apk
root.sh
busybox
su
.root
root_001, root_002, ..., root_008 (8個root exploit可執(zhí)行文件)
Kemoge:步步驚心
該惡意軟件攜帶8個可對設備進行root的exploit可執(zhí)行文件,來應對大范圍的設備模型。這些root方法包括mempodroid, motochopper, perf_swevent exploit,sock_diag exploit, 以及 put_user exploit.其中一些exploit看起來似乎借鑒了部分開源項目中的代碼[2][3],但是其中一些看起來又像是來自商業(yè)工具Root Dashi(Roor大師)。
獲取root權(quán)限之后,執(zhí)行root.sh獲得持久性,然后將AndroidRTService.apk作為Launcher0928.apk(命名方法模仿合法的桌面啟動器系統(tǒng)服務)植入/system分區(qū)。此外,這個apk包看起來也確實像正常的應用,類似的還有com.facebook.qdservice.rp.provider以及com.android.provider.setting。
這個惡意系統(tǒng)通過aps.kemoge.net來傳遞命令。為了逃避檢測,它不經(jīng)常與該服務器進行連接。反而,其只在第一次啟動和命令執(zhí)行24小時后才會請求命令。在每一次通信中,首先將IMEI,IMSI,儲存信息,安裝的App信息發(fā)送到遠程服務器。我們在Nexus 7(Android 4.3)截獲了網(wǎng)絡通信流量包:
接著上傳設備信息,并求情命令:
服務端響應了3組命令:
Uninstall designated apps
Launch designated apps
Download and install apps from URLs given by server
在本案例中,它試圖卸載殺毒應用程序以及一些流行應用,可能準備進一步的攻擊。
附錄1中我例舉了一部分Kemoge樣本,附錄2中列舉了其使用的一些簽名證書。在所有的樣本中我們發(fā)現(xiàn)大量的簡體中文字符。有趣的是,有一款樣本在Google Play中進行了發(fā)布,root exploit以及一些其他功能被閹割了。
谷歌商店上架應用ShareIt或與Kemoge同根
Kemoge樣本包名:cc.taosha.toolbox.shareit
MD5:40b1dcbe5eca2d4cf3621059656aabb5
在Google Play中也有一款與茄子快傳(ShareIt)名稱相同的應用,使用了與Kemoge相同的簽名,所以其應該是同一位開發(fā)者,其在Google Play中此應用已經(jīng)有10萬—50萬的下載量,基于開發(fā)者的名稱Zhang Long以及集成與App中的第三方庫(cn.wap3, com.renren, com.tencent等)研究者便推斷該開發(fā)者來自于中國。
基于用戶評論ShareIt有著與Kemoge相似的特征(煩人的廣告),估計是為了滿足審計過程Google Play版本移除了root exploits,但其依舊保持著adm.kemoge.net和ads.kemoge.net,同時它請求taosha.cc進行上傳和升級提醒。在我們的實驗中,服務運行但只返回了404,應該是開發(fā)者在維護新的版本。
Google似乎已經(jīng)注意到這個App,“ShareIt”已經(jīng)從Google應用商店平臺移除了。目前大家還是謹慎下載。
總結(jié)
這是一個家族式惡意廣告軟件,可能是由中國開發(fā)者寫的,也有可能是被搞黑產(chǎn)的人控制了。
在此,我們鄭重的提醒您:
謹慎點擊來自電子郵件/短信/網(wǎng)站/廣告的超級鏈接;
不要安裝來自非官方渠道的應用;
及時更新Android設備。
參考鏈接
[1] https://www.fireeye.com/blog/threat-research/2015/09/guaranteed_clicksm.html
[2] https://github.com/trevd/android_root
[3] https://github.com/saurik/mempodroid
[4] https://play.google.com/store/apps/details?id=cc.taosha.toolbox.shareit
附錄1
附錄2
Owner: CN=tao sha, OU=IT, O=taosha.cc, L=Shenzhen, ST=Guangdong, C=86
SHA1: EF:A5:C2:18:9C:21:4B:A8:21:90:4C:10:6A:B5:77:53:0F:22:00:62
Owner: CN=hexy_root_009, OU=hexy_root_009, O=hexy_root_009, L=hexy_root_009, ST=hexy_root_009, C=hexy_root_009SHA1: E3:BD:4B:4F:38:7C:1A:A8:C0:4C:98:B2:B2:B1:B0:CF:33:5E:71:BC
Owner: CN=keke_root_025, OU=keke_root_025, O=keke_root_025, L=keke_root_025, ST=keke_root_025, C=keke_root_025SHA1: 41:F4:9B:14:E9:8A:7C:EF:5E:BF:D9:9C:8F:58:43:48:45:BE:12:B2
Owner: CN=kiss, OU=kiss, O=kiss, L=hangzhou, ST=zhejiang, C=86SHA1: 72:62:C5:38:78:81:B1:10:51:B3:D3:B3:63:B5:AC:F9:B9:8F:6E:B9
Owner: CN=google, OU=google, O=android, C=CNSHA1: E9:20:9A:53:9B:C7:41:22:1D:53:37:FE:FA:9E:26:59:6C:3D:08:96
Owner: CN=wilson, OU=land, O=land, L=hangzhou, ST=zhejiang, C=86SHA1: E5:58:C9:BA:6A:A3:D1:AC:2A:12:5B:94:C6:F6:02:2F:EE:0D:19:39
Owner: CN=hzckgames, OU=hzckgames, O=hzckgames, L=hangzhou, ST=zhejiang, C=86SHA1: 49:D2:51:A6:67:CC:9D:C2:9D:AB:FA:E8:D3:85:44:FF:B0:59:BC:90
Owner: CN=hong, OU=fjwy, O=fjwy, L=zhejiang, ST=zhejiang, C=CNSHA1: 89:81:E2:B0:30:A9:A4:60:5D:B2:4B:E4:31:59:A3:01:73:1C:C6:53