构成物联网的“物”的庞大数量和多样性意味着它包含大量用户数据。物联网安全漏洞的后果可能极具破坏性。
01
NFC 中继攻击的原理
近场通信(NFC,Near Field Communication)是一种短距离的高频无线通信技术,允许电子设备之间进行非接触式点对点数据传输。
设备使用NFC建立连接只需0.1秒,更加方便,成本更低,能耗更低。但是NFC的使用距离只有10CM,传输速率也比蓝牙低许多。
中继攻击原理
为了演示 NFC 中继攻击原理,我们搭建如下环境:将2个NFC设备与服务端保持连接通信。设备1作为读卡器靠近NFC卡,设备2作为仿真NFC卡靠近读卡终端。
02
利用 NFC 中继攻击 Model Y
首先,我们对特斯拉 Model Y 的NFC卡和车辆之间使用的NFC协议进行了逆向分析,创建了自定义固件修改,允许 Proxmark RDV4.0 设备使用Proxmark 的 BlueShark 模块通过蓝牙/Wi-Fi中继NFC通信。
Proxmark 是一款功能强大的通用 RFID 工具,大小相当于一副卡片,旨在窥探、监听和模拟从低频(125kHz)到高频 (13.56MHz) 信号的所有内容。
为了掌握特斯拉 Model Y 和 NFC 卡之间发生了什么,我们使用 Proxmark RDV4.0 设备来嗅探这些通信。
使用NFC卡打开车辆时发生的NFC通信抓包数据如下图:蓝色框的数据包是低级NFC通信,红色框的数据包是应用层(APDU)。
其中,应用层数据(APDU)是我们需要关注的特斯拉专有协议数据。
① 车辆正在请求用于智能手机中使用的虚拟车钥匙的标识符。读写器正在向特斯拉卡发送应用层数据(APDU) ,来选择应用进程类型,即应用进程标识符(AID)的常用过程。由于我们使用的是物理特斯拉 NFC 卡进行嗅探,因此该卡将响应6d00(无效)。如果我们使用智能手机作为钥匙进行嗅探,它将响应9000(有效)。
② 车辆正在询问特斯拉 NFC 卡所使用的虚拟车钥的识别码。由于我们正在使用实体特斯拉 NFC 卡进行嗅探,因此该卡将以9000回应。NFC 卡将选择该应用程序并等待读卡器发出的请求。当车辆收到卡的9000回应时,会认为自己正在与特斯拉 NFC 卡通话。车辆将加密请求发送到特斯拉NFC 卡,并等待对该请求的有效回应。
③ 特斯拉NFC 卡收到的车辆将加密请求数据。特斯拉 NFC 卡会向等待响应的车辆请求回应,同时计算从车辆收到的请求的加密响应。
④ 特斯拉NFC卡和车辆之间来回切换的内容,通常称为等待时间扩展( WTX )。
⑤ 特斯拉NFC卡发送计算得出的加密响应数据。如果此响应有效,汽车将打开车门并允许用户驾驶汽车。
在整体交互过程中有如下问题值得我们思考:
车辆和卡之间的中继通信,还是会花费太多时间?
我们是否在协议中缺少其他可以防止中继攻击的东西?
攻击者必须离受害者的卡有多近?
带着以上问题我们继续分析:
在此NFC中继攻击过程中需要两个攻击者:其中一名攻击者将在车辆的 NFC 读卡器上使用 Proxmark 设备,而另一名攻击者使用靠近受害者的特斯拉的 NFC 的设备(智能手机),两个设备之间通过网络同步数据。
Proxmark 设备工作流程如下:
从车辆收到 AID 后, Proxmark 将以正确的值进行响应。
Proxmark 接收请求并将其中继到第二个攻击者的手机,该手机靠近受害者的 特斯拉 NFC 卡。
第二个攻击者的智能手机将通过 NFC 与受害者的卡进行通信,选择 AID ,并发送从 Proxmark 收到的请求。
特斯拉 NFC 卡将响应加密并进行响应,将从第二个攻击者的智能手机中继到 Proxmark 。
Proxmark 将接收到的加密响应发送给车辆的读卡器
Proxmark 项目提供了用于与蓝牙芯片和 FPGA 通信的 API ,像 hf _ reblay 这样的第三方独立模块可以帮助更快地了解这种通信的工作原理。
首先,程序设置 Proxmark 来模拟14443卡,并执行初始化和 FPGA 设置。
接下来,程序接收从车辆读取器发送的内容,使用Getlso14443aCommandFromReader() 读取数据后,使用 usarT _ rxdata _ available () 检查用于蓝牙芯片的 UART 端口中是否有可用数据。
如果有数据,则它会向读卡器发送最后一个 WTX 并读取来自蓝牙接口的数据。通过蓝牙接收的数据将始终是来自受害者卡的加密响应。
然后,程序检查第一个字节并处理在通信的早期阶段接收的底层 NFC 消息的类型。
如果它只是接收应用进程层消息( APDU ),程序也会处理这些消息:
当程序收到来自车辆阅读器的请求,就会复制收到的缓冲区的内容通过网络将该数据发送到第二个攻击者的智能手机。
当程序通过网络收到智能手机返回的加密响应,就会通过 NFC 将其发送到车辆的读卡器。
当攻击者的智能手机上的程序收到来自 Proxmark 的请求时,会通过 NFC 将该请求中继到受害者的特斯拉 NFC卡,然后读取加密响应并将其送回 Proxmark 设备。
03
NFC 中继攻击的总结和反思
回到我们最初提出的几个问题:
车辆和卡之间的中继通信,还是会花费太多时间?
时间限制似乎非常宽松,攻击者可以从几米之外通过蓝牙进行攻击,也可以通过 Wi - Fi 在更远的距离内进行攻击。我们认为这也可能通过互联网进行攻击。
我们是否在协议中缺少其他可以防止中继攻击的东西?
当车辆未启用" PIN to Drive "功能时,只需要一个请求/响应即可打开并驾驶汽车。
攻击者必须离受害者的卡有多近?
攻击者之一必须非常接近受害者的卡片。这个距离可能会根据多个因素而改变,但在使用智能手机时,4厘米或更短的距离可能是相当精确的。使用更专业、高功率的设备可能会使这个距离变得更大,甚至超过60厘米。
内容来源:https://gugesay.com/archives/2098
往期推荐