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中写入各种类型的数据来实现攻击。
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拒绝服务等。
0x03 基于NFC的Android漏洞利用
Android里很多漏洞,都可以通过访问一个恶意网页实现利用。基于这点,这篇文章所有的漏洞利用都是将一个恶意url写入NFC Tag实现的。
一、使用drozer模块下发木马安装(安装需要用户点击),并实现远控。只需要把drozer server地址写入NFC Tag中,轻触便可强制浏览器打开url,下载安装,并通过浏览器唤起木马程序。
二、利用系统浏览器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访问如下网页,崩溃退出。
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
by行之。
发表评论
您还未登录,请先登录。
登录