Hardware | Proxmark3 Easy 사용해 보기 - 1

RFID 는 현생활의 다양한 장면에서 사용되고 있습니다. 교통카드, 신용카드, 회사출입 뱃지, 음식물 쓰레기 통, 아파트 출입구 등, 우리의 일상 생활에서 인증이 필요한 곳에서 널리 사용되고 있습니다.

다만, 사용처가 많다보니, 각각 별도의 카드를 들고 다녀야 하는 불편함이 생깁니다. 이를 해결해 보고자 간단한 소형 chip 에 복사를 해서 들고 다니면, 크기도 줄어들고, backup 용으로도 사용이 가능하니, 분실시의 추가 비용을 방지할 수도 있습니다.




1. Proxmark3 Easy

RFID copy 기기는 여러 종류가 있지만, hacking level 로 조작이 가능한 제품에는 Proxmark 시리즈가 있습니다. 강력한 기능을 가진, 최신의 기기는 Proxmark4 이지만, 비용적으로 너무 고가라, 입문자인 제가 사용하기에는 너무 부담이 큽니다. 적당하게 타협한 제품이 Proxmark3 Easy 입니다.

* Proxmark3 Develop Suit Kits 3.0 Proxmark NFC PM3 Reader Writer For RFID NFC Card Copier Clone ICEMAN Firmware 2USB Port 512K


비용이 좀 나가긴 하지만, AliExpress 에서 구매 합니다.


몇가지 샘플 RFID 와 본체가 도착 했습니다.




2. Hardware Detail

Proxmark3 Easy 의 본체를 면밀히 살펴 보겠습니다.


요즘 판매되는 제품은, 512 MiB 버전이라고 합니다. 256 MiB 버전이 간간히 보이니, 지뢰를 피해서 512 MiB 버전으로 구매 했습니다.


Low Frequency ANT 500uh, Portable ANT V5.0, Center Frequency 125k 라고 적혀 있습니다. 다양한 대응이 가능하도록 antenna 만 따로 제작해서 사용할 수도 있겠네요.


일단, micro USB 케이블을 통해 전원을 인가해 봅니다. 작은 LED 들이 켜지니 특별히 문제는 없어 보이네요. USB C-Type 이 되어 있었으면 어떠했을까 하고 아쉽습니다. 개발 된지 조금 지난 제품이라 어쩔 수 없네요. 아마 조만간 C Type 버전이 출시 되겠죠.


나사를 풀어, 3 layer 로 구성된 본품을 분해해 봅니다. 우선 안테나 입니다.


일반적으로 많이 사용하는 안테나는 사진의 오른쪽 안테나 입니다. 저주파 RFID 를 아직 만나본 적이 없습니다.


제일 밑에 있는 layer 는 다음과 같이, 안테나와 회로가 꽉 차있는 PCB 입니다. 아무래도 custom code 와 성능을 위해 FPGA 인 XILINX 와 ATMEL MCU 가 사용 되었네요.


그냥 넘어갈 수 없겠죠. Atmel MCU 는 다음과 같은 성능을 가졌습니다.

* Atmel AT91SAM SAM7S512 ARM-based Flash MCU
  - Datasheet
  - ARM7TDMI 32-bit ARM RISC Processor
  - high-speed Flash and an SRAM
  - USB 2.0 device

외형적으로 봐도, 저가형 arduino 제품인 ATmega328P 등이 아니라 꽤 성능이 보장된 MCU 입니다. 자세한 사양을 확인할 수 있도록, Datasheet 링크도 함께 올립니다.


동작 클럭 확인은, MCU 밑에 있는 16MHz 크리스탈로 유추할 수 있습니다.


FPGA 는 XILINX SPARTAN 입니다.

* XILINX SPARTAN XC2S30
  - Datasheet
  - Spartan-II FPGA Family
  - Logic cells : 972
  - Total Block RAM Bits : 24K

Custom Program 을 몇번이고 덮어 쓸 수 있는 logic chip 입니다.


오실레이터는 13.560 Mhz 를 사용하는 군요.


그 외 부품들 입니다. TI 도 있고, Microchip Technology 도 있습니다. Capacitor 는 electrolytic 이 아니라 tantalum 이 사용되었습니다.


* TLC5540
  - Datasheet
  - Y5540 (Texas Instruments)
  - a high-speed, 8-bit analog-to-digital converter (ADC)
  - at sampling rates up to 40 mega samples per second (MSPS)

* SN74HC4066
  - Datasheet
  - HC4066 (Texas Instruments)
  - a Silicon-Gate CMOS Quadruple Bilateral Analog Switch 

* MCP6294
  - Datasheet
  - 6294EST (Microchip Technology)
  - 1.0 mA, 10 MHz Rail-to-Rail Op Amp

* 74HC244
  - Datasheet
  - Octal 3−State Non-inverting Buffer/Line Driver/Line Receiver
  - High−Performance Silicon−Gate CMOS

그렇다라고 합니다.



3. Application Installation

MacOS 를 사용하면서, 적당한 구동 어플을 찾을 수 없어, homebrew 를 이용 했습니다.

brew install proxmark3


뭔가 제대로 진행이 안되네요.


인터넷에서 찾아보니, tapping 을 해야 한다고 해서, 해당 명령어를 실행합니다.

brew tap proxmark/proxmark3


그 다음, brew install proxmark3 해줍니다. 그러니, 잘 설치 되네요.


이렇게 하면, MacOS ARM chip 에 맞는 어플을 자동으로 설치해 줍니다.


설치된 장소를 찾아서 실행해 줍니다. 다만, 어느 USB 와 연결되어 있는지 확인하여, 해당 USB 를 명시해 주면 됩니다. 아래 command 를 이용하여, proxmark3 가 연결된 USB 가 "/dev/cu.usbmodem11201" 이라는 것을 찾아 명령어 뒤에 붙여 줍니다.

ls /dev/cu*

AT91SAM7S512 Rev A / ARM7TDMI / 512K bytes 라고, 장비의 정보를 표시해 줍니다.




4. Commands

가장 기본적인 명령어인 "hw tune" 을 실행해 봅니다. 대략 현재 사용중인 안테나 상황을 알려주세요.


이제, 동봉되어 있던 실제 RFID 카드를 이용하여 확인해 봅니다.


확인한 RFID 카드의 규격과 UID 등의 정보를 표시해 줍니다. NXP MIFARE 라는 정보를 꽤나 자주 보게 됩니다. NXP 사가 RFID 관련 chip 과 규격을 선도하고 있는게 아닌가 합니다.

proxmark3> hf search
          
 UID : a4 4a b8 69           
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

여기서 중요한 포인트는, 완전히 동일하게 copy 하기 위해서는 UID 까지 복사해야 완벽하게 동일한 RFID card 로 인식하나, UID 를 copy 할 수 있으면, 아래 주의 문구가 안생기는 것으로 알고 있습니다. 다만, 나중에 알게 된 것이지만 이것도 정확하지 않더군요.

No chinese magic backdoor command detected


이왕 확인하기 시작한 것, 여러가지 카드를 가지고 확인해 봅니다.
proxmark3> hf search
          
 UID : 63 5d 8a 8f           
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

위의 결과는, 그 전 결과와 동일하군요.


아래의 결과는, TYPE 에서 살짝 다르며, MANUFACTURER 항목이 추가 되었습니다.
proxmark3> hf search
          
 UID : 04 be f1 9a 2f 61 80           
ATQA : 00 44          
 SAK : 00 [2]          
TYPE : MIFARE Ultralight EV1 48bytes (MF0UL1101)          
MANUFACTURER : NXP Semiconductors Germany          
proprietary non iso14443-4 card found, RATS not supported          
No chinese magic backdoor command detected          

Valid ISO14443A Tag Found - Quiting Search

TYPE : NXP MIFARE CLASSIC 1k | Plus 2k SL1
TYPE : MIFARE Ultralight EV1 48bytes (MF0UL1101)
MANUFACTURER : NXP Semiconductors Germany


Wework 카드가 주면에 있어, 이것도 한번 확인해 봅니다. 매우 평범하군요.
proxmark3> hf search
          
 UID : aa 88 e2 14           
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

회사 법인카드도 한번 확인해 봅니다.


확실히 다른 점은 TYPE 부분이군요. 새로운 문자열이 보입니다.

TYPE : Infineon MIFARE CLASSIC 1K

proxmark3> hf search
          
 UID : 01 de 43 b9           
ATQA : 00 04          
 SAK : 88 [2]          
TYPE : Infineon MIFARE CLASSIC 1K          
proprietary non iso14443-4 card found, RATS not supported          
No chinese magic backdoor command detected          
Prng detection: WEAK          

Valid ISO14443A Tag Found - Quiting Search

신용카드도 한번 확인해 봅니다.


회사 법인카드와 동일한 TYPE 를 보여줍니다. 그 외는 특이점이 없네요.
proxmark3> hf search
          
 UID : 55 67 e2 1f           
ATQA : 00 04          
 SAK : 88 [2]          
TYPE : Infineon MIFARE CLASSIC 1K          
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 Easy 구매할 때, 같이 구매했던 RFID tag 도 확인해 봅니다. 일단 문구에는 UID block 0 변경 가능하다고 되어 있긴 합니다.

* UID Block 0 Changeable Re-Writtable Round Dia25/30/35mm Sticker 13.56MHZ ISO 14443A Copy Clone Label 10/50/100PCS


안테나와 chip 으로 대략 구분되어 있습니다.


확인해 봅니다.


뭔가 다른 결과가 나오긴 했습니다. 다만, magic backdoor 는 안된다고 표시되네요. 흠~. 특별한 명령어를 입력해야 하는지, 그렇지 않으면 homebrew 를 통해서 받은 실행 파일이 아니라, 다른 firmware 를 통해서 검사해 봐야 할지 모르겠네요.

TYPE : NTAG 213 144bytes (NT2H1311G0DU)
MANUFACTURER : Shanghai Fudan Microelectronics Co. Ltd. P.R. China

proxmark3> hf search
          
 UID : 1d 03 96 9f 8c 00 00           
ATQA : 00 44          
 SAK : 00 [2]          
TYPE : NTAG 213 144bytes (NT2H1311G0DU)          
MANUFACTURER : Shanghai Fudan Microelectronics Co. Ltd. P.R. China          
proprietary non iso14443-4 card found, RATS not supported          
No chinese magic backdoor command detected          

Valid ISO14443A Tag Found - Quiting Search

요즘 의류 구매시, 옷의 tag 에도 RFID 가 부착되어 있는 제품이 있습니다. 구매했던 옷에 딸려 있던 tag 도 검사해 봅니다.


모양은 이렇게 생겼습니다. 안테나가 크게 뻗어 있으며, 아주 조그마한 chip 이 연결되어 있네요.


Chip 부분을 확대해 봤으나, 이게 chip 인지 뭔지는 잘 모르겠습니다.


열에 의하여 탄 것인지, 일부러 검은 수지를 뭍힌 것인지 알수는 없네요.


확인해 봤으나, 일반적인 주파수 범위를 벗어나는게 아닌가 합니다.




5. Firmware Update

Homebrew 로 설치한 directory 구조를 보면, 특정 위치에 firmware 라는 폴더가 존재합니다. Firmware 업데이트 할 수 있는 파일이 준비되어 있네요.


USB 연결 전에 한쪽 면에 있는 버튼을 누른 상태로 USB 를 연결합니다. 이후, 버튼을 놓고 firmware 업데이트 명령어를 입력하면, firmware 가 덮어 씌우게 됩니다. USB 를 꽂을 때, 이미 누르고 있어야지만 firmware update 모드로 들어간다고 했는데, 잘 되지 않습니다. 계속 누르고 있어야 된다는 글도 있어, 저는 두가지를 번갈아서 해보다가 성공해서, 정확하게 어떤 것이 맞는지는 모르겠네요. 아마도, USB 연결시에, 이미 버튼을 누르고 있는게 맞을 것 같긴 합니다만, 나중에 한번 더 해봐야겠습니다.


Firmware 명령어는 bin 폴더에 있습니다. 이름은 proxmark-flasher 입니다. 어느 USB 에 연결되어 있는지도 "ls /dev/cu*" 로 먼저 확인하고, target USB 를 옵션으로 넣습니다. 먼저 bootrom 을 입힙니다.

proxmark3-flasher [USB] -b bootrom.elf


그 다음으로는 fullimage.elf 라는 것으로 flashing 합니다.

proxmark3-flasher [USB] fullimage.elf


Firmware update 가 완료된 후, hw version 을 확인해 보니, 뭔가 더 많은 정보를 뿌려주세요. 처음 확인했을 때는, "2016-11" 버전이었는데, firmware update 이후에는 "2023-11" 로 변경되어, 꽤 많이 올라온 것 같습니다.




6. Simple Test

몇가지 명령어를 사용해 보았습니다. Key dump 명령어의 결과는 다음과 같습니다.

hf mf chk --dump


hf mf chk * ?


실제 파일로 덤프.


키 설정을 해야 한다 해서, default key 로 dump.

hf mf nested 1 0 A ffffffffffff d


Dump 가 data 파일과 key 파일로 쌓이기는 합니다. 다만, copy 는 실패. 호환되는 key card 와 그에 따른 명령어 체계가 각기 다르고, 별도인 것을 확인 했습니다.


성공하는 RFID copy 는 다음편에서 해 보겠습니다.


FIN

댓글