乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      RFID入坑初探——Mifare Classic card破解(一)

       iamjfyh 2019-06-25

      0x00 前言


      之前一直想要玩無(wú)線安全,旺財(cái)大牛說(shuō)門檻低(哪里低啦=。=web狗表示我很笨啊,汪汪),于是乎入手了ACR122u,想從NFC開(kāi)始入坑,就有了這篇文章,先普及下基本知識(shí)。

      Mifare Classic card提供1k-4k的容量,我們經(jīng)常見(jiàn)到的是Mifare Classic 1k(S50),也就是所謂的M1卡。M1卡有從0到15共16個(gè)扇區(qū),并且每個(gè)扇區(qū)都有獨(dú)立的密碼,每個(gè)扇區(qū)配備了從0到3共4個(gè)段,每個(gè)段可以保存16字節(jié)的內(nèi)容,反正從0開(kāi)始數(shù) 就對(duì)了(和數(shù)組下標(biāo)為0開(kāi)始一樣)。

      每個(gè)扇區(qū)的第4段呢是用來(lái)保存KeyA,KeyB和控制位的,每張卡還有一個(gè)唯一標(biāo)識(shí)的UID號(hào),具體的卡結(jié)構(gòu)大家可以百度一下看看。

      我們本文的研究對(duì)象就是這玩意兒,谷歌告訴我們,這種卡類的攻擊方式大概分為這么幾種:

      1)暴力破解

      爆破對(duì)于M1卡的破解來(lái)說(shuō)比較有效,因?yàn)镸1卡是被動(dòng)卡,需要讀卡器來(lái)供能,切斷供能后卡的臨時(shí)數(shù)據(jù)就丟失了,也就是說(shuō)不會(huì)存在輸入過(guò)多錯(cuò)誤密碼后造成的鎖死之類的情況
      FFFFFFFFFFFF、A0B0C0D0E0F0等等都是M1白卡的默認(rèn)密碼,所以當(dāng)我們使用mfoc這樣的工具來(lái)爆破的時(shí)候基本上都是用這些默認(rèn)密碼來(lái)填充剩余扇區(qū)的密碼。

      2)重放攻擊

      剛剛我們說(shuō)了M1卡是被動(dòng)卡,當(dāng)它被供能的時(shí)候會(huì)產(chǎn)生隨機(jī)數(shù)列,切斷供能后數(shù)據(jù)不會(huì)保存,再次供能又會(huì)產(chǎn)生一模一樣的數(shù)列,然后就可以控制切斷,再次供能的時(shí)間計(jì)算出這個(gè)數(shù)列,進(jìn)行重放攻擊來(lái)達(dá)到修改數(shù)據(jù)的目的。

      3)克隆卡片(卡復(fù)制)

      M1卡的扇區(qū)可以保存數(shù)據(jù),所以大部分的卡片會(huì)選擇加密扇區(qū)后保存數(shù)據(jù),我們可以用 uid卡來(lái)進(jìn)行復(fù)制,每張M1卡在0扇區(qū)第1段都有一個(gè)唯一標(biāo)識(shí),而且是保護(hù)無(wú)法修改的,uid 卡就是沒(méi)有設(shè)定0扇區(qū)保護(hù)的卡,所以你可以隨意的修改你想要的uid,這樣我們就可以克隆出一張連uid都相同的卡片了。(但是要注意不要把00扇區(qū)弄 壞,之前測(cè)試的時(shí)候就未知原因?qū)憠牧?0扇區(qū)無(wú)法讀入了)。

      4)嗅探攻擊

      這里要用到PM3這個(gè)神器,在卡和機(jī)器數(shù)據(jù)交換的時(shí)候嗅探數(shù)據(jù),進(jìn)行攻擊,利用XOR算key工具就可以把扇區(qū)的密鑰計(jì)算出來(lái)(窮逼表示根本買不起)。

      0x01 細(xì)節(jié)


      科普結(jié)束,接下來(lái)以一個(gè)實(shí)例來(lái)講解以下破解M1卡的姿勢(shì)(筆者才開(kāi)始入坑,如有不對(duì),請(qǐng)大牛斧正)。

      關(guān)于暴力破解,我們此處用到這么幾個(gè)東西,ACR122u,mfoc,libnfc。

      其中ACR122u作為硬件供能,讀寫的作用,mfoc用來(lái)爆破,libnfc用來(lái)寫入數(shù)據(jù)。

      enter image description here

      可以看到讀出了我們的卡類型,下方的keyA keyB就是要我們破解的地方,當(dāng)然,也可以使用另外一個(gè)簡(jiǎn)化版本,更粗暴簡(jiǎn)單一些,百度M1卡服務(wù)程序即可。

      enter image description here

      稍等片刻后就發(fā)現(xiàn)上下各16個(gè)勾勾都打上了,說(shuō)明成功爆破了,成功后會(huì)在當(dāng)前目錄下生成一個(gè)dump文件,這樣,這張卡的數(shù)據(jù)就被完全dump下來(lái)了,得到dumpfile1但是只有1k的大小,在win下操作的時(shí)候需要用到一個(gè)fixdump的工具來(lái)填充剩余部分

      fixdump dumpfile1

      即可修復(fù),大小為4k,然后我們?nèi)ハM(fèi)一下這張卡(讓你要修改的區(qū)域的數(shù)據(jù)改變)

      enter image description here

      其中前6個(gè)字節(jié)和后6個(gè)字節(jié)的FF FF FF FF FF FF即為秘鑰,中間的幾位FF 07 80 69即為控制位。

      再次dump數(shù)據(jù)dumpfile2并修復(fù)

      fixdump dumpfile2

      就此,我們有了兩個(gè)樣本,然后做hex diff,linux下直接用diff,win下可以使用hexcmp2

      enter image description here

      diff后發(fā)現(xiàn)了數(shù)據(jù)變動(dòng)的區(qū)域。

      本文只修改簡(jiǎn)單的金龍卡水卡功能,所以取樣兩次后就可以輕松找到數(shù)據(jù)所在的扇區(qū),如果是做比較復(fù)雜的修改那么取樣可能得多次,比如做門禁攻擊啥的。

      可以看到這個(gè)扇區(qū)內(nèi)的一些數(shù)值,末端的40,F(xiàn)F啥的都是存放數(shù)值的地址,我們不用管它,在M1 卡中本來(lái)要進(jìn)行一次的取反和倒序存入,但是可能本屌的渣學(xué)校的卡居然直接進(jìn)行16進(jìn)制換算為10進(jìn)制后就是水卡金額數(shù)目。。。

      這里多說(shuō)兩句,一般情況下,數(shù)據(jù)存入是倒序的,比如F9 FE,其實(shí)真實(shí)數(shù)據(jù)是FE F9,然后換算為2進(jìn)制進(jìn)行取反再換算為10進(jìn)制,有可能還會(huì)遇到數(shù)據(jù)的加密,我們?cè)俳饷芎缶涂梢缘玫酱嫒氲臄?shù)值了。

      圖中是我成功修改了最大數(shù)值后的,金額為640.00元,hex為fa 00,做測(cè)試的時(shí)候筆者太高估了學(xué)校,多次猜測(cè)其換算的算法,取樣了20來(lái)次后腦洞開(kāi)了,直接通過(guò)10進(jìn)制轉(zhuǎn)換16進(jìn)制。。。居然就是那么簡(jiǎn)單!F9 FE為63998小數(shù)點(diǎn)請(qǐng)忽視。

      然后使用libnfc來(lái)寫入數(shù)據(jù)

      .fc-mfclassic.exe w b dumpfile_new dumpfile_old

      enter image description here

      至此,破解差不多就那么完成了(單純指做數(shù)據(jù)修改的目的,不包括解決什么后患啊之類的情況)。

      最后上一張成功改寫后的測(cè)試圖。

      enter image description here

      破解時(shí)長(zhǎng)共3個(gè)小時(shí)(來(lái)回取樣浪費(fèi)了不少時(shí)間)。

      關(guān)于驗(yàn)證漏洞攻擊,在前面科普的時(shí)候說(shuō)過(guò),每個(gè)扇區(qū)都有獨(dú)立的密碼,在通常情況下,有些存儲(chǔ)關(guān)鍵數(shù)據(jù)(比如飯卡里的錢)的扇區(qū)會(huì)更改密碼,比如,某張卡里的第4扇區(qū)存著錢,更改了默認(rèn)密碼,但是其他扇區(qū)并沒(méi)有更改默認(rèn)密碼,那么我們?cè)趺赐ㄟ^(guò)其他扇區(qū)來(lái)操作第4扇區(qū)呢,這里就會(huì)用到驗(yàn)證漏洞攻擊,也就是nested authentication 攻擊,通常會(huì)在我們知道16個(gè)扇區(qū)中任意一個(gè)扇區(qū)密碼來(lái)破解其他扇區(qū)的時(shí)候使用。

      首先我們知道,M1卡的算法是個(gè)對(duì)等加密算法,讀卡器中也保存著同樣的密碼,也是用同樣的算法加密,當(dāng)卡和機(jī)器交互的時(shí)候,讀卡器首先驗(yàn)證0扇區(qū)的密碼,卡給讀卡器以明文方式發(fā)送一個(gè)隨機(jī)序列a(明文),然后讀卡器通過(guò)跟加密,同時(shí)自己產(chǎn)生一個(gè)加密的隨機(jī)序列b(密文)返回,卡用自己的密碼解密之后,解密出來(lái)的序列如果是自己之前發(fā)送的a,則認(rèn)為正確,然后通過(guò)自己加密算法加密讀卡器生成的隨機(jī)序列發(fā)送給讀卡器,讀卡器解密之后,如果跟 自己之前發(fā)送的隨機(jī)數(shù)b相同,則認(rèn)為驗(yàn)證通過(guò),之后所有的數(shù)據(jù)都通過(guò)此算法加密傳輸。

      enter image description here

      在整個(gè)過(guò)程中,只有a是明文,之后的都是密文,card發(fā)送一個(gè)a給讀卡器之后,讀卡器用錯(cuò)誤的密碼加密之后發(fā)送給card,card肯定解密錯(cuò)誤,然后驗(yàn)證中斷
      但是,我們知道其他扇區(qū)的的密碼,驗(yàn)證的時(shí)候,使用這個(gè)扇區(qū)驗(yàn)證成功之后,后面所有的數(shù)據(jù)交互都是密文,讀其他扇區(qū)數(shù)據(jù)的時(shí)候,也是card首先發(fā)送隨機(jī)數(shù)a,這個(gè)a是個(gè)加密的數(shù)據(jù),之前說(shuō)的每個(gè)扇區(qū)的密碼是獨(dú)立的,那么加密實(shí)際上就是通過(guò)card這個(gè)扇區(qū)的密碼相關(guān)的算法加密的a,這個(gè)數(shù)據(jù)中就包含了這個(gè)扇區(qū)的密碼信息,所以我們才能 夠通過(guò)算法漏洞繼續(xù)分析出扇區(qū)的密碼是什么。

      也就是因?yàn)檫@個(gè)原理,在驗(yàn)證漏洞的時(shí)候才必須要知道至少一個(gè)其他扇區(qū)的密碼。

      0x02 總結(jié)


      對(duì)于才入坑的朋友來(lái)說(shuō),爆破是最簡(jiǎn)單粗暴的辦法,交給程序自動(dòng)化進(jìn)行即可(有可能接下來(lái)一篇或者下下一篇寫根據(jù)重放攻擊進(jìn)行破解的)。

      其次,主要進(jìn)行的工作就是多次的取樣和反復(fù)diff,體力活加腦力活。

      預(yù)告,等閑下來(lái)繼續(xù)研究一下mfoc的其他破解功能,比如重放之類的,或者完全破解校園卡的其他功能(因?yàn)槭锹?lián)網(wǎng)的,所以目測(cè)得我順手拿下后勤系統(tǒng)吧)

      您的支持將鼓勵(lì)我們繼續(xù)創(chuàng)作!

      [微信] 掃描二維碼打賞

      [支付寶] 掃描二維碼打賞

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多