快捷搜索:  网络  渗透  后门  CVE  扫描  木马  黑客  as

安卓手机的NFC功能可截取非接触IC卡交互数据,用户需警惕

理论基础请看国外大神的PPT:DEFCON-20-Lee-NFC-Hacking,我大概说一下可用的方案以及完成的功能。仅做测试,请勿模仿。

核心道理

借助CM9 rom 2012年2月版本,新增的nfc读写标签功能,完成软件卡摹拟。(之前的版本都没有,google官方版本没有开放此功能,目前从android 5.0起google开放了其他nfc api以进行卡摹拟操作,近期微信小程序新增了类似的api,但我尚无找到已经完成了的方案,人人找到了麻烦告诉我一下啊)。

完成功能

可以截获安卓手机支持的13.56hz nfc无线通信协定的所有标签数据,nfc非接触黑盒测试始终没有太好的方案,要么太高端(需要专业的设备),要么不好用(proxmark3也不便宜,监听无线的方式导致截获数据不稳定,也没有现成儿的解决方案,操作的便捷性以及交互性也好差)nfcproxy给我们这些偶尔用一用的测试狗提供了一种低成本高效劳的解决方案,支持种种nfc标签,iso 14443标准,apdu数据也是完备稳定的,基于安卓app源码的二次开发也无比简单,会java的随意改改基本都不是问题。基于这个app可以以软件方式衍生出多种测试方式

一、卡以及终端之间数据的嗅探

2、交互过程中的数据修改

三、摹拟卡

最症结的照样简单,买俩一百来块钱一个的二手手机就可以了。

硬件需求:

两个带nfc功能的android手机(咸鱼最便宜300块钱以内可以弄定)一个带非接触功能的POS或者读卡器(有个pos最省事,我有一个支持银联闪付的pos)本人的银行卡,支持非接触支付的,有银联quick pass标志的都可以

一、基于支持CM9 rom的安卓手机一个

我用的是谷歌亲儿子一代 nexus s,ROM是slim 4.3 build 2-OFFICIAL-1332 一个基于cm的定制版本 android版本 4.3.1。我买得早,略贵,现在闲鱼买二手的话没有必要买这个,后面几代也都便宜了,二儿子三儿子四儿子什么的,都可以考虑,一加一也能够考虑,略贵。理论上支持CM9的都可以,但由于CM官网已经黄了老版本的rom不好找,所以绝量要先找到手机对应的老版本的rom再决定买啥。

2、带nfc功能的安卓手机一个(最佳也支持cm9)

我用的是 三星 GALAXY S2的T版SGH-T989大力神,工控黑客 ,CM版本是11-20160815-NIGHTLY-hercules,android版本4.4.4 ,cm11好像已经去掉软件卡摹拟的功能了,我也没有去降rom版本,有一个能用行了。只需不是太奇葩的定制rom,理论上都可以。建议照样选择支持cm的,比较保险。硬件选择同上

软件需求

https://github.com/nfcproxy/NFCProxy有完备的功能完成,人人可以直接打包使用我基于本人用着方便,整合了emv-bertlv库,可以直接在app里把交互数据拆包。人人可以用着试试我的github地址:https://github.com/alcarl/nfcproxy内陆app包下载: nfcproxy-app-debug.apk

使用要领

两个手机都装置nfcproxy都关上NFC功能连接到同一个wifi,两个手机之间可以相互走访

一、proxy端配置

在支持cm9卡摹拟的手机(我得是nexus s),关上nfcproxy软件,点配置,取销 relay mode 单选框IP 地址填另一个手机的wifi ip端口 填另一个手机的nfcproxy监听端口,默认9999encrypt co妹妹unications 不需要选,本人玩不用加密always keep screen on 随意debug logging 勾上,可以显示出卡号。然撤退退却出配置。

2、relay端的配置

在另外一个手机(我得是t989),关上nfcproxy软件,点配置,勾选 relay mode 单选框IP 地址 不用填端口 填刚刚在另一个手机配置的nfcproxy监听端口,默认9999,两边同样就行encrypt co妹妹unications 不需要选,本人玩不用加密always keep screen on 随意debug logging 勾上,可以显示出卡号。然撤退退却出配置。

三、测试

一、将用于relay端的手机,nfcproxy软件关上贴到银行卡上,这时辰status窗口应该提示TechList:android.nfc.tech.IsoDepandroid.nfc.tech.NfcA,要是没反应请检查nfc是否关上,手机NFC功能是否正常

2、将POS机搞到选择损耗,输入金额后,提示请刷卡的界面

三、将用于proxy端的手机,nfcproxy软件关上,去贴到POS机上执行非接刷卡动作。

正常情形贴上去后nfcproxy的data窗口会提示:Reader TAG:Tech[android.nfc.tech.Iso.PcdA]Connecting to NFCRelayConnected to NFCRelayTransaction Complete!这说明已经已经连上了贴卡那台手机,POS机的要求已经转发到卡上了,并且卡的应对已经转发归来了,交易成了。这时辰候POS应该显示请输入暗码了,输入暗码交易成功。再看replay端的nfcproxy的data窗口,就可以看到交互的数据了在数据上长按可以选择最右面的三个竖点,export to file将截取的数据保存到内部存储的/NfcProxy目录中

注1:要是帖POS的手机没反应,需要检查nfc功能是否正常

注2:status 提示 connection to NFCRelay failed 需要检查两台手机wifi是否联通,设置的ip以及端口是否正常

使用安卓手机的NFC功能截取非接触IC卡交互数据

祝好运。

btw:这个方案15年我就在用,只是工作测试pos需要,偶尔用到感觉很方便,近来又用了一次,下决心收拾整理一下。之前都看大神的文章,本人也为社区奉献一次。软件本身还有很大后劲可以挖,譬如动态修改交互数据什么的。。。。。。你们懂的,不要瞎搅哦,会查水表的。另外也发现有一些终端读卡会采用一些希罕的模式,导致软件报错,这时辰候只能再用proxmark3暴力监听了,但这个mitm的方式比proxmark方便多了,也便宜的多了哈。最后附一张ppt里的图,我简单画了一下,方便人人理解

使用安卓手机的NFC功能截取非接触IC卡交互数据

*

您可能还会对下面的文章感兴趣: