摘要: "如何成为一个合格的硬件白帽子? 答案: 一个有聪明大脑的你 要有归纳类比和善于用GOOGLE的能力(百度?放弃吧) 善于翻阅和查询相关开发文档和强大的跑路能力。"
WARNING!!! 本文具有相当的攻击性以及复现性,仅供技术参考与教学用途研究,切勿用于非法用途,参考此文进行犯罪的相关人员与本人无关。
——免责声明。参考刑法修正案:构成非法提供控制计算机信息系统的程序、工具罪,两罪量刑都是三年以下有期徒刑或者拘役,并处或者单处罚金,情节严重的,处三年以上七年以下有期徒刑,并处罚金。非法获取计算机信息系统数据罪
这次我们要用到的工具:ProxMark3
镇楼宝图在此:
No.2开始搞事。
为了打发漫长而炎热的假期,回到了祖父家避暑,结果发现原本破败荒芜的家属大院内多了一台纯净水供应设备,而祖父也刚好办了一张卡,华山这几天温度热的要死,我竟然神奇的把黑色连到从北京坑到了华山美其名曰避暑然而,连续五天温度过了42度,无形装逼最为致命。现在家里面无聊到爆,于是总是再找点事情做,048 049玩烂了。于是拿出了随身携带的战术包中的Proxmark3 hackrf 等工具 玩烂了RTL8187 HACKRF出问题 于是在一个炎热的午后去打水,发现了那张水卡。踏破铁鞋无觅处得来全不费工夫,不要怂,就是干。征得物业同意之后开始测试这个水机的认证系统。
过程· 首先拿出手电筒对着M1卡片照射看其中线圈结构。结果发现是正方形线圈,按照经验是13.56MHZ的高频卡,于是话不多说直接上工具,是经proxmark3的检测,结果印证了是Mifare Classic 1k的卡
上手过程按照国际惯例先扫了扫默认密码区,结果发现密码区防护做的相当的好,每个M1卡都有一个唯一的序列号,我们称为“UID”,是32位的,也就是4个字节。
注:其中每个data 数据区为一个“块”。这样我们可以计算一下:16b* 4(块)*16(扇区)=1024B 就是1K。
第0扇区的块0(即绝对地址0块),它用于存放厂商代码,已经固化锁死,不可更改。原来在实验室见过一个厂商代码没有锁死的M1 被我玩了好久。。。。。
在全扇区加密时,通常用前三个“块”(0,1,2号块)存放数据,用最后一个”块“(3号块)存放密码。
其中密码分为A密码和B密码:前6个字节存放A密码,中间4字节为控制字段,后6字节存放B密码。
· M1卡是典型的高频卡,工作频率为13.56MHz,一般调频(FM)收音机接收的广播频率在87MHz到108MHz之间。而我们常说的路由器工作在2.4GHZ中。这个时候注意一个小科普,很多人分不清5G路由和5GLTE。导致很多人认为5G路由就是5G通讯技术的路由,这里进行一个更正 .一般路由是工作在2.4GHZ 频段下面的通讯信号,而所谓的5G路由是工作频率在5.8GHZ下的路由器。而5GLTE指的是第五代通讯技术,而逆向工程最好的方法就是了解他的基础结构,我们来看一下M1卡的工作通讯机制
言归正传,来看看M1卡的通讯通信速率:106KBPS,也就是说可以在10毫秒的时间内完成读写内容。
工作半径:100mm。大约在100mm以内的距离,可以使用读卡器对m1卡进行操作(一般写距离小于读距离)。
在使用proxmark3对M1卡进行破解时 ,我先用了默认密码扫描,结果发现卡的安全是很好的,没有默认密码
于是使用了有卡嗅探,网上很多人都在用proxmark3去暴力破解或者RPNG漏洞利用,对于proxmark3来说真的是大材小用。Proxmark3可以通过抓取卡与读卡器之间的通讯来解开相应的密码
准备1个充电宝 和1跟 双头usb供电线数据线淘宝一大把
和原来一样正常连接电脑。打开窗口(下图)
一切正常之后 你输入 hf 14a snoop这时主板会亮一个灯
再拨了主机上的USB口
到电梯那里去刷卡.(把 PM3天线 放 卡片 和 卡机 之间)
让天线 夹到卡与读卡器之间
不同角度的刷卡 多刷几次
刷到主板上的灯全灭了
拿 回来直接连接上电脑
打开软件
再输入 hf list 14a
查看监听数据
如果监听到完整数据后
通过软件直接算出来就可以了
这就是完整的数据
这是激卡 04 00
9320 是要卡返回卡号
93 70 是选择卡号
这三个就是 密码了 (当然是加密的) 通过软件可以算出密码
破解中间我们可以看下M1卡的通讯工作流程图以更加好的了解工作原理:
破解M1卡的破解算法已经烂大街了,我们可以利用M1卡已知的PRNG 漏洞来爆破出其他几个扇区的密码最后读出数据。保存数据后后我又过去进行了一次消费,用来进行数据对比(卡中金额有变动
· 的话数据也有变动。)对比数据:然后发现数据存储在14块、15块。16块有数据但是没有变动,初步猜测是用户识别信息。其他区块都是空的。也是够了。
上手逆向在上手逆向之前我们要认识一下CRC冗余校验和奇偶校验以及异或校验,累加校验等
举个例子:循环冗余码CRC(Cyclic Redundancy Code)又称多项式码.
任何一个由二进制数位串组成的代码,都可以惟一地与一个只含有0和1两个系数的多项式建立一一对应的关系.例如,代码1010111对应的多项式为X6+X4+X2+X+1,多项式X5+X3+X2+X+1对应的代码为10111.
CRC码在发送端编码和接收端检验时,都可以利用事先约定的生成多项式G(X)来得到.设G(X)中最高位X的次方为Xr,信息位为K(X);则CRC码=Xr乘以K(X)再除以G(X).
比如:信息位K(X)=X6+X4+X3+1既1011001,生成多项式G(X)=11001既X4+X3+1(可得Xr=X4)
则CRC码=X4* (X6+X4+X3+1)/(X4+X3+1)=X10+X8+X7+X4/(X4+X3+1)=10110010000/11001
得到的余数就是CRC码
注:以上除法用的是模2除法,是一种不考虑减法借位的运算.既0-0=0,0-1=1,1-0=1,1-1=0
每个块的前八组HEX和后八组HEX中,数据基本相同 ,而变动数据是红框部位,后面的因为相同忽略不计。然后经过详细的观察和运算发现:
当方框中划出的数据用FF做异或运算后,得出的数值刚好与箭头所指数据相同
A4异或FF 等于5B
答案很明显了 使用的是异或校验运算。我刷掉了1.5元而校验值是箭头指向的数据减去金额,而M1卡数据写入机制是倒序的。也就是说金额数据是14 A4/14 08 我们用校验位减去相应金额再转化为十六进制即我们想要的数据:
e31400001cebff ffe314000014eb14eb
爆破原理深源揭秘不法分子爆破M1卡的方式。
使用技术手段完成M1卡破解的方式有4种:
1.暴力破解
即便是暴力破解,也需要先得到确切的明文和对应的码流。这大约要进行1536次认证过程,用时在一秒钟之内。不过还要进行离线暴力破解,估计在36分钟可完成。但是需要专用的硬件设备。
2.以读卡器的挑战值做变量
这里说的读卡器实际上指的是用来模拟读卡器的攻击工具,下个攻击亦如此。这种攻击又可称选择密文攻击,想法用工具控制被攻击的卡每次在认证时产生同一挑战值,而读卡端则回应不同值。这种攻击需要大约28500次的认证过程,用时约15分钟,然后计算密钥,用时约一分钟。
3.卡的挑战值做变量
第三种攻击与攻击2类似,但需要使自己的工具的挑战值为常数,而令卡的挑战值数不断变化。需要预制一个384 GB的状态表。要进行4096次认证。大约用时2分钟。
4.嵌套认证攻击
第四种攻击假设攻击者已知了至少一个扇区的密钥,他可以根据漏洞得到其它密钥的32位,然后对其它16位进行穷举攻击。只需3次认证(时间可以忽略不计)。离线攻击计算时间约为一秒。
M1卡的存储器组织 M1卡存储详细解说。1024 x 8 bit EEPROM存储器分为16区,每区4块,每块16字节。
在擦处后的状态下,EEPROM的单元读为逻辑“0”,写后的状态下读为“1”。
3.6.1 厂商代码块
这是第1区的第1块(块0)。它含有集成电路制造商数据。出于安全和系统需求,此块是制造商在生产过程中编程后写保护的。