专栏首页FreeBuf沉睡一年的“脏牛”又被攻击者利用,Android用户你们还好吗?

沉睡一年的“脏牛”又被攻击者利用,Android用户你们还好吗?

还记得 2016 年那个著名的 Linux 内核级漏洞 Dirty Cow(脏牛)吗?2016 年 10 月,研究人员发现 Linux 内核的内存子系统在处理写时拷贝(Copy-on-Write)时存在条件竞争漏洞,导致可以破坏私有只读内存映射。一个低权限的本地用户能够利用此漏洞获取其他只读内存映射的写权限,有可能进一步导致提权漏洞,因此将这个漏洞命名为“脏牛”。

“脏牛”漏洞自 2007 年开始就存在于 Linux 的内核中,直到 2016 年才被发现,漏洞爆出后很快就有了修复补丁。后来,研究人员还发现这个漏洞可以用于获取 Android 设备的 root 权限,因为 Android 系统是基于早期的 Linux 内核,所以也可能遭到“脏牛”的攻击。由于修复迅速且利用难度较大,当时并没有太多利用“脏牛”进行攻击的案例。

然而,时隔近一年,来自趋势科技的研究人员又发现了“脏牛”的踪迹:一个名为 ZNIU 的恶意程序使用“脏牛”漏洞获取 Android 设备的 root 权限并植入后门,攻击者可以利用植入的后门收集设备中的信息。

看不到视频,点这里

此外,如果受害者订阅了中国通信运营商的服务,攻击者就会展开第二阶段的攻击:利用后门赋予的设备 root 权限,通过运营商的短信支付服务敛财。而且为了避免被注意到,每次短信支付都设置了很小的金额(20 人民币或者仅仅 3 美元)。在安卓系统上,如果有 APP 要获取短信支付,需要经过人机交互,手动授予权限,而由于 ZNIU 有 root 权限,所以可以直接设置,无需通过交互就可完成短信支付。支付完成后,ZNIU 还会删除短信提醒,藏匿行迹。

ZNIU 的实现机制

从技术层面来看,ZNIU 实际使用的“脏牛” exploit 其实与去年研究人员公布的 POC 代码并不相同。目前 ZNIU 使用“脏牛” exploit 只在 64位 ARM/X86 架构的 Android 版本上生效。如果 ZNIU 感染的是 32 位 ARM CPU 架构的安卓手机,则会利用 KingoRoot APP 和Iovyroot exploit(CVE-2015-1805)获取 root 权限。

ZNIU 的 rootkit 实际上是通过独立的广播接收器整合入恶意 APP 中的。其代码如下:

恶意软件无需更改其他组件,可以轻易将 rootkit 注入第三方应用程序,这有助于其大规模分发。

攻击者可以加密并打包 ZNIU 的恶意 DEX 代码进行自我保护,防范静态逆向。 经过进一步调查,研究人员发现,一旦用户将设备接入网络或只是简单地接入电源,ZNIU 就会使用广播接收器激活 exploit 代码,随后直接传输并执行恶意的本机代码。

ZNIU的本机代码的主要逻辑如下:

1. 收集设备的型号信息; 2. 从远程服务器获取相应的 rootkit; 3. 解密 exploit; 4. 逐个触发 exploit,检查结果,并删除 exploit 文件; 5 .报告 exploit 的结果

此外,远程攻击服务器的 URL 以及客户端和服务器之间的通信都被攻击者加密了。研究人员使用字符串解密,并进一步研究恶意 exploit 服务器,发现其域名和服务器主机都位于中国。 恶意攻击服务器的链接为:hxxp://reg[.]oozclimb[.]com:5101

下载之后,‘exp.ziu’ rootkit 会解压为 ‘exp.inf’ :

rootkit 所需的全部文件都打包存储在同一个 .inf 文件中,该文件以 ‘ulnz’ 开头,包含 ELF 和 script 文件。

ZNIU rootkit可以任意写入 vDSO(虚拟动态链接共享对象),该对象将一组内核空间函数导出到用户空间,便于应用程序更好地执行。 vDSO 代码可在以没有 SELinux 限制的内核环境中运行。

ZNIU 使用公开的 exploit 代码将 shellcode 写入 vDSO 并创建反向 shell。 随后修补 SELinux 策略以解除限制,并植入后门 root shell。

1200 多个安卓 APP 受感染

目前,研究人员已经在各个网站中检测到 1200 多个携带 ZNIU 的恶意 APP 或,大多是游戏和色情应用。此外,趋势科技以公司客户为对象进行检测,发现 5000 名感染了 ZNIU 恶意程序的用户,而全球范围的实际感染数量可能更大。ZNIU 感染的用户遍布 40 个国家,其中大多数人位于中国和印度,还有一部分位于美国、日本、加拿大、德国和印度尼西亚等。

谷歌目前已经发布了修复补丁,并在官方 Play Store 中进行了检测。可以确认的是,感染了 ZNIU 的 APP 不会出现在谷歌 Play Store中.

因此,为了避免感染,用户只能从Google Play Store 或受信任的第三方应用商店下载应用程序,并使用合适的安全解决方案。用户还可以与设备制造商和/或电话运营商联系,获取漏洞的补丁。

以下是检测到的包含哈希值、包名和 APP 标签的入侵指标列表,可以查看到所有受感染的 APP 类型:

本文分享自微信公众号 - FreeBuf(freebuf),作者:AngelaY

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-10-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 来自11家OEM厂商的智能手机容易遭到隐藏AT指令攻击

    国外的安全研究人员发现,来自11家智能手机OEM厂商的数百万台移动设备容易遭到隐藏AT命令攻击。

    FB客服
  • 挖洞经验 | 看我如何发现“小火车托马斯”智能玩具APP聊天应用漏洞

    最近,我向智能玩具厂商ToyTalk提交了两个APP相关的漏洞并获得了$1750美金奖励,目前,漏洞已被成功修复,在此我打算公开详细的漏洞发现过程,以便其他AP...

    FB客服
  • 利用旧版Android漏洞的E-Z-2-Use攻击代码已在Metasploit发布

    利用旧版Android漏洞的E-Z-2-Use攻击代码发布利用Android操作系统WebView编程接口漏洞的攻击代码已作为一个模块加入到开源漏洞利用框架Me...

    FB客服
  • 巧用 TypeScript (一)

    TypeScript 提供函数重载的功能,用来处理因函数参数不同而返回类型不同的使用场景,使用时,只需为同一个函数定义多个类型即可,简单使用如下所示:

    三毛
  • 【Python基础】字典的用法你了解吗

    字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中。

    DataScience
  • ​LeetCode 733: 图像渲染 flood-fill

    有一幅以二维整数数组表示的图画,每一个整数表示该图画的像素值大小,数值在 0 到 65535 之间。

    爱写bug
  • 全程手写Spring MVC有多难?一、配置阶段二、初始化阶段三、运行阶段

    人见人爱的Spring已然不仅仅只是一个框架了。如今,Spring已然成为了一个生态。但深入了解Spring的却寥寥无几。这里,我带大家一起来看看,我是如何手写...

    Java架构
  • 【计算机本科补全计划】C++牛客网试题习题解析

    正文之前 一大早醒来,外面淅淅沥沥的雨绵绵的下着,床铺真的舒服,但是我也不能就在床上刷微博看小说吧,所以想起了昨晚下载的牛客网的APP,赶紧掏出我的大宝贝---...

    用户1687088
  • 系统休眠(System Suspend)和设备中断处理

    本小节主要解决这样一个问题:在系统休眠过程中,如何suspend设备中断(IRQ)?在从休眠中唤醒的过程中,如何resume设备IRQ?

    233333
  • 名词小解

    ----------------------------------------------------------------------------- py...

    黑泽君

扫码关注云+社区

领取腾讯云代金券