事件概述
近日,奇安信威脅情報中心注意到外國安全廠商humansecurity在外網揭露了一個名為BADBOX的事件,其報告稱觀察到至少觀察到74000 部基于 Android 的手機、平板電腦、和全球聯網電視盒有遭遇BADBOX 感染的跡象;而來自趨勢科技的說法是該后門據信被植入了2000萬數量級別的設備。實際上,humansecurity在其分析報告中已經對該事件進行了比較詳細的技術分析,各位如果有興趣可以自行查看。本篇文章中,我們主要想基于奇安信自身情報視野做一些關聯擴展分析,希望能從我們的視角出發提供更多的補充信息給到業界。
分析細節
基于奇安信威脅情報中心的歷史流量記錄,可以看到humansecurity提供的幾個C2地址在國內的感染量并不算少,以cbphe.com為例,可以看到cbphe.com22年到23年5月份基本上是每日訪問情況比較平穩,從23年開始逐步增長,到了23年5月之后,感染量突然暴增,并一直持續到現在。
另外,我們發現域名flyermobi.com下有多個關聯的樣本,首先選一個樣本進行定性分析,這里隨機挑選了一個e6027f962eaaf7dede8a271166409fe6。
樣本信息:
MD5:e6027f962eaaf7dede8a271166409fe6
包名:com.gavv.tissm
樣本會解密原包中/a/b.data 文件,釋放jar,通過dexclassloader的方式加載
原包文件:
移動設備中釋放的jar和dex
然后動態加載jar文件:
樣本會將釋放的jar的版本號(v)、設備型號(tp)、Android系統版本(bdr)、軟件版本(rv)、包名(pk)等數據上傳到解密出來的url中,對比返回版本信息,如果版本有更新則下載新的jar,從而實現版本更新。url如下:
hxxp://adc[.]flyermobi.com/update/update.conf?bdr=xx&rv=x&v=xxx&pk=xxx&tp=Generic+Android-x86_64
解密字符串的部分:
解密算法:
publicclassDe {
publicstaticvoidmain(String[] args) {
System.out.println(dec("d62kyun6d","C4FF3D0FF6730B4AE7BFA387C88862560050076610A3517E03BA599535DEAA943134CA7E20F8138A7D0331"));
}
publicstatic Stringdec(String key,String msg){
String v7_3 ="";
byte[] v7_2;
int v0 =0;
if (msg.length()>=2){
String v7_1 = msg.toLowerCase();
int v2 = v7_1.length() /2;
byte[] v3 =newbyte[v2];
while(v0 < v2) {
int v4 = v0 *2;
v3[v0] = (byte)Integer.parseInt(v7_1.substring(v4, v4 +2),16);
++v0;
}
v7_2 = v3;
byte[] v6 = a(v7_2, key);
try {
v7_3 =new String(v6,"UTF-8");
}catch (UnsupportedEncodingException e) {
thrownew RuntimeException(e);
}
}
return v7_3;
}
publicstaticbyte[]a(byte[] arg4, String arg5) {
try {
SecretKeySpec v5 = Sekey(arg5);
Cipher v0 = Cipher.getInstance("AES/CFB/NoPadding");
v0.init(2, v5,new IvParameterSpec(newbyte[v0.getBlockSize()]));
return v0.doFinal(arg4);
}
catch(Exception v4) {
v4.printStackTrace();
returnnull;
}
}
privatestatic SecretKeySpecSekey(String arg2) {
byte[] v2_1;
if(arg2 ==null) {
arg2 ="";
}
StringBuilder v0 =new StringBuilder(0x20);
while(true) {
v0.append(arg2);
if(v0.length() >=0x20) {
break;
}
arg2 ="0";
}
if(v0.length() >0x20) {
v0.setLength(0x20);
}
try {
v2_1 = v0.toString().getBytes("UTF-8");
}
catch(UnsupportedEncodingException v2) {
v2.printStackTrace();
v2_1 =null;
}
returnnew SecretKeySpec(v2_1,"AES");
}
}
返回結果中包含下載地址,md5,版本號等內容
釋放的jar中,利用webview實現后臺刷廣告牟利的功能。廣告地址通過訪問url獲取,利用MotionEvent實現自動點擊廣告。
訪問url:http://adc.flyermobi.com/config/config.conf、http://adc.flyermobi.com/config/config.conf.default來獲取廣告相關url
利用webview請求廣告:
通過MotionEvent實現廣告點擊:
分析到這里,可以確認這個樣本行為與humansecurity提到的基本一致,該惡意程序是一個內置的后門,通過后門實際遠程下載其他代碼模塊并加載的功能;目前看到的主要功能模塊是用于后臺點擊廣告來牟利。
接下來嘗試對相關C2地址進行關聯分析,首先將公開披露的這幾個域名(cbphe.com 、cbpheback.com、ycxrl.com、dcylog.com、flyermobi.com;)輸入到奇安信威脅情報中心的【威脅圖譜分析】模塊中,威脅圖譜會自動將這幾個域名的歷史解析記錄、whois、關聯樣本等等多種關聯關系展示在畫布上。
其中,我們注意到flyermobi.com這個域名有一個解析的IP 128.199.193.15,這個IP上還關聯到了其他的域名,其中有一個apkcar.com的域名也解析到128.199.193.15這個IP上,并且其子域名ymex.apkcar.com、ymlog.apkcar.com的域名結構與前面的rnznd.ycxrl.com、z3rv.ycxrl.com(ycxrl.com的子域名)結構相似。
進一步下鉆關聯數據,可以看到ymsdk.apkcar.com曾經cname到adbsdk.flyermobi.com,并且擴展出來更多的子域名、URL和樣本,如下圖:
選擇其中一個樣本進行分析(MD5:f33401aaf64a2dd3ed14e6f441ac83ab),可以看到代碼與前面分析的樣本代碼十分相似:
到這里,我們基本可以確定apkcar.com,是本次事件同一個團伙的域名,而這個域名在其他安全廠商的報告中都沒有提到。我們通過奇安信威脅圖譜關聯的方式擴展出了一個之前沒有被發現的新C2.
總結
經過上述分析,可以確認本次事件確有其事,攻擊者通過在機頂盒內置后門的方式,利用后門遠程下載并加載其他惡意代碼模塊;最后通過后臺隱蔽點擊廣告來進行牟利。
目前,基于奇安信威脅情報中心的威脅情報數據的全線產品,包括奇安信威脅情報平臺(TIP)、天擎、天眼高級威脅檢測系統、奇安信NGSOC、奇安信態勢感知等,都已經集成本次事件中所涉及的威脅情報,支持對此類攻擊的精確檢測。
IOC
DOMAIN
cbphe.com
cbpheback.com
ycxrl.com
dcylog.com
flyermobi.com
apkcar.com
URL
hxxp://128[.]199.97.77/logs/log.active
hxxp://adc[.]flyermobi.com/update/update.conf
hxxp://ymsdk[.]apkcar.com/adbu
MD5
e6027f962eaaf7dede8a271166409fe6
f33401aaf64a2dd3ed14e6f441ac83ab
參考鏈接
[1].https://humansecurity.com/hubfs/HUMAN_Report_BADBOX-and-PEACHPIT.pdf
[2].https://arstechnica.com/security/2023/10/thousands-of-android-devices-come-with-unkillable-backdoor-preinstalled/
來源:奇安信威脅情報中心