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文件格式导出或从中导入,比如说我们也可以使用Wireshark来对捕捉到的NFC流量进行进一步分析。【参考文档】
xHook Xposed Bridge LibNFC-NCI Protobuf Android About Page·Android Device Names Android Support library - preference v7 bugfix Android Room Android Lifecycle
NFCGate:【GitHub传送门】
https://github.com/nfcgate/nfcgate/blob/v2/doc/mode/OnDevice.md https://github.com/nfcgate/nfcgate/blob/v2/doc/mode/Relay.md https://github.com/nfcgate/nfcgate/blob/v2/doc/mode/Replay.md https://github.com/nfcgate/nfcgate/blob/v2/doc/mode/Clone.md https://github.com/nfcgate/nfcgate/blob/v2/doc/pcapng.md