号称植入了2000万设备的欺诈后门拓展分析

一颗小胡椒2023-10-17 10:21:50

事件概述

近日,奇安信威胁情报中心注意到外国安全厂商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

 

解密字符串的部分:

 

解密算法:


public class De {    public static void main(String[] args) {        System.out.println(dec("d62kyun6d", "C4FF3D0FF6730B4AE7BFA387C88862560050076610A3517E03BA599535DEAA943134CA7E20F8138A7D0331"));    }    public static String dec(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 = new byte[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) {                throw new RuntimeException(e);            }        }        return v7_3;    }    public static byte[] a(byte[] arg4, String arg5) {        try {            SecretKeySpec v5 = Sekey(arg5);            Cipher v0 = Cipher.getInstance("AES/CFB/NoPadding");            v0.init(2, v5, new IvParameterSpec(new byte[v0.getBlockSize()]));            return v0.doFinal(arg4);        }        catch(Exception v4) {            v4.printStackTrace();            return null;        }    }    private static SecretKeySpec Sekey(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;        }
        return new 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、奇安信态势感知等,都已经集成本次事件中所涉及的威胁情报,支持对此类攻击的精确检测。

string
本作品采用《CC 协议》,转载必须注明作者和本文链接
如果你不是 Java8 的钉子户,你应该早就发现了:String 类的源码已经由 char[] 优化为了 byte[] 来存储字符串内容,为什么要这样做呢? 开门见山地说,从 char[] 到 byte[],最主要的目的是为了节省字符串占用的内存 。内存占用减少带来的另外一个好处,就是 GC 次数也会减少。
Adobe已经发布了一个名为Stringlifier的开源工具,该工具允许用户识别任何纯文本中随机生成的字符串,该工具可用于清理日志。Stringlifier工具是用Python编写的,它使用机器学习来识别插入普通文本中的随机字符序列。开源工具可用于出于多种目的分析日志,例如研究意外暴露的凭证。Stringlifier能够在源代码或配置文件中查找API密钥,哈希,随机生成的字符串,包括密码,日志。Adobe在Github上发布的描述中写道。
介绍Runtime 是一系列采用 C++ 语言编写的功能方法,它实现了大量 JavaScript 运行期间需要的 native 功能。本文分析 Runtime_StringToArray 方法的源码和重要数据结构,讲解 Runtime_StringToArray 方法的触发条件。
介绍Runtime 是一系列采用 C++ 语言编写的功能方法,它实现了大量 JavaScript 运行期间需要的 native 功能。
通过common-collection相关gadget,想办法调用org.mozilla.classfile.DefiningClassLoader这个类去加载字节码。然后通过T3协议的反序列化漏洞发送给待攻击weblogic服务器。
举个例子:但是对于64位的来说 ROPgadget预设的长度是不够的。所以,我们可以使用ROPgadget --binary ./b --depth 100来加深他的搜索深度。2利用_libc_csu_init制造ROP常规方法我们前面说的利用ROPgadget来寻找,大多都是找到直接设置某个寄存器的rop,当然也可以使用--ropchain这个参数。
一般情况下类与类之间是相互独立的,内部类的意思就是打破这种独立思想,让一个类成为另一个类的内部信息,和成员变量、成员方法同等级别。「内部类的好处:」把一个类写在外面和写在里面最终达到的结果都一样,那我们为什么还要使用内部类,岂不是多此一举吗?
当被问及网络间谍是否成功时,爱德华·斯金格表示,他非常有信心地确信,除了国防学院本身,没有任何其他危害行为。斯金格接受采访时透露,本次攻击看起来不像是一次暴力攻击,但有代价。国防学院立即意识到它可能已成为敌对国家在灰色地带式网络攻击中的目标的可能性。官方迅速采取了行动,对更广泛的国防部IT网络没有影响。
java安全-02RMI
2022-03-25 15:35:13
基础知识动态代理反射攻击方式注册端攻击服务端java -cp .\ysoserial-master-8eb5
MISC中常用python脚本
2021-09-20 20:26:46
MISC中常用python脚本总结
一颗小胡椒
暂无描述