Engineering:Proxmark3

From HandWiki
Proxmark3
Proxmark 3 first version.jpg
First version of Proxmark3 originally designed by Jonathan Westhues
Date invented2007
FPGAXilinx Spartan®-II
ProcessorAtmel AT91SAM7S64
Memory64 kB flash

Proxmark3 is a multi-purpose hardware tool for radio-frequency identification (RFID) security analysis, research and development. It supports both high frequency (13.56 MHz) and low frequency (125/134 kHz) proximity cards and allows users to read, emulate, fuzz, and brute force the majority of RFID protocols.[1]

Originally created by Jonathan Westhues and published as open-source hardware, it was later picked up by a community of developers who significantly improved both hardware and software in comparison with the original version. Proxmark3 gathered a large community of security researchers investigating RFID access control systems, who expand and maintain the project while using it in their own research.[2] The original Proxmark3 hardware platform served as the basis for new device versions, including commercial ones.[1]

Technical specification

Proxmark3 is based on field-programmable gate array (FPGA) technology, which allows the implementation of high-performance low-level analog signal processing, modulation and demodulation. A separate microcontroller processes demodulated frames. Such setup potentially allows any RFID protocol to be implemented in Proxmark3's software.

Proxmark3 Hardware Blocks

Antennas

2 independent antenna circuits are used for low frequencies (LF) 125 kHz and 134 kHz, and high frequency (HF) 13.56 MHz. Initially, both antennas were connected with a shared 4-pin Hirose USB connector, which was unreliable at times. Subsequent revisions have opted to use a separate connector for each antenna.

ADC

8-bit Analog-to-digital converter (ADC) receives an analog signal from the antenna circuit, digitizes it and outputs the digital signal to the FPGA.

FPGA

Field-programmable gate array does both the low-level modulation when transmitting data from CPU and demodulation when receiving a signal from an ADC. It can process various modulations such as on–off keying (OOK), amplitude-shift keying (ASK), etc. The FPGA works in two ways: as reader generating electromagnetic field for cards, or as card waiting for reader field.

CPU

The ARM microcontroller is responsible for the protocol part. It encodes and decodes the frames (Manchester, Miller, etc) and performs more advanced functions. The CPU can reply back to the FPGA after signal handling, thus implementing the transport layer. The CPU also manages the USB communication with the PC client application.[3]

Flash memory

Flash memory is used to store firmware. The early versions of Proxmark3 only had 64 kB of flash memory,[4] but as firmware developed that became scarce and versions with 512 kB appeared.[5]

The firmware itself consists of ARM code and an FPGA image (which is loaded by the ARM). The FPGA communicates with the ARM through either its SPI port (the ARM is the master) or its generic SSP. The SPI is used for FPGA configuration. The SSP is used for data sent over the air.[6]

Software

At the time Proxmark3 was developed, SDR was a hard to access technology. For that reason a split FPGA/MCU architecture was designed: an FPGA handles low-level functionality such as modulation/demodulation, while a microcontroller cares for the high-level functionality (command-line interface, protocol encoding/decoding, etc). While the FPGA/MCU architecture is technically outdated, it remained unchanged throughout hardware revisions. This allowed different versions to use the same firmware and resulted in a large code-base. However, with time the Proxmark3 codebase became increasingly fractured and hardware instabilities started to appear. As a result, some implementations refine and optimize the code (for example Proxmark3 RDV4), while others use the original Proxmark3 codebase (for example Proxmark3 EVO).[5]

General commands of Proxmark3 RDV4

Proxmark3 software is divided into three parts:

  • PC client (application layer) – PC application which calls the Proxmark3 functions. It is used to display data, analyze the signal and manage Proxmark3. Subsequently, in newer Proxmark3 versions a mobile app can be used to control the Bluetooth-connected device.
  • CPU firmware (transport layer) – ARM firmware that manages protocol messages, formats and queues. It also provides CLI tools.
  • FPGA firmware (physical layer) – Xilinx Spartan II firmware is responsible for the DSP: modulating/demodulating of signals.
Proxmark3 client application plots data sample

Older firmware used USB HID protocol to connect the client to the Proxmark3. It was not possible to stream the received samples in real-time to the PC. CPU received a command from the client, executed it and stored the result in the memory buffer. The client had to send a new command to retrieve the CPU buffered data.[7] New firmware versions use CDC serial interface to communicate with the client.[2]

Signal samples may be handled by the PC client, it can plot received data to assist in analyzing unknown signals.

Community

Since Proxmark3's release in 2007 several RFID enthusiasts have been extending its functionality. Proxmark3 community has seen rapid growth after the release of firmware supporting the ISO/IEC 14443-A standard and appearing successful attacks on Mifare Classic. The Proxmark3 forum (registration required) became one of the main hubs for RFID system vulnerability discussion frequented by security researchers focusing on electronic access control (EAC) systems. The Proxmark community also houses developers of other RFID research tools: for example LibNFC.[8] The community Discord server was later created to host both text and voice discussions on the topic of EAC system security. It had about 3000 members at the end of 2021.

Researches used Proxmark3

Mifare Classic cards attacks:

  • Darkside attack (Nijmegen/Oakland Group, 2009)– recovering at least one key from any sector of the card. Works for every card, takes a long time. Using mfoc (Mifare Offline Cracker) tool from libnfc stack.
  • Nested attack (Nicolas T. Curtois, 2009) – If one sector is encrypted with a known key, other sectors are crackable in a short amount of time. There is also the updated version of this attack – Hardnested. Using mfcuk (Mifare Classic universal toolkit) tool from libnfc stack.[9]

Mifare Classic paper:

  • A practical attack on the MIFARE Classic[10]

Mifare DESFire paper:

  • An investigation of possible attacks on the MIFARE DESFire EV1 smartcard used in public transportation[11]

HID iClass papers:

  • Heart of darkness – exploring the uncharted backwaters of HID iCLASS security[12]

Hitag paper:

  • Gone in 360 Seconds: Hijacking with Hitag2[13]

Megamos paper:

  • Dismantling Megamos Crypto: Wirelessly Lockpicking a Vehicle Immobilizer[14]

NFC papers:

  • Practical attacks on NFC enabled cell phones[15]

References

  1. 1.0 1.1 Chantzis, Fotios (2021). Practical IoT hacking : the definitive guide to attacking the internet of things. Ioannis Stais, Paulino Calderon, Evangelos Deirmentzoglou, Beau Woods. San Francisco. ISBN 978-1-7185-0091-4. OCLC 1178868866. https://www.worldcat.org/oclc/1178868866. 
  2. 2.0 2.1 Yang, Qing (2018). Inside radio : an attack and defense guide. Lin Huang. Singapore. ISBN 978-981-10-8447-8. OCLC 1029352620. https://www.worldcat.org/oclc/1029352620. 
  3. Crepaldi, Paulo; Pimenta, Tales (2017-11-29) (in en). Radio Frequency Identification. BoD – Books on Demand. ISBN 978-953-51-3629-3. https://books.google.com/books?id=vMOQDwAAQBAJ&q=proxmark&pg=PA40. 
  4. "A Test Instrument for HF/LF RFID". https://cq.cx/proxmark3.pl. 
  5. 5.0 5.1 "Proxmark 3 | Proxmark". https://proxmark.com/proxmark-3-hardware/proxmark-3. 
  6. "Hardware Description · Proxmark/proxmark3 Wiki" (in en). https://github.com/Proxmark/proxmark3. 
  7. R., Garcia, F. D. Koning Gans, G.T de Verdult (2012). Tutorial: Proxmark, the Swiss Army Knife for RFID Security Research : Tutorial at 8th Workshop on RFID Security and Privacy (RFIDSec 2012). Nijmegen : Radboud University Nijmegen, ICIS. OCLC 1247335104. http://worldcat.org/oclc/1247335104. 
  8. Koning Gans, Gerhard de (2013). Outsmarting smart cards. [S.l.: s.n.]. ISBN 978-94-6191-675-4. OCLC 830879913. https://www.worldcat.org/oclc/830879913. 
  9. Courtois, Nicolas (2009). "Card-Only Attacks on MiFare Classic or How to Steal Your Oyster Card and Break into Buildings Worldwide". https://discovery.ucl.ac.uk/id/eprint/196096/1/196096.pdf. 
  10. de Koning Gans, Gerhard; Hoepman, Jaap-Henk; Garcia, Flavio D. (2008), "A Practical Attack on the MIFARE Classic", Smart Card Research and Advanced Applications, Lecture Notes in Computer Science (Berlin, Heidelberg: Springer Berlin Heidelberg) 5189: pp. 267–282, doi:10.1007/978-3-540-85893-5_20, ISBN 978-3-540-85892-8 
  11. Flynn, Rory. "An investigation of possible attacks on the MIFARE DESFire EV1 smartcard used in public transportation". http://www.proxmark.org/files/Documents/13.56%20MHz%20-%20MIFARE%20DESFire/FYP_Report_DESFireEV1.pdf. 
  12. "Heart of Darkness - exploring the uncharted backwaters of HID iCLASS security". https://fahrplan.events.ccc.de/congress/2010/Fahrplan/attachments/1770_HID-iCLASS-security.pdf. 
  13. Verdult, Roel; Garcia, Flavio; Balasch, Josep (2012). Gone in 360 Seconds: Hijacking with Hitag2. [S.l.] : USENIX Association. OCLC 1247338434. https://www.worldcat.org/title/1367211073. 
  14. Verdult, Roel; Garcia, Flavio; Ege, Baris. "Dismantling Megamos Crypto: Wirelessly Lockpicking a Vehicle Immobilizer". https://www.usenix.org/system/files/conference/usenixsecurity15/sec15_supplement.pdf. 
  15. Verdult, Roel; Kooman, Francois (February 2011). "Practical Attacks on NFC Enabled Cell Phones". 2011 Third International Workshop on Near Field Communication. pp. 77–82. doi:10.1109/NFC.2011.16. ISBN 978-1-61284-176-2. https://ieeexplore.ieee.org/document/5741305.