Wombie Attack—恶意代码传播的新路径

雷锋网编者按:8月16日,第三届中国互联网安全领袖峰会(CSS 2017)在北京国家会议中心召开。作为九大分会场之一的腾讯安全探索论坛(TSec)以“安全新探索”为主题,云集了国际知名厂商及顶尖高校的资深安全专家,探讨全球信息安全领域前沿技术、研究成果及未来趋势。

腾讯安全玄武实验室的刘惠明、郭大兴带来了一种恶意代码传播的新路径——Wombie Attack。据雷锋网了解,Wombie Attack 技术通过被感染者在地理位置上的移动来实现攻击扩散,类似僵尸题材电影的情节——被僵尸咬了的人也变成僵尸,会再去咬其他人,该威胁技术不但可以实现传染式攻击,而且攻击过程不依赖互联网,所以甚至无法从网络层面检测攻击。

以下为雷锋网整理实录:

郭大兴:我是来自腾讯玄武实验室的郭大兴,今天和我的同事刘惠明一起演示一个在极棒上演示的项目。

从 1997 年 802.11 协议出来,到现在已经接近 20 年。最近我们查了 wifi 联盟在 2016 年发表的声明,到了 2016 年初,wifi 设备量已经有 120 亿。现在已经进入到物联网时代,会有越来越多的设备带有 wifi功能。

在常见的 wifi 场景下,芯片经常处于 STA 模式或者 AP 模式。当设备想连接无线路由器的时候,会有主动扫描和被动扫描两种方式。在配置无限路由器的时候,会配置一个 ID,它会定期的对外进行广播,发一个数据包,告诉外面无线设备它的存在。在接收到数据包的时候,就会知道它已经进入到 IP 信号覆盖的范围内。另外一种是它会主动发 Probe Request,探索 ID 的存在。

2005 年,针对 wifi 设备主动连接、主动扫描 AP 的方式出现了 karma 攻击,最著名的是 wifi Pinapple攻击,可以做到对 wifi 基站进行欺骗,劫持它的流量,进行中间人攻击。劫持流量之后,会提供很多插件,对它后续的攻击进行分析。

手机芯片既可以工作于 STA 模式,也可以工作于 AT 模式。你每天用手机在家里上网,也可以使用公司的无线网络,还会出现在其他的无线网络环境里,访问大量的 IP 。karma 攻击经过这么多年,是不是手机对它已经免疫了?如果手机遭受 karma 攻击,会给我们带来什么样的影响?

经过分析,我们发现安卓手机不会再对外发送 Directed Probe,但是会主动发送 Broadcast Probe。我们可以采用 XIB 的质点,对它进行攻击。手机连 wifi 网络的时候,通常是通过一个列表,列表上面显示附近有哪些 IP,点击进行加入。

还有一种方式是通过手动添加网络的方式来添加一个 IP。通常情况下,IP 是可以设置为隐藏模式的,不会主动对外广播自己的存在,需要通过手动添加。但是,2011 年,已经有人跟安卓团队报告通过手动添加网络,手机依然会遭受攻击,发送 Directed Probe,目前通过手动添加网络的攻击问题仍然没有修复。

我们发现国外知名的第三方 ROM,即使刷到最新的 7.0 版本的安卓系统,它依然会发送 Directed Probe,实现 karma 攻击。

Wombie Attack 主要就是逆向分析固件,并进行更改。

这里介绍一下使用博通芯片的手机,通常使用 BCM43XX 系列。这个系列的芯片有一个 ROM 和 RAM,STA 和 AT 两种模式分别使用了不同的固件,都会被加到 ROM 当中,会有一段微码程序。可以看到 PSM 和 PSM UCODE Memory,是用来存储微码程序的。PSM 是程序状态机,会同 UCODE Memory 里面来取指令。从空中接到数据包之后,UCODE 可以对数据包进行解码。解码以后,发现符合接收的数据包。把固件当中的微码程序写入到 UCODE,提取微码程序,对它进行反馈编。

因为微码程序可以监控底层,知道什么时候接收到数据包。接收到数据包之后,可以对头部做一些简单的解码,判断出你接收的数据包是管理类的,还是控制类的,还是数据类型的数据包。当接收到数据类型的数据包的时候,会判断是不是 Probe request。

如果是广播的,或者是发给自己的,后面就会发 Probe Response。根据 IP 的配置,会把两个数据包保存在模板内存。微码会从模板内存加载 Probe Response 到 seralizer 中,PSM 通过特殊的寄存器修改前面的 64 个字节,通常情况下只需要对目的地址进行修改。

但是,它提供的数据范围允许我们访问到其中部分的 SSID,我们可以对微码程序做一些 pech,我们修改了前面 4 个字节的 SSID,让它发送出去。在微码层做 Probe Response 的欺骗,它的长度是可以变的,最长是 32 个字节。响应模板包已经生成好了,配制任何意义长度的 SSID。当你匹配不一样的长足,它是有一段缺口的。我们的办法是不在微码层处理这个问题,收到数据包以后,不进行检查,直接上传到固件层,只需要对微码做一个简单的 pech,红色的就是收到 Probe request,直接调用 L623 状态,把包上传到固件层。

我们选择的是在调用 19610E 处理管理类函数的地方做了一些 hook,在这个地方判断接收到的包是不是 Probe request。手动构造的时候,这个包里面除了包括 SSID 之外,还包括其它的信息。最简单的就是调取函数,生成模板,我们也可以直接生成模板,只不过其它的所有信息都生成好了,我们只需要基于检查接收到的 Probe 的类型,对应 SI 的部分。我们只需要把接收到的请求里的 SSID 替换掉请求里的 SSID 就可以了。如果是广播的,可以从预先准备的 SSID 字典里挑选一些出来,给它发送回去,改一下 mac 地址,就可以实现对 Probe request 的欺骗。

除了需要对 Probe request 进行修改,在后续的协议中 Association Request  Handler 用 NOP 指令替换跳转指令。首先会检测是不是 SSID 类型,后面会判断长度跟你配置的 SSID 长度是不是一样。如果一样,会进一步判断包请求当中的 SSID 是不是跟它配置的一样。我们只需要用简单的 NOP 指令替换跳转指令。这样就可以在手机上实现类似于 karma 的功能。在 6P 里面,Association Request 不一样了,每一个协议里都有一个 Element,这部分的检验函数是在一个 ROM 中实现的。在具体解码的时候,会根据接收到协议的类型,动态的生成一个函数指针的数组,把这个数组传递给解析函数,解析函数会根据参数判断 Elements 调用对应的函数指针。在函数调用之前,可以把 SSID 的检验函数替换给我们自己生成的,这样就可以解决 6P 的部件对这个部分的验证。

固件生成用的是 Nexmon,他们想在手机上实现 monitor 的模式基于 C 语言修改博通的框架。我们在 Nexu5 和 6P 上实现了部件的修改,实现了类似 karma 攻击的效果。

接下来有请刘惠明给大家介绍。

刘惠明:我的同事已经完成了在手机上建立 karma 攻击源。下面我介绍通过这个攻击源能实现什么内容。

首先我将介绍 Wombie Attack 整体攻击流程和实现的典型步骤。首先,攻击者利用手机进行 karma 攻击,截取受攻击的手机流量。之后,可以通过受害者手机的远程代码执行漏洞获取手机上的远程代码执行权限。之后再利用 root 漏洞获取 root 权限,修改手机上的固件,搭建另一个受害者手机上的 karma 攻击源。这样受害者就变成新的攻击源,可以感染另一台手机。

我们设计的 Wombie Attack 的木马结构,主要分为三个部分。第一部分是后台 AP,在手机上利用 hostapd,后台开启 AP 用户根本没有任何感知。第二部分是流量劫持模块,用 dnsmasq 劫持特定流量,并注入恶意代码。最后就是最核心的漏洞利用代码。利用目标手机上的漏洞获取远程代码执行能力,并使用匹配手机 root 进行 root,随后在后台静默执行 Wombie 的部署脚本,将受害者的手机变成新的攻击源。

这是我们在极棒上的演示,最终获取的是手机 B 上面的照片。攻击者拿着一部手机,靠近手机 A。A 和 B都是受 karma 攻击影响的。手机 A 进入攻击者的 SSID 范围,攻击者向手机 A 劫持流量,并利用手机 A上面的漏洞,将其控制。之后,把部署脚本传到手机 A,手机 A 就变成新的攻击源,会散播恶意的 SSID信号。手机 A 靠近手机 B,在手机 A 的主人没有感知的情况下,它会进一步感染手机 B。这时,我们的演示中是直接把手机B作为最终的攻击目标,漏洞利用之后,将手机 B 中的照片传到手机 A 上。手机 A 返回攻击者附近。此时,攻击者可以从手机 A 上拿到手机B的照片。此时,手机 A 相当于攻击的摆布人,直接将攻击传到世界的各个角落。

我们要确认攻击时限的可行性。其中最大的助力来源于安卓生态系统碎片化带来的隐患。根据 Google 7 月份发布的最新数据,小于等于 4 的版本仍然占 26%,安卓 5 以前的版本占一大半。此时,上面的漏洞又是什么情况呢?根据网络数据显示,99.8% 的设备存在远程攻击漏洞。不夸张的讲,绝大部分手机上都是存在攻击的可能性的。因为手机的大量存在和移动性,将会导致大量的手机受到攻击的影响。

在探讨攻击的可行性之后,我们将分析攻击到底会造成什么样的影响。不仅是偷照片那么简单,它还有两个最重要的特性。一是攻击的隐藏性。根据之前的介绍,它是一个完全不依赖互联网传播的可以逃避网络上监测和查杀的木马传播的新路径。可以绕过主流互联网的监控设备。二是一个攻击的放大器,可以将低危漏洞转为高危漏洞,高危漏洞更加危险。比如,劫持流量。高危漏洞就是劫持权限,上正常的网站也会遭受攻击。

karma 攻击依然威胁着信息世界的安全。结合移动智能手机的碎片化、更新不及时、移动性强等特性,将会造成更加危险的状况。本攻击模型涉及到系统安全、无线安全和用户行为引导多个领域,需要多方合作,共同解决未来的威胁。我们在研究中发现,要解决问题,需要用户层、驱动层多方共同努力。

安全不是绝对的,如果想更加安全,除了厂商的努力之外,也需要用户自身的注意。最终是一个视频带着解说的演示,作为演示的结束。也是为了大家更深入的理解演示系统。感谢马彬、TK教主的帮助。

雷锋网

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>