Proxmark3 Aansluiten en Installeren – Deel 1
De Proxmark3 is een RFID / NFC Reader/Writer. De Proxmark3 is een van de krachtigste apparaten om onderzoek te doen naar RFID / NFC systemen. Mijn kit is onlangs uitgebreid met de nieuwste Proxmark3, De Proxmark3 V2 Developper Kit (Proxmark3 RDV 2). In deze post gaan we een kijkje nemen naar het apparaat en de setup zodat je een goed beeld krijgt van zijn veelzijdigheid en snel up-and-running bent als je er een gaat kopen. En dat ga je zeker doen na het lezen van deze post (en als je RFID interessant vindt).
De Proxmark3 is een open-source RFID / NFC Sniffer, reader en writer (cloner) welke ontwikkeld is door Jonathan Westhues. De Proxmark is relatief klein (ongeveer zo groot als een spel kaarten) en kan als een lezer fungeren. Maar ook kan hij een transactie afluisteren tussen een andere lezer en een tag of hij kan zich voordoen als een tag. De Proxmark3 kan omgaan met lage en hoge frequenties en is compatible met:
- 125 kHz (Low Frequency RFID)
- 134 kHz (Low Frequency RFID)
- 127.66 kHz (Low Frequency RFID)
- 13.56 Mhz (High Frequency NFC)
De Proxmark3 is niet compatible met de Ultra High Frequency RFID band (UHF 860MHz – 960 MHz) en de Super High Frequency RFID band (SHF 2.45 GHz). Wil je meer basisinformatie over RFID lees dan mijn “Radio Frequency IDentification post”.
Laten we beginnen met het feit dat de Proxmark3 geen apparaat is voor beginners. Enige kennis van elektrotechniek, embedded programmeren, RF designs en ISO standaarden komt absoluut van pas. Out-of-the-box kan de Proxmark3 al aardig veel zoals LF en HF signalen afluisteren en verschillende tag’s decoderen. Om echter alles uit de Proxmark3 te halen is het noodzakelijk om zelf de firmware te tweaken naar je eigen wensen.
De Proxmark3 RDV 2 ziet er (in de casing) als volgt uit:

De volledige kit wordt geleverd met:
- Proxmark3 Main Board (1)
- LF (2) & HF (3) Antenne
- MMCX Antenne kabels (4)
- Micro-USB kabel (5)
- Proxmark PCB Protection Case (6)
- Diverse tags, waaronder MiFare, HID, EM4X en T5577 varianten (7 t/m 11)
- Koperen bussen en schroeven (12)

Zoals je al door hebt is de Proxmark3 een zelfbouw pakket. Dat wil zeggen dat je de keuze moet maken tussen de LF antenne, de HF antenne of beide en deze moet monteren. De casing voor de Proxmark wordt met schroeven gemonteerd. Het is overigens wel ontzettend belangrijk om de casing te gebruiken. De PCB (Printed Circuit Board) is snel beschadigd zonder casing en ook enorm vatbaar voor elektromagnetische straling. Deze straling wordt door de casing ook tegengehouden.
De Proxmark3 RDV 2 is de opvolger van de Proxmark3 V1 welke op zijn beurt de opvolger is van de Mark2 die weer een opvolger was van de eerste “Prox”. Ook zijn er zogenaamde Proxmark3 Easy boards te verkrijgen welke een stuk goedkoper zijn. De Easy boards beschikken over andere, minder krachtige hardware. Er zijn ook Proxmark3 clones die nog een stuk slechter performen. Mocht je kiezen voor een Proxmark3 Easy koop hem dan bij Elechouse, RFXSecure, Lab401, Ryscc zodat je zeker geen clone model krijgt. Als geld geen rol speelt koop dan een Proxmark3 RDV 2. Je krijgt dan de beste hardware en een goed getest en ontwikkeld model.


De Proxmark3 Hardware
Laten we eens wat dieper inzoomen op de hardware. Dit zijn de belangrijkste kenmerken:
- CPU:
ARM, 256kB (AT91SAM7S256) of 512kB (AT91SAM7S512) flash geheugen en 64kB RAM - FPGA (Field-Programmable Gate Array):
Xilinx Spartan-II - Twee separate RF circuits voor HF en LF
- Power:
Via USB poort - Connectivity:
Via mini-USB poort - User interface:
1 button, 4 LEDs.
Zoals al verteld zijn de hardware en software volledig open-source. Aangezien de Eagle PCB designs, gerber files etc. vrij verkrijgbaar zijn kun je ervoor kiezen om zelf je Proxmark3 te bouwen. Je kunt er ook voor kiezen om een kant-en-klare Proxmark3 te kopen van eerder genoemde stores (Elechouse, RFXSecure, Lab401, Ryscc).
De besproken ondersteuning voor de lage frequentie (125 kHz-134 kHz) en de hoge frequentie (13,56 MHz) is mogelijk door de twee parallelle antennecircuits die geïmplementeerd zijn en die onafhankelijk van elkaar kunnen worden gebruikt. Beide circuits zijn verbonden met een 4-pins Hirose-connector die functioneert als een interface met een externe lusantenne. Om als een PCD (reader) of writer te werken, is het mogelijk om de antennespoelen met de juiste frequentie te besturen. Dit is niet nodig wanneer de Proxmark wordt gebruikt voor sniffing of wanneer een tag wordt geëmuleerd. In dat geval wordt het veld gegenereerd door een lezer.
Het signaal van de antenne wordt door een Field Programmable Gate Array (FPGA) geleid. Deze FPGA stuurt het signaal naar de microcontroller en kan worden gebruikt om enkele filterbewerkingen uit te voeren voordat het opnieuw wordt verzonden. Dankzij de software-implementatie kan de Proxmark de communicatie tussen een RFID-tag en een lezer afluisteren, een tag emuleren en een lezer emuleren.
Ondanks de standaard hardware-ondersteuning voor deze bewerkingen, moet de daadwerkelijke verwerking van het gedigitaliseerde signaal en de (de)modulatie voor elke specifieke toepassing worden geprogrammeerd.

Analog to Digital Converter / ADC
Het analoge signaal dat afkomstig is van de antennes wordt naar een 8-bit analoog / digitaal-converter gestuurd. Dit levert 8 parallelle uitvoer bits op die de huidige spanning representeert die door de antennes ontvangen is.
Field Programmable Gate Array / FPGA
De 8 uitvoerpinnen van de ADC zijn verbonden met 8 pinnen van de Field Programmable Gate Array (FPGA). Een FPGA heeft een groot voordeel ten opzichte van een normale microcontroller in de zin dat het hardware emuleert. Een hardware omschrijving kan worden gecompileerd en geflashed in een FPGA. Omdat de FPGA ontzettend snel kan rekenen is het werken met een FPGA sneller dan met normale microcontroller. De FPGA kan daarom gezien worden als “dynamische hardware”. Het is mogelijk om een hardware-ontwerp te maken en dit in het geheugen van de FPGA te flashen. De FPGA heeft twee hoofdtaken. De eerste taak is om het ontvangen signaal van de ADC te demoduleren en dit door te sturen als een digitaal gecodeerd signaal naar de microcontroller. Afhankelijk van de taak kan dit de demodulatie zijn van een 100% Amplitude Shift Keying (ASK) signaal van de lezer, of van de load modulatie van een kaart. De coderingsschema’s die worden gebruikt om het signaal aan de ARM te communiceren, zijn “Modified Miller” voor de lezer en “Manchester-codering” voor het kaartsignaal. De tweede taak is het moduleren van een gecodeerd signaal dat wordt ontvangen van de ARM in het veld van de antenne. Dit kan zowel de codering van reader berichten of van tag berichten zijn.
Microcontroller / ARM
De microcontroller ontvangt de digitale gecodeerde signalen van de FPGA en decodeert ze. Eerst decodeert het de samples ontvangen van de FPGA. Deze voorbeelden worden opgeslagen in de buffer met Direct Memory Access (DMA). De samples zijn binaire reeksen die aangeven of het signaal hoog of laag was. De ARM software probeert deze samples te decoderen. Wanneer de Proxmark3 zich in de sniffingmodus bevindt, gebeurt dit tegelijkertijd voor zowel “Manchester” als “Modified Miller”. Wanneer een van de decodeerprocedures een geldig bericht retourneert, wordt dit bericht opgeslagen in een andere buffer, de BigBuf. Vervolgens worden beide decoderingsprocedures ingesteld op de “not synced” status. De BigBuf is beperkt tot het beschikbare geheugen op de ARM. Naast de samples slaat de buffer ook enkele tijdelijke gegevens op die nodig zijn voor de verwerking. Wanneer de BigBuf-buffer vol is, keert de functie normaal terug. Er is een nieuwe functieoproep van de cliënt nodig om de BigBuf-inhoud naar de computer te kopiëren. De BigBuf is ideaal, en wordt primair gebruikt voor protocolonderzoek. Elk ontvangen bericht wordt opgeslagen in deze buffer. Wanneer een kaart wordt geëmuleerd of wanneer de Proxmark wordt gebruikt als een lezer, kan de BigBuf worden gebruikt om statusberichten of protocoluitzonderingen op te slaan.
LED’s
Zoals je op bovenstaande afbeelding kunt zien beschikt de Proxmark3 over een aantal LED’s.
Als je het apparaat inschakelt zal de STD oplichten als er geen batterij aanwezig is of als de batterij helemaal vol is. De CHR zal snel knipperen als er geen batterij aanwezig is. LED A-D zullen eenmaal knipperen. Uiteraard moet de Power LED blijven branden. Als alle LED’s branden is er een probleem met de hardware (of foute firmware).
LED A-D zijn functie LED’s die knipperen bij een speciale functie.
LED C&D geven een indicatie dat gegevens opgeslagen worden naar bank1
LED C&B geven een indicatie dat de Proxmark3 geëmuleerd wordt met gegevens uit bank1
LED A&D geven een indicatie dat gegevens opgeslagen worden naar bank2
LED A&B geven een indicatie dat de Proxmark3 geëmuleerd wordt met gegevens uit bank2
Functie button
Met de functie button is een pushbutton en bedoeld om de Proxmark3 in verschillende modussen te plaatsen om zo verschillende functies uit te voeren. Een aantal van deze modussen zijn:
Let op: niet alle modussen zijn mogelijk met de default firmware. Vaak is speciale firmware nodig om deze modussen beschikbaar te maken. Een speciale Windows + Linux Flash utility alsmede een aantal firmware packages zijn te downloaden vanaf de “ExploitAgency GitHub” pagina.
Standalone Emulation
In deze mode gaan we een tag emuleren en na emulatie zal de Proxmark3 in emulatie mode staan en dus fungeren als de tag.
- Hou de functiebutton ingedrukt tot alle LED’s knipperen
- LED C&D blijven branden
- Hou een tag bij de antenne
- De tag wordt opgeslagen in bank0 en de Proxmark3 zal de kaart gaan emuleren
- LED B, C en A blijven branden
Standalone Cloning
Dit is een vervolg van hierboven genoemde stap. In deze modus kopiëren we de info van bank0 naar een beschrijfbare tag:
- Hou een schrijfbare tag bij de antenne
- Hou de functiebutton ingedrukt om het clonen te starten
- LED A gaat uit en wanneer LED B uit gaat laat je de functiebutton los
Standalone LF Emulation
In deze mode gaan we een LF tag emuleren en na emulatie zal de Proxmark3 in emulatie mode staan en dus fungeren als de tag.
- Hou de functiebutton lang ingedrukt
- Een aantal LED’s gaan knipperen. Wacht tot alleen LED C brand
- Hou de functiebutton nogmaals lang ingedrukt tot ook LED D&C aan zijn
- Hou een tag bij de antenne
- LED D gaat uit als de kaart is gelezen
- Druk kort op de functiebutton
- LED B&C zijn nu aan en de Proxmark3 emuleert de kaart
Standalone LF Cloning
Dit is een vervolg van hierboven genoemde stap. In deze modus kopiëren we de info van bank0 naar een beschrijfbare LF tag:
- Hou de functiebutton ingedrukt tot LED C&A branden
- Plaats een beschrijfbare LF tag (zoals de T5577) boven de antenne
- Laat de functiebutton los
- LED A&D gaan knipperen en vervolgens gaan ze uit zodat alleen LED C blijft branden
- Het cloning process is nu klaar
Proxbrute (Brute-Force)
In deze mode staat de Proxmark3 in Brute Force mode. Deze mode brute-forced de sleutelruimte van de gescande kaart en verlaagt de hexadecimale waarden totdat een nieuwe geldige kaart gevonden is.
- Hou de functiebutton ingedrukt tot de LED’s flashen
- LED C blijft aan
- Druk nu kort op de functiebutton zodat de C&B LED’s aangaan
- Druk normaals kort op de functiebutton zodat alleen LED A aan is
- Hou nu de button ingedrukt tot LED A&D aan zijn
- Scan een geldige tag
- Druk kort op de functiebutton tot LED’s B&C&A aan zijn
HID1000 Proxbrute (Brute-Force)
In deze mode staat de Proxmark3 in HID1000 Brute Force mode. Deze mode brute-forced de Proxmark3 de sleutelruimte van de gescande kaart en verlaagt de kaartnummers.
- Hou de functiebutton ingedrukt tot de LED’s flashen
- LED C blijft aan
- Druk nu kort op de functiebutton zodat de A&C LED’s aangaan
- Hou nu de button ingedrukt tot LED A&C&D aan zijn
- Scan een geldige tag
- Druk kort op de functionbutton tot LED’s B&C&A aan zijn
Matty’s Mifare1k Standalone emulation/cloning
In deze mode staat de Proxmark3 in de emulatie / clone stand voor Mifare kaarten en kunnen deze dus geëmuleerd en/of gecloned worden.
- Hou een kaart boven de antenne
- Hou de button lang ingedrukt
- LED A&D zijn en aan en LED B knippert als de kaart nog steeds bij de antenne wordt gehouden
- Wacht tot LED A&D uit gaan en B blijft branden
- De Mifare kaart wordt nu geëmuleerd
- Druk nogmaals op de functiebutton (kort) om de Mifare kaart te clonen naar een Chinese magic card
- Als LED C aan blijft dan zijn de keys niet gevonden en kan de kaart niet worden geëmuleerd.
Power Switch
Met de power switch wordt de Proxmark gemakkelijk in- en uit geschakeld.
J-Link
De J-Link is een JTAG / SWD-emulator voor ARM-gebaseerde microcontrollers van Segger. De J-Link is een gepatenteerde Flash-breakpoint software/ debugger om meerdere breakpoints in Flash in te stellen tijdens het uitvoeren van een ARM-apparaat dat doorgaans wordt gehinderd door de beperkte beschikbaarheid van hardware breakpoints. Mocht (je eigen) firmware je Proxmark3 ontoegankelijk maken dan kun je deze weer online krijgen via de J-Link aansluiting.
De J-Link aansluiting bestaat uit de volgende 6 bussen:
- TMS – De JTAG Mode Set Input van de doel-CPU. Het wordt aanbevolen dat deze pin in een “up state” te zetten.
- TDI – De JTAG Data Input van de doel-CPU. Het wordt aanbevolen dat deze pin in een “defined state” wordt gezet.
- TDO – De JTAG Data Output van de doel-CPU.
- TCK – Het JTAG Clock Signal van de doel-CPU. Het wordt aanbevolen dat deze pin in een “defined state” wordt gezet.
- GND – De ground / 0 aansluiting.
- 3.3 – De 3.3V aansluiting

Batterij
Op de achterkant van de Proxmark3 is een battery socket aanwezig waardoor de Proxmark3 voorzien kan worden van een batterij. Als de Proxmark3 voorzien wordt van een 1000 mAh batterij zou deze hierop 5 uur stand-alone kunnen draaien.
Tenslotte kunnen we nog even kijken met welke RFID tags de Proxmark3 allemaal overweg kan. Onderstaande lijst is niet de complete lijst maar bevat de bekendste RFID tags. Er zijn veel meer RFID tags met ieder hun eigen kenmerken. Alle RFID tags zijn in deze lijst te vinden. De Proxmark3 kan met het gros van deze lijst overweg. Vaak zal er zelf op maat gemaakte firmware worden geschreven voor de Proxmark3 maar de mogelijkheden zijn aanwezig. Anyway, hierbij de lijst met compatible tags:

Einde Proxmark3 Deel 1
Op dit moment heb je een goed beeld van de Proxmark3. Het wordt nu tijd om hem aan te gaan sluiten en om ermee te gaan werken. En dat gaan we in deel 2 doen!