ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:882.68KB ,
资源ID:13999989      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/13999989.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(RFID之M1卡数据分析要点Word文件下载.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

RFID之M1卡数据分析要点Word文件下载.docx

1、0x03数据分析阅读RFID安全之某学校水卡破解可以发现该学校的水卡中数据存储比较简单,按照作者的分析,4号扇区的1、2号数据段(编号从0开始)存储了水卡余额,将已知的余额32.31,换算为分为3231,再转为10进制为C9F,即00000C9F,而0C9F取反为FFFFF360,这时比较下4号扇区的值,很容易发现规律:前四个字节不取反倒序(9F0C0000)存储余额,接下来四个字节取反倒序(60F3FFFF)存储余额,再接下来四个字节不取反倒序(9F0C0000)存储余额。上面提到的“倒序”,可以结合计算机数据存储方式来理解:如下图所示,变量a存储的数据对应的16进制为0A112233,变量

2、b存储的数据对应的16进制为0B445566。这样就很明显了,5634120A,就是变量a所代表的数据的十六进制0A123456的倒序。 作为入门教程,个人认为RFID安全之某学校水卡破解是非常不错的。看完这个教程,并实践结束后,我停下来思考这样一个问题:M1卡的密码破解是傻瓜式的,当然也有文章介绍破解原理,但是作为门外汉,目前我还不是特别关心,我只想找到那种破解成功,可以修改金额的快感!那么在整个M1卡的破解过程中,我自己到底起了什么作用?答案是卡片的数据分析。 RFID安全之某学校水卡破解中的数据分析并不难,只要知道水卡的余额就可以定位卡片中余额数据的存储位置,细心的读者肯定可以发现文中的

3、截图5号扇区也存在非0值块,作者在RFID安全之某学校水卡破解后记不留后患中作了进一步分析;任意修改学校食堂饭卡余额这篇文章所描述的卡片和RFID安全之某学校水卡破解的分析非常相似;而另一篇破解学校水卡-|RFID Hack初探 文中的数据就更简单了,只有余额和消费金额之和,连取反的校验都没做。 分析了几篇图文教程式入门文章,加上自己的实际破解过程,总结了一下数据分析的经验。 首先,需要收集信息,然后可以通过数据比对法定位余额,如果卡片数据采取了校验保护,可以采用试错法进行排查定位,正如RFID安全之某学校水卡破解后记不留后患中所用到的方法。0x03.1比对法比对法,就是将已知数据换算成十六进

4、制,寻找卡片中能与之对应的数据,从而确定卡片中对应的存储位置所存储的数据的意义,或者将卡片中变化的字节转成十进制,判断是否存在相应的数据信息。 最常用的比对值当然是卡片余额,还有当前的消费金额,或者是累计的消费金额,这两个数据有出现在前文的引用文中。那么除了这些,还应该考虑哪些数据呢?这里我作一个简单的罗列:消费次数、日期、时间、读卡器编号、卡号(非UID)等 之所以认为上面的数据可以存储在卡片中,是因为两个字节(16bit),不考虑符号位,可以表示的最大数值是65535,一个字节(8bit)可以表示最大数值为255。一张卡按四年有效期来算的话,每天要刷44次才能再四年内超过这个数值;日期也可

5、以用两个字节来表示,可以选择整体表示,譬如12月31日,记为1231,对应到16进制04CF,也可以一个字节表示月一个字节表示日,仍然是12月31日,可以记为0C1F(1F=31);时间(不考虑秒)的最大表示数字是23:59,也可以参考日期的表示方式,选择不同的方案;读卡器编号,一般情况下一个单位也不会同时具有65535台读卡设备;卡号,这里卡号一般可以用两个字节表示,如果单位人数较多(超过65535),也可以使用四个字节表示,卡号的意义可以标识一个人,也可以标识单位内的一个部门等。0x03.2试错法试错法就是针对一些不明意义的字节(可能是校验字节),通过修改已知意义的字节来确定其关联性,找出

6、不明意义字节的计算方法。 数据比对法,有时并不能分析出所有数据块的数据,这时可以考虑试错法来确定隐晦数据和哪些字段有关联,譬如下面的案例: 卡片只有0号扇区有数据:?123443 9A * * * * 04 00 46 BA 14 12 51 10 03 10 第0段0C 0D 0C 11 00 00 4A 3D 00 2D 00 00 00 01 00 47 第1段37 0B BC E4 01 C2 00 00 0E A6 02 7D 08 1D 05 60 第2段11 01 * * * * FF 07 80 69 FF FF FF FF FF FF 第3段第0段为厂商写死的UID,不可修改

7、,经过多次信息收集发现第1段的数据是不变的,变化的只有第二段,经过比对法,发现第1段的4A 3D是卡号,第2段的01 C2是本次消费金额,0E A6是余额,027D是消费和充值次数,081D是日期,到此,第2段中还有前四个字节以及最后两个字节的意义不明。 下面通过试错来定义各个字节的意义 尝试直接修改K1余额,读卡会失败,于是认为刷卡消费过程存在验证,余额和消费金额并不能构成验证对,所以认为验证信息在意义不明的6个字节内。 只修改消费金额也会导致读卡失败。 尝试使用K2的值整体替换K1的第2段,结果读卡依然失败。 最后尝试使用K2的值,整体替换K1的第1和第2段,等价于复制卡片,终于读卡成功了

8、。 通过以上几步,可以确定消费读卡器在进行扣钱之前,会先校验卡片的正确性,校验值和余额、消费金额以及第1段中的数据都有关联。为了进一步定位信息,做出如下试错计划:1、修改卡号,确认卡片是否可正确识别; 2、逐个修改第2段中已知意义的字节,确认卡片是否可正确识别,排除与校验无关的字节 3、对第2段中不明意义的6个字节逐个修改,确认卡片是否可正确识别,排除非校验字节 4、对第1段中的3个不明意义的字节逐个修改,确认卡片是否可正确识别 本质是就是对所有数据字节进行试错,排除与校验无关的字节! 通过以上过程缩小与校验相关的字节,再结合比对法中找出的已知意义的字节,从而确定不明意义字节的意义和校验算法。

9、 由于刷卡条件限制,以上案例尚未破解完成,试错法也有待该案例进一步验证。 破解过程需要大胆猜测,努力求证!0x04卡片防护破解和防护是一对冤家,既然M1卡这么容易被破解,那有没有合适的防护方法呢?上一小节中提到的校验案例就算是一个很小的防护手段,但是依然存在很大被破解的风险。 为了降低水卡和饭卡被破解的风险,同时又不增加替换M1卡的成本,可以完全加密数据字段,基于密钥和算法保密性,保证即使可以通过验证攻击获取到M1卡中的数据,黑客也无法快速判断各个数据字段的意义,从而无法完成余额修改! 譬如,参考上一小节的校验案例,如果所有数据再与一个2字节的密钥进行异或处理,这时就无法简单的通过比对法判断出

10、哪些字节是余额、哪些是消费金额,进一步降低了破解风险。当然针对密钥可以设计一套动态密钥方案,效果类似支付宝令(需要考虑如何处理长期不使用的卡片),而加密算法可以选择更加复杂的对称加密算法,只要保证不会对消费刷卡机造成过大延迟即可。0x05复制攻击数据加密虽然可以增加黑客分析卡片数据的难度,降低黑客恶意修改余额的风险,但是无法应对卡片复制攻击! 复制攻击可能造成的后果是盗刷他人饭卡或水卡,这一点是最容易理解的,当然前提是黑客可以接触到别人的饭卡或水卡。 除了这一点,复制攻击是否还存在其它危害? 在分析这之前,需要明确几个前提,1)刷卡机中会记录哪些信息;2)我们假设刷卡机没7天向中央数据库服务器

11、提交一次数据,刷卡机向中央数据库提交的是哪些数据。 如果刷卡机只记录一张卡片的最后一次消费记录,那么其向数据库提交的数据必然要包含余额信息。如果在刷卡机两次向数据库提交数据的时间间隔内,利用复制的卡片(复制较早的卡片数据)做最后一次消费,那么真实卡片消费的数据就会被覆盖掉。 当然个人猜测目前的刷卡机应该会记录卡号(非UID)、消费累计金额、消费次数,同步数据库时只需要基于卡号找到对应的记录,然后将余额减去消费累计金额、总消费次数叠加本次提交的消费次数。这种情况下,复制攻击就只能盗刷他人的饭卡或水卡余额了,但是即使是这样,如果不影响被复制的卡,也算是一种修改余额的方式,毕竟刷卡机不会基于数据库信

12、息向卡片写数据! 本来以为复制攻击就这些影响了,晚上睡觉前忽然想到,既然可以复制别人的卡,为什么不能复制自己的卡呢。T1时间充值m元,并记录下卡内的数据信息D1,消费一段时间后,T2时间卡内余额n元(nm),此时将数据信息D1重新拷贝回卡内,卡片信息重新回到T1时间的状态,等价于T1-T2时间段内没做任何消费!这种情况即使是使用UID作校验也无法防护了,除非刷卡机是在线实时查询数据库的,后来发现这种攻击方式12年就有人提出了,并称之为重放/重置攻击。0x06后记刚接触RFID,有描述不准确或错误的地方,请轻拍指正!0x07卷土再来基于0x05节的分析和实际验证,通过复制攻击(重放攻击)已经实现0x03.2节示例中卡片的余额修改,但是为了论证 0x03.2节试错法的可行性,规划了如下方案:针对以上信息,对第1、2段内容,逐字节进行试错,确认卡片是否可读 验证结果如下: 1、修改第1段第0字节0D 0D 0C 11 00 00 4A 3D 00 2D 00 00 00 01 00 472、修改第1段第1字节0C 0E 0C 11 00 00 4A 3D 00 2D 00 00 00 01 00 473、修改第1段第2字节0C 0D 0D 11 00 00 4A 3D 00 2D 00 00 00 01 00 47

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1