网盾网络安全培训学校育,只培训技术精英
全国免费咨询电话: 15827351614
如何使用NFCGate对Android进行NFC安全研究

NFCGate

NFCGate是一款针对Android端应用程序的安全审计工具,该工具旨在帮助广大研究人员捕捉、分析和修改Android平台下的NFC流量。本质上来说,NFCGate是一款安全研究工具,可以帮助我们对协议进行逆向工程分析,或对协议进行安全性评估与审计。

需要注意的是,该工具的开发仅供安全研究目的使用,请不要将其用于恶意目的。

功能介绍

设备内捕捉:捕获设备上运行的其他应用程序发送和接收的NFC流量。

中继:使用服务器在两个设备之间中继NFC通信。一个设备作为读取NFC标签的“读卡器”运行,另一个设备使用主机卡仿真(HCE)来模拟NFC标签。

重放:以“读卡器”或“标记”模式重放先前捕捉到的NFC流量。

克隆:克隆初始标签信息(如ID)。

pcapng导出捕捉到的NFC流量,Wireshark可读。

特定模块依赖

NFC支持;

Android 4.4+(API Level 19+);

EdXposed或Xposed,设备内捕捉、中继标签模式、重放标签模式和克隆模式;

ARMv8-A和ARMv7:中继标签模式、重放标签模式和克隆模式;

HCE:中继标签模式、重放标签模式和克隆模式;

工具下载

广大研究人员可以使用下列命令将该项目源码克隆至本地:

git clone https://github.com/nfcgate/nfcgate.git

工具使用

代码构建

初始化子模块:

git submodule update --init

接下来,使用Android Studio或Gradle完成代码构建。

操作模式

针对每一种操作模式,我们在项目内的doc/mode/目录下都提供了详细的操作指引:

设备内捕捉

中继

重放

克隆

设备内捕捉模式

在导航条中切换至“Capture Mode”(捕捉模式);

按下“Begin Capture”按钮开始捕捉并记录NFC流量;

切换至目标第三方应用程序;

使用第三方应用程序的NFC功能;

切换回NFCGate;

按下“Stop Capture”按钮停止捕捉NFC流量;

捕捉到的NFC流量可在Logging中查看到,在这里我们可以将其以pcapng文件格式导出。

中继模式

在导航条中进入“Settings”设置界面;

指定主机名、端口和会话;

确保服务器应用程序处于运行中,并且可通过网络访问;

在导航条中切换至“Relay Mode”(中继模式);

点击“Reader”或“Tag”,其中一台设备为“Reader模式”,另一台则为“Tag模式”;

连接建立成功后,应用程序将显示绿色状态指示;

记录下的NFC流量可在Logging中查看到,可供后续分析使用。

重放模式

在导航条中切换至“Replay Mode”(重放模式);

选择需要重放的会话;

点击“Reader”或“Tag”来重放对应的会话流量;

新的NFC流量可在Logging中查看到,可供后续分析使用。

克隆模式

在导航条中切换至“Clone Mode”(克隆模式);

扫描一个标签;

手机将会克隆标签信息;

在被另一个Reader读取时,手机将会以克隆的标签信息进行响应;

标签信息也可以保存并可供后续分析使用。

Pcapng导出

捕获的流量能够以pcapng文件格式导出或从中导入,比如说我们也可以使用Wireshark来对捕捉到的NFC流量进行进一步分析。

参考:

 

pcapng

This document does not describe the pcapng file format, but its usage in NFCGate. For information about pcapng see the official format documentation.

 

NFCGate uses two interface description blocks to dump NFC traffic:

  1. ISO 14443 data encoded as linktype ISO14443 (interface 0)

  2. Initial card data (NCI configuration stream) encoded as DLT_USER_0 (interface 1)

Wireshark contains a dissector for ISO 14443 data, allowing to view and examine NFCGate dumps. Newer versions of Wireshark (v2.9.0+) are also able to dissect ISO 7816 as a subdissector of ISO 14443. At this time, no dissector for NCI configuration streams exists.

使用的代码库

xHook

Xposed Bridge

LibNFC-NCI

Protobuf

Android About Page·Android Device Names

Android Support library - preference v7 bugfix

Android Room

Android Lifecycle