车联网安全系列——特斯拉 NFC 中继攻击(CVE-2020-15912)

  • A+
所属分类:逆向工程

车联网安全系列——特斯拉 NFC 中继攻击(CVE-2020-15912)

 



0X00前言




大家好, 我是来自银基Tiger-Team的KEVIN2600. 今天想跟大家分享下Tiger-Team在第28届DEFCON黑客大会上发表的Tesla NFC中继攻击的研究全过程. 希望抛砖引玉为中国车联网安全做出贡献. 同时借此机会向中国CTF战队A0E表示祝贺, 牛逼的后浪们首次获得了DEFCON CTF的总冠军.

车联网安全系列——特斯拉 NFC 中继攻击(CVE-2020-15912)

Tesla 电动汽车已迅速成为新能源汽车的领导者. 公司创始人Elon Musk 自豪地称其为“A sophisticated computer on wheels”. 作为业界的翘楚, 自然会吸引很多黑客和安全研究人员的兴趣. 在过去一段时间里, 很多安全研究人员对特斯拉进行了有针对性的研究. 而成果也可谓收获颇丰. 其中特斯拉自己的漏洞英雄榜上, 可以看见很多中国研究团队的身影.
车联网安全系列——特斯拉 NFC 中继攻击(CVE-2020-15912)
全球漏洞库中也有众多关于特斯拉的漏洞CVE编号. 而其中最值得智能钥匙安全研究人员深入的是编号为CVE-2018-16806的漏洞. 比利时一名安全研究人员通过逆向分析特斯拉Model S钥匙Pektorn PKE系统, 并找到DST40 Cipher的设计缺陷. 成功破解并完美复制了特斯拉钥匙
车联网安全系列——特斯拉 NFC 中继攻击(CVE-2020-15912)
但是对Tesla新能源汽车感兴趣的, 可不仅仅是安全研究人员. 同时还有专业的盗贼们. 不过他们可没有那功夫去深入研究Tesla的安全缺陷. 对他们来说自然是简单粗暴有效便好. 而中继攻击便是其中最简单的方式之一. 相信大家可以从新闻中得知, 国内外经常有盗贼采用此类方式盗取车辆或车内的贵重物品.
车联网安全系列——特斯拉 NFC 中继攻击(CVE-2020-15912)



0X01NFC 101 科普




所以这让我们很好奇, 中继攻击是否真的就那么容易实现. 于是带着这个疑问开始了这段有趣的研究. 不过在进入主题之前, 我们还是简单了解些有关NFC的基础知识. NFC也被称为近场通信, 其工作模式以被动式为主, 工作频率为13.56Mhz. 其应用场景非常广泛, 我们常见的地铁一卡通; 门禁卡甚至是护照都有其身影.
车联网安全系列——特斯拉 NFC 中继攻击(CVE-2020-15912)
当然通常我们提到NFC 攻击, 大家很容易会想到Mifare Classic 的破解. 这类文章在网上随处可见. 不过NFC的类型可不仅仅是Classic. 比如某公司的门禁卡采用的是iClass. 而某地铁的一次性车票则是Ultralight. 每种类型都曾经暴露过各自的问题, 感兴趣的朋友可以自行研究一番.
车联网安全系列——特斯拉 NFC 中继攻击(CVE-2020-15912)
 



0X02TESLA钥匙架构




随着科技的进步, 车联网的发展. 人们操控开启车门的方式也发生了变化. 最与众不同的一点是, 众多智能汽车已经开始抛弃传统的物理钥匙. 转而开始使用蓝牙或NFC. 其中Tesla Model 3便是首当其冲. 既然江湖大哥这么做了, 其他车厂自当紧跟其后. 国产品牌中的比亚迪; 小鹏以及蔚来都推出了使用NFC的车型. 有趣的IPhone在最新版的IOS中也推出了CarKey功能
车联网安全系列——特斯拉 NFC 中继攻击(CVE-2020-15912)
那么我们来一起看看江湖大哥Tesla是如何设计智能钥匙系统的呢. 在最开始Tesla的Model 3是真的完全抛弃了物理钥匙, 仅使用了手机蓝牙, NFC以及4G远控. 但或许是因为有些用户十分怀旧, Tesla 最后还是推出了物理钥匙. 不过这把物理钥匙并没使用传统的RF技术. 仍是基于BLE蓝牙和NFC.
车联网安全系列——特斯拉 NFC 中继攻击(CVE-2020-15912)
当我们把物理钥匙拆开, 可以看到一串标为FCC-ID的字符串. 例如 2AEIM-1133148, 通过到FCC官方查找发现关于TESLA物理钥匙, 甚至车端的内部信息. 这些信息对进一步逆向分析起到非常重要的作用.
车联网安全系列——特斯拉 NFC 中继攻击(CVE-2020-15912)

车联网安全系列——特斯拉 NFC 中继攻击(CVE-2020-15912)


接下来可以用研究RFID的瑞士军刀PM3来读取Tesla车卡或物理钥匙. 我们会发现Tesla车卡使用的是7字节UID 的Mifare DESFire EV1 (Java Card). 同时支ISO14443 Type-A and ISO 7816-4. 需要指出的是这2个标准在APDU应用层是一样的. 而在随后的分析当中, 我们还发现Tesla采用的认证方式为椭圆曲线ECDH secp256r1.
车联网安全系列——特斯拉 NFC 中继攻击(CVE-2020-15912)



0X03分析,挑战与突破




在对Tesla 的钥匙系统有了一定了解之后. 我们就开始了真正的逆向之旅. 正所谓工欲善其事必先利其器, 我们调研后认为NFCGate与Proxmark3 符合我们的需求. 尤其是NFCGate这款APP是专门用来NFC中间人攻击与逆向的.
车联网安全系列——特斯拉 NFC 中继攻击(CVE-2020-15912)
我们只需分别在2台手机上各自安好NFCGate, 同时设置一个无线设备作运行网关Server便可. 如下图我们成功通过中继攻击, 用同事的信用卡给自己买了一杯咖啡.
车联网安全系列——特斯拉 NFC 中继攻击(CVE-2020-15912)
不过同样的配置在第一次Tesla钥匙系统测试中却失败了. 但这是正常的, 继续努力尝试吧. 这里我们请出RFID瑞士军刀PROXMARK3, 对Tesla钥匙端与NFC 卡之间的通讯进行抓包分析. 例如其中一个AID被标识为TeslaLogic.
车联网安全系列——特斯拉 NFC 中继攻击(CVE-2020-15912)
阅读大量文档和数据分析后, 我们搞清楚了Tesla NFC钥匙的整个交互流程. 首先Tesla车端会对NFC卡上的特定AID 发出请求, 比如标号为F4和74的TeslaLogic.不过F4貌似是针对手机端的. 所以我们的NFC卡会返回一个6D00, 相当与告诉车端这个AID 不存在. 随后车端会在对74 的NFC卡AID发出请求.
车联网安全系列——特斯拉 NFC 中继攻击(CVE-2020-15912)

车联网安全系列——特斯拉 NFC 中继攻击(CVE-2020-15912)


在请求得到响应后, 车端便开始了挑战环节. 如果我们的NFC可以迅速返回正确的应答, 便完成了认证过程. 虽说看似整个过程很简单, 但因为信用卡POS机对应答时间的容忍度较高. 而Tesla对反应时间的要求却非常严格, 所以导致我们第一次的Tesla中继攻击尝试失败了. 那么我们是否有办法绕过这个时间限制呢?

车联网安全系列——特斯拉 NFC 中继攻击(CVE-2020-15912)


这里我们来看一个移动支付卡的案例, 其中最关键的环节就是将特定的字节偷梁换柱. 逼迫其进入磁条卡模式, 从而绕过了PIN的检测机制. 那么我们是否也可以对Tesla的交互数据做同样的操作呢?

车联网安全系列——特斯拉 NFC 中继攻击(CVE-2020-15912)


在经过大量尝试后, 我们终于发现只要在车端发起AID 请求初始阶段.将不存在的F4 drop 掉就可以为后面的中继攻击争取到足够的时间.
车联网安全系列——特斯拉 NFC 中继攻击(CVE-2020-15912)
具体的攻击效果与分享, 欢迎大家移步到DEFCON 28的官方YOUTUBE频道围观.
车联网安全系列——特斯拉 NFC 中继攻击(CVE-2020-15912)



0X04 TESLA一封回信




本着互责任披露的原则, 银基老虎队发现问题后立刻与Tesla安全部门取得了联系, 并附上了详细的漏洞细节. Tesla安全部门反应很快周末期间也立刻回信了, 不过很可惜他们认为NFC中继攻击是个系统已知且无解漏洞. 但是他们提供了一个变相的解决方案, 据Tesla建议对中继攻击感到担忧的用户, 可以启用PIN2Drive这个功能. 这是一个类似手机PIN密码的功能. 也就是说如果没有正确的PIN密码, 盗贼无法启动车辆.

车联网安全系列——特斯拉 NFC 中继攻击(CVE-2020-15912)


有趣的是我们在Tesla的官网找到了一段关于PIN2Drive的描述. 这个PIN2Drive仅是一个4位纯数字密码. 且我们还发现其并没有密码输入防爆破功能. 所以完全可能被爆破.

车联网安全系列——特斯拉 NFC 中继攻击(CVE-2020-15912)

因此分析了解PIN2Drive后, 我们向漏洞管理平台CVE申请了编号CVE-2020-15912并得出了以下结论供大家参考. 首先必须要强调的是PIN2Drive并不能防御中继攻击, 它只能防御车子不被启动. 所以被中继攻击后, 车门被打开的风险仍旧存在. 车内存放的贵重物品仍可能丢失, 甚至还有被放入GPS跟踪器等设备的隐患. 最后做个简单的总结100 % 的绝对安全并不存在, 新的趋势将会带来新的攻击点. 比如针对中继攻击有厂商已经采用了新的解决方案UWB. 但其是否真的如其所说的那样安全? 这就有待时间来检验了.
 



0X05参考文献



0x05 参考文献
https://github.com/nfcgate
https://www.youtube.com/watch?v=nn-_3AbtEkI
https://www.carhackingvillage.com/speaker-bios#htm3nrr
https://tches.iacr.org/index.php/TCHES/article/view/8289
https://gist.github.com/darconeous/tesla-key-card-protocol
https://salmg.net/2018/12/01/intro-to-nfc-payment-relay-attacks
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-15912
车联网安全系列——特斯拉 NFC 中继攻击(CVE-2020-15912)


- End -

BlackHat2020议题之Web缓存投毒

php源码分析 require_once 绕过不能重复包含文件的限制

一次对某厂商MacOS客户端软件本地提权漏洞的挖掘与利用

精彩推荐

破一桩疑案——硬件错误

车联网安全系列——特斯拉 NFC 中继攻击(CVE-2020-15912)

车联网安全系列——特斯拉 NFC 中继攻击(CVE-2020-15912)


戳“阅读原文”查看更多内容

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: