Hardware | Proxmark3 Easy 사용해 보기 - 2



Proxmark3 Easy 에 사용되는 명령어 세트 및 firmware 는 몇가지가 있습니다. 정식도 있고, 좀더 커스터마이즈 한 버전들도 제공됩니다. 앞전에서 사용된 버전 말고 ICEMAN 버전이 많이 활용된다고 합니다. 저도 편승하여 ICEMAN 버전을 사용해 보기로 합니다.



1. ICEMAN

ICEMAN 패키지는 아래에서 다운로드 받을 수 있습니다.

* RfidResearchGroup / proxmark3

특히, macOS 의 경우는 위의 리포지토리의 하위에 있는 장소에서 자세한 설명이 되어 있습니다. 여러 상황에 맞춰 알맞는 설치가 중요한데, 저는 M4 버전을 가지고 있어서, 아래 homebrew 를 따랐습니다.

* macOS - Homebrew automatic installation

필요한 command 는 다음과 같습니다. Windows 이거나 OS 가 다른 것은, 해당 내용을 찾은 후, 그에 맞는 명령어를 입력하면 됩니다.

0. Install XCode Command Line Tools if you haven't yet already done so
  xcode-select --install

1. Install homebrew if you haven't yet already done so
  http://brew.sh/

2. Install xquartz
  brew install xquartz

3. Tap this repo
  brew tap RfidResearchGroup/proxmark3

4. Install Proxmark3 for generic (non-RDV4) devices (platform), stable release
  brew install --with-generic proxmark3

XCode 와 Homebrew 는 기본적으로 사용되고 있어서, xquartz 부터 설치하였습니다. 이는 "hw tune" 이라는 명령어 실행 시, 그래프로 보여주는 역할을 합니다.


관련된 모듈을 받고 설치를 자동으로 시작합니다.


macOS 의 Setting 메뉴에서 실행 설정이 되어 있어야 합니다.


그 다음으로, repository 에 대해 tap 설치를 해 줍니다. ICEMAN 은 범용이 아니라서, 따로 repository 등록을 위한 tap 이 필요한 듯 합니다.


Tap 이 잘 되었으면, Proxmark3 Easy 에 맞는 "--with-generic" 옵션으로 설치 합니다.


필요한 package 들이 많이 있습니다. 의존성을 확인하고 자동으로 설치해 줍니다.




2. Firmware Update

ICEMAN 버전의 binary 와 library 를 설치하였다 한들, 관련한 파일들과 함께 움직여야 하는 firmware 가 Proxmark3 Easy 에 올라와 있어야 합니다. 그래서 firmware update 를 실행합니다.

우선, 옆구리에 있는 버튼을 누른 상태로 USB 에 연결합니다. 그렇게 하면 bootloader 모드로 들어가서 firmware 를 update 할 수 있는 상태가 됩니다. USB 에 연결 이후에는 버튼에서 손을 떼어서 더 이상 누루고 있지 않아도 됩니다. 설명서에 의하면, 매우 오래된 bootloader 일 경우는, 계속 눌러야 할 수 있다고 하네요.


pm3-flash-all 하면 자동으로 인지하고 firmware 를 인스톨할 것입니다. 그렇지 않으면, Proxmark3 Easy 가 연결되어 있는 USB device 정보를 확인하여 그 밑줄의 긴 명령어를 실행하면 됩니다. "/dev/cu*******" 부분은, 각자의 컴퓨터에서 USB 연결정보에 맞추서 적으면 됩니다.

pm3-flash-all

proxmark3 /dev/cu.******** --flash --unlock-bootloader --image /usr/local/share/proxmark3/firmware/bootrom.elf --image /usr/local/share/proxmark3/firmware/fullimage.elf

실행한 동영상도 올려 봅니다.


Update 완료한 화면 입니다.




3. pm3

이제 실행을 해 봅니다. 예전 낮은 버전과는 다른 모습이군요. Open source 의 이점을 살려서 계속 끊임없이 발전하는 것 같습니다.


우선 'hw version' 으로 확인해 봤습니다.


맨 처음 하는 "hw tune" 을 실행해 보았습니다.


리부팅을 하면, 그래프로도 보여줄 듯 한데, 리부팅 안하고 그냥 실행했더니, 'No GUI in this build!' 라고 나오는 듯 합니다.



4. Dump

이제 준비가 되었으니, 건물 출입 카드를 가지고 실험을 해 보았습니다.


'hf search' 를 통해서 card 사양을 인식.


마지막에 'hf mf info' 라고 떠서, 실행해 봅니다. 그러니, 좀더 많은 정보를 보여줍니다.


Fingerprint 부분에서, 'Fudan FM11RF08S' 브랜드 명이 뜨더니, 관련 script 를 실행해 보라고 합니다. 원래 dump 를 뜨기 위해서는 몇 단계의 dump 를 떠야 하나, 많이 사용되는 card 에 대해서는 script 가 만들어져 있는 듯 합니다. Google 에 물어보니, 다음과 같은 답변을 내 놓았습니다.

The file fm11rf08s_recovery.py is a Python script primarily used with the Proxmark3 device for recovering keys from Fudan F08 (MIFARE Classic compatible) RFID cards. This script leverages a recently discovered vulnerability in these cards, allowing for the extraction of both A and B keys without the need for sniffing authentication attempts.


스크립트가 실행되면서, 자동적으로 파일이 만들어 졌습니다.


최종적으로 필요한 key 파일과 dump 파일이 생성 되었네요. 이 파일들을 이용해서 copy 가 가능할 듯 합니다.


'hf my list' 라고 치면, 접근 기록들을 볼 수 있습니다. 이 말인 즉슨, access history 를 위한 쓰기 영역이 있다는 이야기가 되겠습니다.


의외로 심오한 부분이 있습니다.



5. Copy

Clone 하려는 source 가 Gen 1a 이다 보니, 가지고 있는 여러 Key card 들 중에 잘 되는 key card 가 없었습니다. 그러던 중, Gen 1a 을 찾았습니다. 여러가지 구매한 것 중, 이 제품 입니다.

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


잘 도착 했습니다.


가격대가 높다 보니, anti-metal tape 가 붙어있고, UID 0 다시쓰기가 가능한 제품 입니다.


이제 활용해 봅니다.


좀더 자세한 정보를 얻고자 'hf mf info' 를 실행한 결과 입니다.


mf 계열의 cload 명령어를 사용하여, dump 파일을 copy 했습니다.


Copy 된 target 내용을 확인해 보니, UID 까지 모두 덮어 씌워져 있었습니다!


좀더 자세한 정보를 찾아 보니, 원본과 완전히 동일하게 copy 된 것을 확인 하였습니다.


여러 실패를 거듭하고, 마지막으로 성공한 케이스 입니다. 남들은 다 쉽게 하는 것 같은데, 계속 실패하다가 처음으로 성공해 봅니다. Gen 1a 에서 성공 했지만, Gen 2 에서도 되는 것 같은데, 아직 방법을 모르겠습니다.

script run fm11rf08s_recovery.py
hf mf cloud -f dump.bin

다음 편에서는 여러가지 RFID 카드들에 대해 조회해 보겠습니다. 얼마나 많은 카드들이 존재하는지 한번 확인해 보겠습니다.


FIN

댓글