安卓车机正悄悄沦为僵尸网络节点
车机中控也就是业内所说的 head unit,既是车辆的多媒体娱乐中枢,也承担一部分车辆功能控制,分为原厂预装版本和后期改装的后装版本。不少厂商会选用安卓作为车机的底层系统,安卓开源代码本身就适配车载场景,厂商还能在固件编译阶段内置自研系统应用,用来定制界面、补充硬件适配组件。绝大多数普通安卓应用都可以直接在车机上运行,恶意软件自然也不例外。
不过部分手机端常见的木马,比如银行木马,在车机上几乎没有利用价值。车机不会运行手机银行,攻击者投入资源去植入这类程序得不偿失。但大量车机自带 SIM 卡槽,能够长期联网,这一特性让车机逐渐成为黑产团伙盯上的新目标。
完整的攻击链路采用分层加载的设计,从车机端的 TWCore 核心程序启动,依次经过 JarService 投放器、Loader 加载器、Clicker 加载器三层载荷,最终落地 zhima 反向代理模块,后端由 MQTT 消息服务器和多台 C2 命令控制服务器组成完整的指挥体系。
第一阶段:JarService 投放器
JarService 本身体积不大,没有任何可视化界面。木马代码内部存放多块加密数据,每一块数据使用单字节密钥做 XOR 加密,不同数据块的密钥会线性偏移。解密完成之后,程序会反序列化得到下一阶段载荷的版本、入口信息,同时取出自身内置的后续加载逻辑。
在本次分析的样本中,第二阶段载荷的入口点是 com.c.j.qbh 类下的 wa 方法。
第二阶段:loader 加载器
第二阶段的恶意 loader 内部保存大量加密字符串,这些字符串后续会被当作类名,通过 Java 反射机制执行第三阶段载荷。
loader 会向攻击者的 C2 也就是命令控制服务器发送 POST 请求上报设备信息,上报内容包含 userId、dexVersion、dexType、channelId、packageName、appVersion、appName 等字段。C2 服务器返回 JSON 格式响应,其中 dexUrl 字段给出第三阶段载荷的下载地址。下载回来的数据头部首先是单字节整数,对应解密 loader 内部字符串的密钥,紧随其后的四字节浮点数值,用来 XOR 解密真正的第三阶段载荷。解密完成后,第三阶段程序的入口是 com.ast.sdk.BillingMain 类的 init 方法。
研究人员尝试变换载荷链接里的版本号,一共获取到 7 个不同的第三阶段变体。其中最早的 3.57 版本使用了完全不一样的解码算法,说明在更早的攻击版本中,JarService 和第三阶段之间使用过另一套 loader 逻辑。
第三阶段:点击器与反向代理加载器
第三阶段程序默认每 90 分钟就向服务端的 /cpc/api/task 接口发送 POST 请求,上报设备分辨率、设备型号、WiFi 的 SSID、MAC 地址还有木马配置版本。
如果本地配置已经过时,C2 就返回更新后的配置,包含全新的 C2 地址、HTTP 请求路径,本次研究捕获到的最高配置版本为 3.82。如果配置无需更新,服务器返回整数 productId 也就是指令编号,木马会把指令编号对应的 JSON 序列化指令存进 SharedPreferences 接口。一旦收到陌生 productId 或者版本过期的指令编号,木马就会发起 GET 请求访问 /cpc/api/xml 接口拉取完整的指令脚本。
每一条指令都带有 tagName 标记,程序根据标记映射到对应执行类。报告发布时攻击者一共实现了 9 套指令,覆盖返回存储数据、修改剪贴板、发起 HTTP 请求、WebView 加载网页执行 JS、deeplink 跳转浏览器、traceroute 网络探测、loadlib2 下载执行任意代码等能力。
在真实攻击场景中,攻击者主要启用 loadlib2 和 http 两条指令。loadlib2 用来下载名叫 zhima 的模块,这个模块就是反向代理组件。诺基亚 Deepfield 应急响应团队也在电视机顶盒样本中独立发现过 zhima,两边的发现互相印证,攻击者的最终目标就是搭建代理僵尸网络。zhima 模块同样存在多个版本,研究人员通过版本遍历拿到 8 个变体,最早的版本号为 57。
这套木马的牟利逻辑十分隐蔽,被感染的车机不会窃取车主的银行卡密码,它会把本机网络对外开放成为代理节点。黑产可以购买这些代理服务,对外发起网络请求,流量看起来就来自普通车主的家庭网络,以此绕过很多风控拦截。同时木马附带的点击器能力还可以做广告点击欺诈,刷取广告收益。
车主全程几乎感受不到任何异常,车机表面一切正常,只是后台在悄悄运行黑产业务。
在分析第二阶段 loader 的时候,研究人员发现程序会创建名为 mosdk host loader 的线程。顺着 mosdk 这个线索,研究人员找到机顶盒恶意样本 com.abc.nexus,样本内部有一个和 JarService 逻辑高度相似的投放组件,它的启动服务命名为 AdmoyuService。
结合线程命名、服务命名,再加上网络基础设施大量重合,卡巴斯基以高置信度将本次攻击归属给 MoYu Group,该组织就是 BADBOX 僵尸网络背后的运营者。其代理平台的注册登录接口路径格式高度统一,都是 admin 子域名搭配 /proxy/u/login 登录接口、/proxy/register?channelKey = 注册接口,多方线索都指向这套代理平台和 MoYu Group 存在关联。
即便安全厂商和执法机构一直在打击 BADBOX 这类僵尸网络,相关黑产团伙依旧在不断迭代攻击手段。传统感染方式包括预装后门、被篡改的 IPTV 应用,而本次事件展示了更加新颖的攻击路径,攻击者直接利用设备原厂的合法更新系统下发恶意载荷。
这也是公开记录里,第一次出现专门瞄准车机中控的完整恶意感染链路。这意味着汽车中控不再只是一个单纯的多媒体盒子,它和物联网设备、手机一样,已经成为黑产重点盯上的目标。攻击者并不需要攻破车辆动力控制系统,不需要窃取车主个人隐私,仅仅劫持联网能力,就可以把千千万万台机变成默默赚钱的僵尸节点。车主很难感知到异常,但其中的危害却实实在在存在。
页:
[1]