文档详情

IC卡破解方法精编版

壹****1
实名认证
店铺
DOC
386.50KB
约12页
文档ID:494525139
IC卡破解方法精编版_第1页
1/12

RFID 破解方法网上看了很多 RFID 破解的文章, 大部分都是工具使用, 一步步该怎么操作, 基本上没有讲原理的,估计导致了很多初学者非常迷惑,特别是一旦按照操作步骤操作的时候出错时更加迷惑, 不知道是什么状况, 国内 radiowar 也同样没有看到过特别介绍原理性的文章建议大家还是多看看外文原版的资料说明,会理解的更透彻些,才能更快的加入到 RFID 安全研究及测试中参考站点: 多看看论坛里面提问跟回答 http:// 这篇文章就当是我自以为是的普及性介绍,我想应该还是会给很多人解惑首先,先说说目前 RFID 破解涉及到的几种方法,我尽量以最直白的语言描述1、最简单 ID 卡破解常见破解办法: ID 卡复制, ID 卡除了复制也没有其他研究的了,毕竟太简单了基本原理介绍:ID 卡属于大家常说的低频卡, 一般大部分情况下作为门禁卡或者大部分大学里使用的饭卡,一般为厚一些的卡,是只读的,卡里面只保存有一串唯一的数字序号ID,可以把这串数字理解为你的身份证号,刷卡的时候,读卡器只能读到 ID 号,然后通过跟后台数据库进行匹配,如果是门禁卡,那么数据库里面就是存在这样的 ID号,如果匹配上门就开了,匹配不上门就开不了。

如果是学校的饭卡,刷卡的时候,实际上操作的是你对应 ID 号相关的数据库中的数据 ID 卡本身不存在任何其他数据,所以,学校使用的 ID 卡饭卡,只能复制卡,刷别人的钱(数据库中的钱),再没有其他办法破解方法:通过 ID 卡读卡器,读取卡内的 ID 号,然后把这串 ID 号写入到 ID卡空卡中即可, 各类工具特别多, 需要一个 ID 卡读卡器 最简单的淘宝有卖的工具,两节 7 号电池,按读卡按钮读要复制的卡的 ID ,然后再按写卡按钮,把读到的 ID1号写入到空白卡中,即完成了卡复制工作,优点就是方便,缺点就是我们看不到整个过程,对我们安全研究来说作用不大2、射频 IC 卡破解写在前面的技术铺垫:射频 IC 卡种类繁多,标准也繁多,这些不在介绍范围内,但是以下攻击介绍的原理类似,下面不特别说明就是指的 M1 S50 卡,这也是目前广泛使用的,并且大家做测试时最常见的 IC 卡常见的破解方法:1)跟 ID 卡一样,复制 IC 卡的 UID 号码写入到新的空白 IC 卡中2)破解 IC 卡的密码,从而改写 IC 卡中的数据3)破解 IC 卡的密码之后, 把所有数据导出再写入到一个新的空白 IC 卡中,也就是 IC 卡全卡复制( NFC及 PM3等设备也支持把自己模拟成一个 IC 卡,实际上也属于卡复制一类)。

IC 卡破解基本上都逃不脱以上的几种应用,这里面又涉及到一个简单的 IC 的内部结构的说明,便于理解就简单说明一下IC 卡( S50)分为 16 个扇区( 0-15 ),每个扇区又分为 4 个区域块( 0-63 ),每个扇区都有独立的一对密码 keyA 和 keyB(先记着独立两个字,后面要思考问题)负责控制对每个扇区数据的读写操作, keyA 和 keyB 分布2在每个扇区的第四块中,第 0 扇区的第一个数据块,存储着 IC 卡的 UID 号(想成身份证号),其他扇区可以存储其他的数据,如钱等数据一般 IC 卡的 UID 是唯一的也是写死的不能更改,其他块的数据是可以更改的,所以也就有了普通 IC 空白卡以及 UID 可写空白卡(可以认为是不遵守规范的商家制作的)现在我们开始想象破解的几种环境:1)读卡器把 IC 卡当成 ID 卡一样只识别 UID 正确即可,不管 IC卡内其他数据,这时候,只需要把卡的 UID 读出来,并使用一个 UID可写的空白卡,把 UID 写入即可2)读卡器首先识别 UID 是否正确,然后再识别其他扇区的数据,通过 keyA 或者 keyB 对数据进行读写操作。

这样首先 UID 得正确,其次, keyA 或者 keyB 得正确(后面为了说的方便,我们就不说 keyA 或者 keyB,直接说 IC 卡密码)这样如果知道了 IC 卡密码, 我们也不需要复制新卡, 那么就可以更改 IC 卡中的数据,比如更改饭卡中的钱数如果我们想复制一张一模一样的卡,那么就把原卡的所有扇区的数据全面导出来,再写入新的 UID 可写卡中即可3)读卡器不识别 UID,只管对扇区的密码进行验证,如果验证成功则允许对卡内数据操作等如某“ XX快捷酒店”的门卡,就不管UID,只要扇区密码正确即可),那我们可以通过扇区密码更改门卡中的数据,如房号,住宿的时间等,也可以通过一个普通的 IC 卡( uid不能更改)复制一张门卡(跟原卡 UID 不同),也可以通过一个 UID可写的卡,复制一张跟原卡完全相同的卡(跟原卡 UID 也相同)基本上也就是以上几种环境,改写 UID、通过扇区密码改写扇区数据、通过把原卡数据导出重新导入到新的 IC 卡中复制一张卡IC 卡的 UID 是不通过密码控制的,可以直接通过读卡器获得,后面讲IC 卡的通信过程会说明 那么我们做 IC 卡破解时, 主要的问题就是破解 IC卡每个扇区的控制密码,如果密码破解了,那要怎么操作都随便了。

IC 卡密码破解的几种方法:31)使用默认的密码攻击,很多应用IC 卡都没有更改默认密码,所以导致可以直接使用默认密码来尝试接入IC 卡,常见的默认密码有:ffffffffffff000000000000a0a1a2a3a4a5b0b1b2b3b4b5aabbccddeeff4d3a99c351dd1a982c7e459ad3f7d3f7d3f7714c5c886e97587ee5f9350fa0478cc39091533cb6c723f68fd0a4f256e9FFzzzzzzzzzzA0zzzzzzzzzz2) nested authentication 攻击(大家常说的验证漏洞攻击)前面讲到每个扇区都有独立的密码,一些情况下,比如某饭卡,扇区 3 中存储着钱等数据,扇区 3 的更改了默认密码,扇区 5 中也存储着一些数据,扇区 5 也更改了密码,其他扇区没有更改默认密码我们要操作扇区 3 跟 5,不知道密码怎么办?使用 nested authentication 攻击,这种攻击方式是在已知了16 个扇区中任意一个扇区的密码之后, 采用的攻击方式, 可以获得其他扇区的密码我们前面都提到了, 16 个扇区的密码都是独立的,那么怎么能通过某个扇区的密码获得其他扇区的密码呢?如果可以,那说明扇区就不4是独立的呀,有人会说,由于 M1卡的加密算法被破解了,我只能说那是还没有理解,具体算法不讲,只说明一下,算法只是使得猜解密码的时间变短,使得猜解密码成为可能。

这是什么样的原理呢?首先先了解, 这是一个对等加密算法, 也就是读卡器跟 tag 中都保存着同样的密码,也都是用同样的算法加密,然后看 rfid 的验证过程:开始交互的时候, tag 就已经把 uid 给 reader 说了,主要牵扯到防冲撞机制,之后才开始验证第一次验证时,读卡器首先验证0 扇区的密码, tag 给读卡器发送一个随机数 nt (明文),然后读卡器通过跟密码相关的加密算法加密nt ,同时自己产生一个随机数nr,(密文 ) 发送给 tag ,tag 用自己的密码解密之后,如果解密出来的nt 就是自己之前发送的nt ,则认为正确,然后通过自己的密码相关的算法加密读卡器的随机数nr(密文) 发送给读卡器,读卡器解密之后,如果跟自己之前发送的随机数nr 相同,则认为验证通过,之后所有的数据都通过此算法加密传输首先记住这里面只有第一次的nt 是明文,之后都是密文,而且nt是 tag 发送的,也就是验证过程中,tag 是主动的5我们破解的时候, 读卡器中肯定没有密码 (如果有就不用破解了) ,那么 tag 发送一个 nt 给读卡器之后,读卡器用错误的密码加密之后发送给 tag , tag 肯定解密错误,然后验证中断,这个过程中,我们只看到 tag 发送的明文随机数, tag 根本没有把自己保存的密码相关的信息发送出来,那怎么破解呢?所以,要已知一个扇区的密码, 第一次验证的时候, 使用这个扇区验证成功之后,后面所有的数据交互都是密文,而且是 tag 首先发送随机数 nt ,这个 nt 是个加密的数据,我们前面也说过每个扇区的密码是独立的,那么加密实际上就是通过 tag 这个扇区的密码相关的算法加密的 nt ,这个数据中就包含了这个扇区的密码信息, 所以我们才能够通过算法漏洞继续分析出扇区的密码是什么。

这也是为什么 nested authentication 攻击必须要知道某一个扇区的密码,然后才能破解其他扇区的密码,这个攻击方式,我倒觉得,加密传输跟扇区密码独立帮了很大的忙,如果每次 nt 都是明文发送,那还真没法破解其他扇区了3) darkside 攻击假设某个 IC 卡的所有扇区都不存在默认密码怎么办?暴力破解根本不可能, 那这时候就是算法的问题导致的 darkside 攻击,我们照样不说具体算法什么漏洞之类,同样,我们考虑首先要把 tag 中的 key 相关的数据骗出来,也就是让 tag 发送出来一段加密的数据,我们通过这段加密的数据才能把 key 破解出来,如果 tag 不发送加密的数据给我们,那没法破解了前面我们也说了, 第一次验证的时候 tag 会发送明文的随机数给读卡器,然后验证读卡器发送加密数据给 tag ,tag 验证失败就停止, 不会发送任何数据了,这样看,根本就没有办法破解密码实际上经过研究人员大量的测试之后, 发现算法还存在这样一个漏洞,当读卡器发送的加密数据中的某 8bit 全部正确的时候 tag 会给读卡器发送一个加密的 4bit 的数据回复 NACK,其他任何情况下 t。

下载提示
相似文档
正为您匹配相似的精品文档