玩转无线电 -- 温哥华天车 RFID 票务系统
0x00 前言
如今物联网 RFID系统已经完全融入了我们的生活当中. 从楼宇门禁到 Apple Pay. 可以说其身影是无处不在.很多网友也分享了自己对RFID系统的安全测试心得.不过大多还是基于门禁卡和 Mifare-Classic 而言. 实际上在 Mifare 系列的大家族中还有着许多其他类别. 比如 Mifare-DESFire 和本文的主角 Mifare-Ultralight.
温哥华交通公司Translink 在 2015年开始逐渐淘汰老旧的打印票务系统. 并全面推广RFID为基础的票务系统, 并为其取名为 Compass. 此系统为了方便不同乘客的需要, 使用了Mifare-DESFire 作为月票卡. 同时还以Mifare-Ultralight 作为一次性车票.因 Mifare-Ultralight 成本低廉, 使其成为车票的不二之选. 但也正是为了节省成本, 其安全性近乎于零. 它的天生残疾为攻击者打开了一道方便之门.本文将以此轻轨RFID 票务系统为例, 跟大家一起来场RFID 系统的探索之旅.
0x01 Mifare-Ultralight 简介
Mifare-Ultralight 是 NXP 公司出品的众多Mifare系列中的一款. 其同样工作在 13.56 Mhz. 但跟它的老大哥 Mifare-Classic 不同的是, 它并无使用任何加密, 其数据内容是可以任意访问的. 因为造价低廉很多需要一次性门票的场合都将其作为首选.比如 2006 的世界杯比赛.其数据结构非常简单明了. 总共 64 bytes. 分为16 个区, 每个区为4 bytes. 而 4 - 15 区通常会用于数据存储, 存有时间; 入口和站台名等. 值得一提的是此区可任意读写无需认证哦. ;)
UID区
其 UID 区在默认情况下是不可写的. 占有 9 个 bytes, 但只有 7 个bytes 作为 UID 使用. 比如 “ 04 e2 a8 c6 ba e2 43 80 9b ” 其中只有 04 e2 a8 ba e2 43 80 被识别为UID, 而 c6 和 9b 是作为校验值 Check Bytes 存在的.
OTP 区
前面提到Ultralight 的安全性近乎于零, 是因为它设有这个One time programmable 区. 整个区分为 4 bytes, 默认数值为 00 00 00 00. 通常将其作为为车票的计数器使用. 通过 01 对每个 bits 进行 OR 不可逆运算. 直到 00 全部用完车票作废.不过这个OTP 也是可以通过激活 Lock Byte 来 bypass. 因为 Compass 系统并无使用OTP , 所以无做此测试.
0x02 实战测试 — Single Fare Reset Attack
需要事先声明整个测试过程使用的是预先支付的车票. 并仅是在车站入口处测试了 Reset 攻击, 并无实际逃票行为. 所以不要担心会发生被请喝茶的悲剧. 而且在下也反对滥用此类技术来做坏事... :p
其实整个攻击过程非常简单. 因为Data 区可任意读写无需认证. 所以我们可以事先 dump 出 Compass 车票的原始数据. 等车票过期无法使用后, 用手机 APP 将原始数据写回车票. 从而实现 Reset 攻击, 达到系统绕过目的. :) 整个攻击过程出奇的简单对吗? 而从 Translink 的角度来看, 又有哪些防御方案呢? 其实 NXP 公司早就提供了3DES加密的 MIFARE Ultralight C. 不知道为什么 Translink 在系统设计之初不考虑呢?
0x03 总结
最后要感谢在整个研究过程中提供过帮助的弟兄们. 同时在下认为系统安全加固, 有时也取决于自身对问题的态度. 出了问题不积极修复, 却试图将问题隐藏. 并寄希望于掌握了解方法的人越少越好. 这是十分不明智的处理态度.
在这里强烈鄙视温哥华交通公司 TransLink. 在漏洞曝光后明知系统存在隐患的情况下仍放任不理. 当记者采访时还摆出一副有种你咬我的嘴脸. 那好吧 May the luck be with you…FXXK YOU…Now we all know how to hack you..
0x04 参考文献
- http://www.nxp.com/documents/data_sheet/MF0ICU1.pdf
- https://www.youtube.com/watch?v=Czvn4L1r6f4(Building safe NFC system --30c3)
- http://www.cbc.ca/news/canada/british-columbia/compass-ticket-hack-1.3535955
- http://bc.ctvnews.ca/security-flaw-lets-smartphone-users-hack-transit-gates-1.2852464
- https://www.nccgroup.trust/us/about-us/newsroom-and-events/blog/2012/september/ultrareset-bypassing-nfc-access-control-with-your-smartphone/
玩转无线电 -- 温哥华天车 RFID 票务系统的更多相关文章
- 狗汪汪玩转无线电 -- GPS Hacking
狗汪汪玩转无线电 -- GPS Hacking Kevin2600 · 2015/12/09 10:12 0x00 序 GPS Hacking 在过去几年的安全会议上一直都是很受关注的议题. 但往往因 ...
- 大型票务系统中username和password的安全性问题
讨论请移步至:http://www.zhiliaotech.com/ideajam/idea/detail/307 相关文章: <今天你买到票了吗?--从铁道部12306.cn站点漫谈电子商务站 ...
- 玩转无线电 -- GPS Hacking (上)
0x00 序 GPS Hacking 在过去几年的安全会议上一直都是很受关注的议题. 但往往因为内容太过学术化, 所需设备成本太高. 让许多感兴趣的朋友苦于无法入门. 直到GPS-SDR-SIM 这类 ...
- stage1----航空票务系统需求分析报告
航空票务管理系统需求分析报告 题 目 航空票务管理系统需求分析报告 学 院 信息科学与工程学院 专 业 计算机科学与技术 组 员 ...
- RFID标签
定义: RFID无线射频识别是一种非接触式的自动识别技术,它通过射频信号自动识别目标对象并获取相关数据,识别工作无须人工干预,可工作于各种恶劣环境.RFID技术可识别高速运动物体并可同时识别多个电子标 ...
- 最近几天玩freebsd奋斗成果总结
玩freebsd发现真的很累人..相信如下问题第一次玩freebsd都遇到过: 安装系统默认只有文本模式,需要手工安装gnome,kde等desktop environment. Freebsd安装. ...
- atitit 点播系统 概览 v2 qb1.docx
atitit 点播系统 概览 v2 qb1.docx 1.1. 多界面(可以挂载多个不同的界面主题)1 1.2. 独立的选片模块(跨设备,跨平台)2 1.3. 跨设备平台(android安卓盒子,pc ...
- 1.2G内存试玩RAMOS_XP
1.2G内存试玩RAMOS_XP1.为了防止做系统时出现意外,用Bootice把C盘MBR修改为Grub4dos,这样子系统如果失败,可以进入PE重做. 2.进入PE格式化C盘,格式化的时候勾选启用N ...
- Wii硬盘版玩机心得
若干年前在电玩巴士买了一台硬盘版的Wii,下面是我的玩机心得: 查看Wii的系统版本信息 链接:http://www.cnblogs.com/duxiuxing/p/4251693.html Wii硬 ...
随机推荐
- word-break:break-all和word-wrap:break-word的区别
了解word-break属性 /* 关键字值 */ word-break: normal; word-break: break-all; word-break: keep-all; /* 全局值 */ ...
- Shell基础:常用技巧&重定向&管道操作
Shell脚本介绍和常用工具 Shell脚本 Shell脚本:实际就是windows里的批处理脚本,多条可一次执行的Shell命令集合.Linux上的脚本可以用很多种语言实现,bash shell是比 ...
- mint上部署lamp环境
不得不说现在在linux mint上部署lamp很方便,比windows服务器上的asp.net的部署升级都简单. 1 安装MySql sudo apt-get install mysql-serve ...
- from __future__ import absolute_import
from __future__ import absolute_import 这样以后:局部的包将不能覆盖全局的包, 本地的包必须使用相对引用了. 例: from celery import Cele ...
- 简述 Ruby 与 DSL 在 iOS 开发中的运用
阅读本文不需要预先掌握 Ruby 与 DSL 相关的知识 何为 DSL DSL(Domain Specific Language) 翻译成中文就是:"领域特定语言".首先,从定义就 ...
- 20145236 冯佳 《Java程序设计》第2周学习总结
20145236 <Java程序设计>第2周学习总结 教材学习内容总结 一.Java的基本类型. 在Java中的基本类型主要可区分为整数.字节.浮点数字符与布尔. •整数: 类型 长度 范 ...
- 个人介绍和GitHub
基本信息: 姓名:陈晖 学号:1413042068 班级:网工143 兴趣爱好:看小说,打游戏,听古风音乐,打羽毛球,骑行等 个人编程能力不高,写的代码都是作业…… GitHub注册流程: 对于Git ...
- 实验三 敏捷开发与XP实践(改)
---恢复内容开始--- 一.敏捷开发与XP 二.编码标准 1.编码标准中的版式就是一个很好的例子,版式虽然不会影响程序的功能,但会影响可读性.程序的版式追求清晰.美观,是程序风格的重要因素.单击Ec ...
- 《Play for Java》学习笔记(三)template+Message
说明: 这是本书的第八章内容,由于项目需要,提到前面来看啦~~~O(∩_∩)O 一.模板template的定义 Play中的模板是html代码和Scala代码的混合而成的,其中Scala代码以@开头, ...
- vs2010 快捷键大全 (转)
VS2010版快捷键 Ctrl+E,D ----格式化全部代码 Ctrl+E,F ----格式化选中的代码 CTRL + SHIFT + B生成解决方案 CTRL + F7 生成编译 CTRL + O ...