# Proxmark3
Proxmark3, RFID (Radyo Frekansı Tanımlama) güvenlik analizi, araştırma ve geliştirme için çok yönlü bir donanım aracıdır. Bu araç, yüksek frekanslı (13.56 MHz) ve düşük frekanslı (125/134 kHz) yakınlık kartlarını destekler ve kullanıcılara RFID protokollerinin çoğunu okuma, taklit etme, karıştırma yapma ve kaba kuvvet saldırıları gerçekleştirme gibi imkanlar sunar.
Başlangıçta Jonathan Westhues tarafından oluşturulan ve açık kaynaklı donanım olarak yayınlanan proje, daha sonra orijinal versiyona kıyasla hem donanımı hem de yazılımı önemli ölçüde geliştiren bir geliştirici topluluğu tarafından alınmıştır. Proxmark3, RFID erişim kontrol sistemlerini araştıran ve projeyi kendi araştırmalarında kullanırken genişleten ve sürdüren büyük bir güvenlik araştırmacıları topluluğunu bir araya getirdi. Orijinal Proxmark3 donanım platformu, ticari olanlar da dahil olmak üzere yeni cihaz sürümleri için temel oluşturmuştur.


## Teknik Özellikler.
Proxmark3, yüksek performanslı düşük seviyeli analog sinyal işleme, modülasyon ve demodülasyonun uygulanmasına olanak tanıyan sahada programlanabilir kapı dizisi (FPGA) teknolojisine dayanmaktadır. Ayrı bir mikrodenetleyici demodüle edilmiş çerçeveleri işler. Bu tür bir kurulum potansiyel olarak herhangi bir RFID protokolünün Proxmark3'ün yazılımında uygulanmasına izin verir.


### Antenler.
Düşük frekanslar (LF) 125 kHz ve 134 kHz ve yüksek frekans (HF) 13.56 MHz için 2 bağımsız anten devresi kullanılır. Başlangıçta, her iki anten de zaman zaman güvenilmez olan ortak bir 4 pinli Hirose USB konektörü ile bağlandı. Daha sonraki revizyonlarda her anten için ayrı bir konektör kullanılması tercih edilmiştir.


### ADC.
8-bit Analogdan dijitale dönüştürücü (ADC) anten devresinden bir analog sinyal alır, bunu dijitalleştirir ve dijital sinyali FPGA'ya verir.


### FPGA.
Sahada programlanabilir kapı dizisi, hem CPU'dan veri iletirken düşük seviyeli modülasyonu hem de bir ADC'den sinyal alırken demodülasyonu yapar. On-off keying (OOK), amplitude-shift keying (ASK), vb. gibi çeşitli modülasyonları işleyebilir. FPGA iki şekilde çalışır: kartlar için elektromanyetik alan üreten okuyucu olarak veya okuyucu alanını bekleyen kart olarak.


### CPU.
ARM mikrodenetleyici protokol kısmından sorumludur. Çerçeveleri kodlar ve kodlarını çözer (Manchester, Miller, vb.) ve daha gelişmiş işlevleri yerine getirir. CPU, sinyal işleminden sonra FPGA'ya geri yanıt verebilir, böylece taşıma katmanını uygular. CPU ayrıca PC istemci uygulaması ile USB iletişimini de yönetir


### Flash Hafıza.
Flash bellek aygıt yazılımını saklamak için kullanılır. Proxmark3'ün ilk sürümlerinde yalnızca 64 kB flash bellek vardı, ancak aygıt yazılımı geliştikçe bu bellek azaldı ve 512 kB'lık sürümler ortaya çıktı.
Ürün yazılımının kendisi ARM kodu ve bir FPGA görüntüsünden (ARM tarafından yüklenen) oluşur. FPGA, ARM ile ya SPI portu (ARM master'dır) ya da genel SSP aracılığıyla iletişim kurar. SPI, FPGA yapılandırması için kullanılır. SSP, hava üzerinden gönderilen veriler için kullanılır.


## Yazılım.
Proxmark3'ün geliştirildiği dönemde SDR erişilmesi zor bir teknolojiydi. Bu nedenle bölünmüş bir FPGA/MCU mimarisi tasarlanmıştır: bir FPGA modülasyon/demodülasyon gibi düşük seviyeli işlevleri yerine getirirken, bir mikrodenetleyici yüksek seviyeli işlevlerle (komut satırı arayüzü, protokol kodlama/kod çözme vb.) ilgilenir. FPGA/MCU mimarisi teknik olarak eski olsa da, donanım revizyonları boyunca değişmeden kalmıştır. Bu, farklı sürümlerin aynı ürün yazılımını kullanmasına izin verdi ve geniş bir kod tabanıyla sonuçlandı. Ancak zamanla Proxmark3 kod tabanı giderek parçalandı ve donanım dengesizlikleri ortaya çıkmaya başladı. Sonuç olarak, bazı uygulamalar kodu iyileştirip optimize ederken (örneğin Proxmark3 RDV4), diğerleri orijinal Proxmark3 kod tabanını kullanmaktadır (örneğin Proxmark3 EVO).
Proxmark3 yazılımı üç bölüme ayrılmıştır:
  - PC istemcisi (uygulama katmanı) - Proxmark3 işlevlerini çağıran PC uygulaması. Verileri görüntülemek, sinyali analiz etmek ve Proxmark3'ü yönetmek için kullanılır. Daha sonra, daha yeni Proxmark3 sürümlerinde Bluetooth bağlantılı cihazı kontrol etmek için bir mobil uygulama kullanılabilir.
  - CPU ürün yazılımı (taşıma katmanı) - Protokol mesajlarını, formatlarını ve kuyruklarını yöneten ARM ürün yazılımı. Ayrıca CLI araçları da sağlar.
  - FPGA firmware (fiziksel katman) - Xilinx Spartan II firmware DSP'den sorumludur: sinyallerin modüle edilmesi/demodüle edilmesi.
Eski aygıt yazılımı, istemciyi Proxmark3'e bağlamak için USB HID protokolünü kullanıyordu. Alınan örnekleri gerçek zamanlı olarak PC'ye aktarmak mümkün değildi. CPU istemciden bir komut alıyor, komutu uyguluyor ve sonucu bellek tamponunda saklıyordu. İstemci, CPU'nun arabelleğe aldığı verileri almak için yeni bir komut göndermek zorundaydı. Yeni ürün yazılımı sürümleri, istemci ile iletişim kurmak için CDC seri arayüzünü kullanır.
Sinyal örnekleri PC istemcisi tarafından işlenebilir, bilinmeyen sinyallerin analizine yardımcı olmak için alınan verileri çizebilir.


## Topluluk.
Proxmark3'ün 2007'de piyasaya sürülmesinden bu yana birçok RFID meraklısı işlevselliğini genişletmektedir. Proxmark3 topluluğu, ISO/IEC 14443-A standardını destekleyen aygıt yazılımının piyasaya sürülmesinden ve Mifare Classic'e yönelik başarılı saldırıların ortaya çıkmasından sonra hızlı bir büyüme kaydetti. Proxmark3 forumu (kayıt gereklidir), elektronik erişim kontrol (EAC) sistemlerine odaklanan güvenlik araştırmacılarının uğrak yeri olan RFID sistem güvenlik açığı tartışmaları için ana merkezlerden biri haline geldi. Proxmark topluluğu ayrıca diğer RFID araştırma araçlarının geliştiricilerine de ev sahipliği yapmaktadır: örneğin LibNFC. Topluluk Discord sunucusu daha sonra EAC sistem güvenliği konusunda hem metin hem de sesli tartışmalara ev sahipliği yapmak için oluşturuldu. 2021'in sonunda yaklaşık 3000 üyesi vardı.


## Araştırmalarda Proxmark3 kullanıldı.
Mifare Classic Kart saldırı çeşitleri:
  - Darkside attack (Nijmegen/Oakland Group, 2009)- kartın herhangi bir bölümünden en az bir anahtarın kurtarılması. Her kart için çalışır, uzun zaman alır. libnfc yığınından mfoc (Mifare Offline Cracker) aracını kullanma.
  - İç içe saldırı (nested)(Nicolas T. Curtois, 2009) - Bir sektör bilinen bir anahtarla şifrelenmişse, diğer sektörler kısa sürede kırılabilir. Bu saldırının güncellenmiş versiyonu da vardır - Hardnested. libnfc yığınından mfcuk (Mifare Classic universal toolkit) aracını kullanarak.
Mifare Classic :
  - MIFARE Classic'e yönelik pratik bir saldırı
Mifare DESFire :
  - Toplu taşımada kullanılan MIFARE DESFire EV1 akıllı kartına yönelik olası saldırıların araştırılması
HID iClass :
  - Karanlığın kalbi - HID iCLASS güvenliğinin keşfedilmemiş arka sularını keşfetmek
Hitag :
  - Gone in 360 Seconds: Hijacking with Hitag2
  - Megamos Kripto'yu Sökmek: Bir Araç İmmobilizerini Kablosuz Olarak Kilitleme
NFC :
  - NFC özellikli cep telefonlarına pratik saldırılar