介绍

NFC支付中继攻击是一种利用NFC智能卡或移动支付系统与PoS或终端之间的桥梁实时提取数据的攻击。在这个过程中提取信息和在避免延迟的同时建立连接是最重要的部分。

我已经发布了关于NFC技术的一些介绍:

  1. [Intro to Analyze NFC Payment Methods & Contactless Cards](https://salmg.net/2017/09/12/intro-to-analyze-nfc-contactless-cards/)

  2. [NFC – Contactless Cards: Brute Forcing Processing Options](https://salmg.net/2017/09/29/nfc-contactless-cards-brute-forcing-processing-options/)

120-1024x675.png

之前Eddie Lee在[DEF CON 20上展示了如何使用两款Android手机进行攻击](https://www.defcon.org/images/defcon-20/dc-20-presentations/Lee/DEFCON-20-Lee-NFC-Hacking.pdf)。从上面的图片中看到的,这个放法是在两个Android手机之间生成一个桥梁。

电话1(左图)靠近NFC卡,电话2(右图)靠近终端。当电话2接近终端时,它模拟NFC卡,当终端开始初始化通信过程时。首先终端向电话2发送命令询问它是什么类型的卡时,电话2通过WiFi将数据发送给电话1,而电话1“询问”智能卡同样的问题。智能卡做出应答,电话1接收这些信息并将其发送回电话2,然后电话2将电话1的信息发送给终端。基本上,电话1充当阅读器,电话2充当智能卡。

在DEF CON 25中,Haoqi Shan和Jian Yuan介绍了一种NFC中使用SDR(Software define - radio)的技术,实现建立了一个专用的连接,比在同一个WiFi网络中使用手机更快捷、更好的控制NFC信息的通信。


中继

中继攻击与重放攻击的主要区别在于中继攻击必须在攻击者提取数据的同时进行;另一方面,重放攻击发生在攻击者从事件中提取信息并将其保存以便稍后使用第三方设备重放。考虑到这一点,我们知道我们至少需要两个设备来处理这个项目:

```
Arduinos
Raspberry Pis
Laptops
PCs
etc…
```

甚至我们可以把它们组合成一个继电器。在设备沟通方面,我们有不同的选择:

```
SDR
USB
WiFi
Bluetooth
etc..
```

为了理解这个概念,我将使用两个Acr122u USB设备在同一台计算机上通过USB连接的“本地”中继。其中一个将充当PoS,另一个将模拟智能卡。所有的连接将由Python脚本处理,我的笔记本电脑将成为它们之间的桥梁。

2.png



PoC

为了解如何设计一个简单的NFC嗅探器。并尝试阅读、查看和研究NFC标记。我可以跟踪这个通信过程,而不需要进行真正的测试。但是,请注意,在此过程中ATC将增加

为了完成这一任务,我使用的软件是RFIDIot库。具体来说,使用pn532mitm.py脚本

```
    Use device no. 2 as the READER and device no. 3 as the EMULATOR:
    python pn532mitm.py -r 2 3
    Use device no. 2 as the EMULATOR and remote system on 192.168.1.3 port 5000 as the READER:
    python pn532mitm.py -r 2 reader:192.168.1.3:5000
```

在视频中,我运行命令:

`python pn532mitm.py -r 0 1`


视频地址:https://youtu.be/ghl1yybbLAk

我们可以使用这些代码来实时更改数据,此外,我们还可以使用https://www.emvlab.org/tlvutils/
解码器中APDU命令,以便了解更多标记的含义。

原文链接:https://salmg.net/2018/12/01/intro-to-nfc-payment-relay-attacks/

源链接

Hacking more

...