Android漏洞利用方式之NFC浅析

阅读量    523762 |

分享到: QQ空间 新浪微博 微信 QQ facebook twitter

http://p0.qhimg.com/t01373ee81d7ad0a7af.jpg

author:行之@ 360 vulpecker team

0x00 前言

前两天在drops上看到一篇文章,简单介绍了Android平台上结合二维码实现的漏洞利用[1]。除二维码以外,文中讲到的漏洞利用都可以通过NFC实现。通过NFC还可以实现更多本地漏洞的利用。这篇文章的目的在于科普,使更多用户意识到NFC在开启状态下,可以实现很多攻击,提醒用户在不使用时及时关闭。


0x01 什么是NFC

NFC,全称 Near Field Communication。NFC是一套近场通信协议,可以通过触碰或近距离实现两台设备间数据通信。由于其具有低功耗、便捷、成本低等特点,被广泛应用于移动支付。


0x02 NFC工作原理

基于NFC的设备基本上有两种可能的通信方式:Passive、Active。

Passive模式,一般指的是开启NFC的设备读取NFC Tag。

Active模式,一般指的是两台开启了NFC的设备之间的端对端的通信。这种模式下,可以便捷的传递二进制文件和多媒体文件等。

NFC使用NDEF(NFC Data Exchange Format)格式标准传递数据,这种格式是一种简单的二进制消息格式,这种消息格式包含多种类型:普通文本、url链接等。下图是TagWriter[2]工具所支持的数据格式,通过这个软件可以向NFC Tag中写入各种类型的数据来实现攻击。

http://p8.qhimg.com/t01b0701fb9a68502eb.png

Android NFC协议栈可以分为三部分:Kernel、NFC Services以及Tag本身。Kernel层包含libpn544_fw.so,这是NFC的驱动。它会响应一些必要的NFC信号。在Android里,NFC服务是由com.android.nfc这个应用提供的,它依赖三个主要的驱动组件: libnfc_jni.so、libnfc_ndef.so和libnfc.so。这三个组件分别负责JNI、NDEF和其他NFC相关的数据部分。

当NFC Tag (或者开启了NFC的设备)接近一台开启了NFC的Android 设备后,Kernel层的libpn544_fw.so感应到NFC信号,会调起NFC服务,一旦NFC服务被调用,这些服务便会接收NFC数据并分类存储。这里我们重点关注的是libnfc_ndef部分的数据。NFC Tag中的数据便是在这里被解析处理。www格式的数据会打开浏览器处理,mailto:协议会调用邮件客户端处理,而一些异常的畸形数据将导致NFCService拒绝服务等。

http://p4.qhimg.com/t012c5b90c4df1016cf.png


0x03 基于NFC的Android漏洞利用

Android里很多漏洞,都可以通过访问一个恶意网页实现利用。基于这点,这篇文章所有的漏洞利用都是将一个恶意url写入NFC Tag实现的。

一、使用drozer模块下发木马安装(安装需要用户点击),并实现远控。只需要把drozer server地址写入NFC Tag中,轻触便可强制浏览器打开url,下载安装,并通过浏览器唤起木马程序。

http://p7.qhimg.com/t01397737d8f3550535.png

http://p7.qhimg.com/t01d5b7af772cfea7f1.png

二、利用系统浏览器WebView远程代码执行漏洞,实现root提权,并静默安装木马远控。

同样可以把攻击者的url写入NFC Tag,强制浏览器打开恶意网页。

三、拒绝服务攻击。

拒绝服务攻击从两方面介绍:应用和系统。

应用:最新版Chrome存在两个拒绝服务漏洞。

1.访问如下内容的网页,即可导致chrome拒绝服务崩溃退出。

<html>
<script>
function t(){w.location = 'http://www.haoso.com/'}
function test()
{
  w = open()
  w.opener = null
  w.document.write('<h1>done</h1>')
  w.t = t
  w.setInterval(t, 10)
}
</script>
<body onload="test()">    
</body>
</html>

可以使用TagWriter将这个网页的URL写在NFC Tag里,如下图所示,保存并写入。然后直接将这个NFC Tag靠近手机,即可强制chrome访问如下网页,崩溃退出。

http://p5.qhimg.com/t01bcc19a9711c3f089.png

2.Chrome第二个拒绝服务可以通过intent scheme url触发,同上,将http://expmp.com/yy.html这个验证url写入tag即可。

intent://editbookmark/#Intent;scheme=chrome;end

系统:N5系统拒绝服务漏洞。

Nexus 5 4.4.2系统有个拒绝服务,可以导致系统关机重启。这里通过NFC 实现漏洞利用。

四、越权攻击。

利用三星手机USSD漏洞,实现格式化手机。

漏洞演示视频:https://youtu.be/zEESPrE0Csw

利用三星手机MDM客户端更新漏洞,实现欺诈安装任意应用。

利用appstore类应用实现自动下载安装任意应用。

利用虫洞实现本地命令执行。

直接把127.0.0.1:port/xxxx写入tag即可。

五、uxss攻击

漏洞演示视频:https://www.youtube.com/watch?v=TbyQoWyaw2g

六、启动任意应用

如果强制下载安装恶意程序后,无法通过intent scheme url实现启动应用的话,可以使用这个功能。

使用TagWriter即可实现启动任意应用,可以亲自试下。

七、信息窃取

大功率的NFC读取设备,可以更有效的读取附近的NFC卡信息。常见的场景有恶意的post刷卡机、恶意的ATM取款机等。这些恶意的NFC读取设备将导致用户的敏感信息被窃取。

八、重放攻击

在现实生活中,部分依赖NFC的门禁卡、消费卡都可以被攻击,可以使用一个支持NFC的手机,读取这些卡的信息并存储下来,使用手机来代替门禁卡、进行消费等,这种攻击被称为重放攻击。


0x04 总结

基于NFC的漏洞利用方式,有优势也有限制。

优点:

可以强制用户发起请求,代替用户手动点击url。

限制:

1.需要NFC处于打开状态。

2.需要手机处于解锁状态。(不过低版本系统漏洞可以直接绕过锁屏,另外安装了某些应用的系统也可以轻松绕过系统锁屏,比如某山一款词霸软件,目前依旧可用。)

3.需要近距离实现攻击。(比如在地铁、公交)

虽然基于NFC的攻击条件有些苛刻,无法远程,但还是存在很大风险的。建议用户在使用完NFC后,立即关闭,减少攻击面,避免不必要的损失。


0x05 参考

1.http://drops.wooyun.org/mobile/10775

2.https://play.google.com/store/apps/details?id=com.nxp.nfc.tagwriter&hl=zh_CN

3.http://nfc-forum.org/

by行之。

分享到: QQ空间 新浪微博 微信 QQ facebook twitter
|推荐阅读
|发表评论
|评论列表
加载更多