设为首页收藏本站

ZMX - IT技术交流论坛 - 无限Perfect,追求梦想 - itzmx.com

 找回密码
 注册论坛

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

用百度帐号登录

只需两步,快速登录

搜索
查看: 19694|回复: 2

[技术破解]RFID安全之某学校水卡破解,更新不留后患[挂图中]

[复制链接]
 成长值: 258

签到天数: 4711 天

[LV.Master]伴坛终老

发表于 2014/5/30 22:24 | 显示全部楼层 |阅读模式 | Google Chrome 34.0.1847.116| Windows 7
天涯海角搜一下: 百度 谷歌 360 搜狗 有道 雅虎 必应 即刻


如今网络上能找到RFID安全类的信息非常的少,原因我就不说了,大家也明白。大家如果要研究RFID安全可以去RadioWar或者Freebuf多看看相关的文章。

这次案例的主角是某学校可怜的水卡(热水卡),先小小地上镜一下先。



用NFC手机上安装的MCT(Mifare Classic Tool)查看,水卡的确是Mifare Classic 1k类型的。

此次破解用到的工具有:电脑一台,ACR122U一台,带NFC功能的手机一台,水卡一张

在进行破解工作之前,我们要为电脑搭建相应的环境,大家需要在电脑上安装.NET Farmwork 4以及Java,请自行上网下载安装,后面用到的软件依赖这两个运行库。

安装完运行库之后就需要安装ACR122U的驱动了(文章后附软件链接),为了方便后续的开发,我将SDK也一并安装。






安装完驱动和SDK之后,把ACR122U连接电脑,设备就能正常工作了。把我们的水卡放上去,ACR122U的蜂鸣器就会响并且LED的颜色也会改变。




验证漏洞可利用的程序是mfoc,mfoc在Windows上的版本叫mfocgui,但mfocgui对于刚刚接触RFID安全的同学来说有点麻烦,所以这次直接采用M1卡服务程序(其实就是简化版的mfocgui)。




打开之后,程序界面非常简洁,只有一个按钮,就是开始破解。在读卡器列表那我已经见到我的ACR122U了,所以直接按开始破解就可以。




然后接下来就等待程序自己破解密钥。




不用很久,就看到所有扇区都被打勾了,破解成功了。




破解成功后根目录就生成了这张卡的dump文件了,大小是1kb,整张卡就被读取出来了。




但mfoc原本是运行在Linux环境下的,移植到Windows下的mfocgui生成的dump文件是并不能直接使用的,还需要一个修复工具fixdump(下载fixdump),将1kb的dump文件修复成4kb的dump文件才行。




fixdump是命令行操作,并且必须安装了.NET Farmwork 4运行库才可以使用,为了方便命令操作,我们将dump文件拷贝到fixdump的目录里,打开cmd进行修复。命令很简单,直接“fixdump ”就可以,生成的文件会直接覆盖源文件。




修复完成后,用UltraEdit或者WinHex之类的十六进制编辑器打开,就可以看到dump文件的数据了。




看到上图我用方框框着的数据了吗?这就是卡扇区的控制段,其中前6字节和后6字节的FFFFFFFFFFFF就是这个扇区的密码,中间的FF078069就是控制位,还不清楚M1卡的结构的可以去看看这篇介绍M1卡结构文章。

知道密码之后,我将密码导入MCT中,开始读取卡片的数据了。




由于MCT自带数据高亮的功能,我们可以清楚的看到4扇区中有两行值块,我卡中现在的余额是32.31,我们根据值块的计算规矩进行计算,不清楚值块的还请去看看介绍M1卡结构的文章。值块的数值是两次不取反一次取反,并且保存在最低的地址里面的。看到第一个值块,0C9F,因为计算机数据是倒序存入的,所以就是真正的数据就是9F0C,换成十进制就是3231。中间那段的60F3是取反保存的,60F3倒序一次是F360,换成二进制就是1111001101100000, 取反一次就是0000110010011111,换成十进制就是3231。最后一段跟第一段一样,都是不取反保存。末端的11和EE就是地址,可以忽略不计,只要后面记得地址保持一致就可以。到此为止,卡的数据因为并没有采取任何加密导致被破解,现在我将卡的钱修改成999.99试试,999.99元应该是十进制99999,十六进制就是01869F,倒序一次结果就是9F8601 ,其他几位一样原理计算, 或者我们可以用MCT自带的值块计算工具计,最终算出结果如下图。



将数据写入到卡里,现在就是去机器实践的时候了。




破解大完满结束,总耗时5小时。

------------------------分割线--------------------------------------------------------
看似很顺利,但最近偶然发现一些细节问题,细心的话可能也有人留意到,卡中的数据除了两个值块保存余额之外,还存在其他的数据,虽说学校的热水系统不联网,但要是机器自带日志记录,把我卡记录下来那不就完蛋了?所以此次要斩草除根,免得引来无穷后患。




要掌握规矩,肯定要有多组数据对比,找同学借了两张正常未经修改的水卡进行读卡,结果分别如下。






纳闷的发现除了我的卡之外,其他卡的1扇区都是没有数据的。果断把自己卡的1扇区清空了,拿去饮水机测试,使用一切正常,不知道是哪个这么无聊把数据写进去的,继续研究。

可以发现,所有卡的4扇区的0段开头都有0400,并以C5AE结尾,貌似这是一个校验位,把它清零,拿去饮水机测试,发现是Error,看来这个位的确是校验用的,可以保持一致,重点来分析下5扇区那段数据。





似乎发现了点端倪,除了开头的FA5C 0000 05AC FFFF和对照卡不一样之外,其他数据都相同。接着试试除了这8字节的开头保留,其余清零,在饮水机上测试,一切正常,回来再次读卡的时候又重新生成了一样的数据,可以排除影响。

接着将这8字节开头清零,拿去饮水机消费,发现提示Error,看来的确是一个校验,我们必须保证对数据的敏感,可以看到0000和FFFF,两个值恰好是取反了一次,那FA5C和05A3是不是也一样?FA5C转成二进制是1111101001011100,05A3转成二进制是0000010110100011,结果很清楚,两个值是互相取反保存,那我将它修改成0000和FFFF,其余部分清零,拿去饮水机测试,一切正常。

到此为止,水卡的校验也被破解了,为了保险起见,将水卡的无用数据清零,并用0000和FFFF代替取反的值,痕迹就被清理干净了。



破解软件打包下载地址   附件:




下载地址:http://pan.baidu.com/s/1kT3bUXx
http://kuai.xunlei.com/d/puStBwJRBgC.h4lTfdc
http://www.colafile.com/file/1054075

此文转至互联网:http://cl.man.lv/htm_data/7/1405/1102658.html


欢迎光临IT技术交流论坛:http://bbs.itzmx.com/
回复

使用道具 举报

大男子主义 该用户已被删除
发表于 2014/5/30 22:39 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
欢迎光临IT技术交流论坛:http://bbs.itzmx.com/
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2014/6/9 01:27 | 显示全部楼层 | Google Chrome 21.0.1180.89| Windows XP
火前留名
欢迎光临IT技术交流论坛:http://bbs.itzmx.com/
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册论坛 新浪微博账号登陆用百度帐号登录

本版积分规则

手机版|Archiver|Mail me|网站地图|IT技术交流论坛 ( 闽ICP备13013206号-7 )

GMT+8, 2024/11/27 16:34 , Processed in 0.110304 second(s), 22 queries , MemCache On.

Powered by itzmx! X3.4

© 2011- sakura

快速回复 返回顶部 返回列表