13 KiB
Pentesting RFID
{{#include ../../banners/hacktricks-training.md}}
Giriş
Radyo Frekansı Tanımlama (RFID), en popüler kısa menzilli radyo çözümüdür. Genellikle bir varlığı tanımlayan bilgileri depolamak ve iletmek için kullanılır.
Bir RFID tag kendi gücüne dayanabilir (aktif), örneğin gömülü bir pil; ya da okuyucu anteninden alınan alınan radyo dalgalarından indüklenen akım ile enerjilenebilir (pasif).
Sınıflar
EPCglobal RFID tag'lerini altı kategoriye ayırır. Her kategoriye ait bir tag, önceki kategoride listelenen tüm yeteneklere sahiptir; bu da geriye dönük uyumluluk sağlar.
- Class 0 tag'ler pasif tag'lerdir ve UHF bantlarında çalışır. Üretici tarafından fabrikada önceden programlanırlar. Sonuç olarak, belleklerinde depolanan bilgileri değiştiremezsiniz.
- Class 1 tag'ler ayrıca HF bantlarında çalışabilir. Ayrıca, üretim sonrası sadece bir kez yazılabilirler. Birçok Class 1 tag, aldıkları komutların cyclic redundancy checks (CRC'ler) işlemini de gerçekleştirebilir. CRC'ler komutların sonuna eklenen birkaç ekstra bayttır ve hata tespiti için kullanılır.
- Class 2 tag'ler birden çok kez yazılabilir.
- Class 3 tag'ler, mevcut sıcaklık veya tag'in hareketi gibi çevresel parametreleri kaydedebilen gömülü sensörler içerebilir. Bu tag'ler yarı-pasifdir; çünkü entegre bir pil gibi gömülü bir güç kaynağı bulunsa da, diğer tag'lerle veya okuyucularla kablosuz iletişimi başlatamazlar.
- Class 4 tag'ler aynı sınıftaki diğer tag'larla iletişimi başlatabilir, bunlar aktif tag'lerdir.
- Class 5 tag'ler diğer tag'lara güç sağlayabilir ve tüm önceki tag sınıflarıyla iletişim kurabilir. Class 5 tag'ler RFID okuyucu olarak hareket edebilir.
RFID Tag'lerde Depolanan Bilgiler
Bir RFID tag'in belleği genellikle dört tür veri depolar: tag’in iliştirildiği varlığı tanımlayan kimlik verileri (bu veriler banka hesapları gibi kullanıcı tanımlı alanları içerir); varlık hakkında daha fazla bilgi sağlayan ek veriler; tag’in dahili konfigürasyonu için kullanılan kontrol verileri; ve tag’in üretici verileri, bunlar tag’in Unique Identifier (UID) ve üretim, tip ve satıcıyla ilgili detayları içerir. İlk iki veri türünü tüm ticari tag'lerde bulursunuz; son iki tür tedarikçiye göre değişebilir.
ISO standardı, tag'in ait olduğu nesne türünü gösteren bir kod olan Application Family Identifier (AFI) değerini belirler. ISO tarafından belirtilen başka önemli bir kayıt da, kullanıcı verilerinin mantıksal organizasyonunu tanımlayan Data Storage Format Identifier(DSFID)dır.
Çoğu RFID güvenlik kontrolü, her kullanıcı bellek bloğunda ve AFI ile DSFID değerlerini içeren özel kayıtlarda okuma veya yazma işlemlerini kısıtlayan mekanizmalar içerir. Bu kilitleme mekanizmaları, kontrol belleğinde depolanan verileri kullanır ve tedarikçi tarafından önceden yapılandırılmış varsayılan parolalar içerir; ancak tag sahiplerinin özel parolalar yapılandırmasına da izin verir.
Düşük ve Yüksek frekanslı tag'lerin karşılaştırması

Düşük Frekanslı RFID Tag'ler (125kHz)
Düşük frekanslı tag'ler genellikle yüksek güvenlik gerektirmeyen sistemlerde kullanılır: bina erişimi, interkom anahtarları, spor salonu üyelik kartları vb. Daha yüksek menzil sayesinde ücretli otoparklar için kullanışlıdırlar: sürücünün kartı okuyucuya yakınlaştırması gerekmez, çünkü kart daha uzaktan tetiklenir. Aynı zamanda düşük frekanslı tag'ler çok ilkel olup düşük veri aktarım hızına sahiptir. Bu nedenle bakiye tutma ve kriptografi gibi karmaşık iki yönlü veri aktarımı mümkün değildir. Düşük frekanslı tag'ler yalnızca kısa ID'lerini herhangi bir kimlik doğrulama olmadan iletir.
Bu cihazlar pasif RFID teknolojisine dayanır ve 30 kHz ile 300 kHz aralığında çalışır, ancak genellikle 125 kHz ile 134 kHz kullanılır:
- Uzun Menzil — daha düşük frekans daha yüksek menzil demektir. Yaklaşık bir metre mesafeden çalışan bazı EM-Marin ve HID okuyucular vardır. Bunlar genellikle otoparklarda kullanılır.
- İlkel protokol — düşük veri aktarım hızı nedeniyle bu tag'ler yalnızca kısa ID'lerini iletebilir. Çoğu durumda veriler doğrulanmaz ve herhangi bir şekilde korunmaz. Kart okuyucunun menziline girdiği anda ID'sini iletmeye başlar.
- Düşük güvenlik — Bu kartlar kolayca kopyalanabilir veya protokolün ilkel yapısı nedeniyle bir başkasının cebinden bile okunabilir.
Popüler 125 kHz protokoller:
- EM-Marin — EM4100, EM4102. CIS bölgesinde en popüler protokol. Sadelik ve kararlılığı nedeniyle yaklaşık bir metreden okunabilir.
- HID Prox II — HID Global tarafından tanıtılan düşük frekanslı protokol. Bu protokol batı ülkelerinde daha popülerdir. Daha karmaşıktır ve bu protokol için kartlar ve okuyucular nispeten pahalıdır.
- Indala — Motorola tarafından tanıtılan ve daha sonra HID tarafından satın alınan çok eski bir düşük frekans protokolü. Önceki iki protokole göre sahada karşılaşma olasılığınız daha düşüktür çünkü kullanım dışına çıkmaktadır.
Aslında çok daha fazla düşük frekans protokolü vardır. Ancak hepsi fiziksel katmanda aynı modülasyonu kullanır ve bir şekilde yukarıda listelenenlerin bir varyasyonu olarak kabul edilebilir.
Saldırı
Bu Tag'lere Flipper Zero ile saldırabilirsiniz:
{{#ref}} flipper-zero/fz-125khz-rfid.md {{#endref}}
Yüksek Frekanslı RFID Tag'ler (13.56 MHz)
Yüksek frekanslı tag'ler, kriptografi, geniş iki yönlü veri aktarımı, kimlik doğrulama vb. gerektiğinde daha karmaşık okuyucu-tag etkileşimi için kullanılır. Genellikle banka kartları, toplu taşıma ve diğer güvenli geçişlerde bulunur.
13.56 MHz yüksek frekans tag'leri bir dizi standart ve protokoldür. Genellikle NFC olarak adlandırılırlar, ancak bu her zaman doğru değildir. Fiziksel ve mantıksal düzeylerde kullanılan temel protokol seti ISO 14443'tür. Üst düzey protokoller ve alternatif standartlar (ör. ISO 19092) buna dayanır. Birçok insan bu teknolojiyi 13.56 MHz frekansında çalışan cihazlar için kullanılan bir terim olan Near Field Communication (NFC) olarak adlandırır.

Basitçe söylemek gerekirse, NFC'nin mimarisi şöyle çalışır: iletim protokolü kartları üreten şirket tarafından seçilir ve düşük seviyeli ISO 14443'e dayanarak uygulanır. Örneğin, NXP kendi yüksek seviyeli iletim protokolünü Mifare olarak icat etti. Ancak alt seviyede, Mifare kartları ISO 14443-A standardına dayanır.
Flipper hem düşük seviyeli ISO 14443 protokolüyle hem de Mifare Ultralight veri aktarım protokolü ve banka kartlarında kullanılan EMV ile etkileşime girebilir. Mifare Classic ve NFC NDEF desteği eklemek üzerinde çalışıyoruz. NFC'yi oluşturan protokoller ve standartlar hakkında kapsamlı bir inceleme ayrı bir makaleyi hak ediyor; bunu ileride yayınlamayı planlıyoruz.
ISO 14443-A standardına dayanan tüm yüksek frekans kartlarının benzersiz bir çip ID'si vardır. Bu, kartın seri numarası gibi davranır; bir ağ kartının MAC adresine benzer. Genellikle UID 4 veya 7 bayt uzunluğundadır, ancak nadiren 10'a kadar çıkabilir. UID'ler bir sır değildir ve kolayca okunabilir, bazen kartın üzerine bile basılıdır.
Birçok erişim kontrol sistemi UID'ye dayanarak kimlik doğrulaması yapar ve erişim verir. Bazen bu, RFID tag'ler kriptografiyi desteklese bile gerçekleşir. Böyle kötü kullanım, güvenlik açısından onları aptal 125 kHz kartlar seviyesine düşürür. Sanal kartlar (ör. Apple Pay) telefon sahiplerinin ödeme uygulamalarıyla kapıları açmamaları için dinamik UID kullanır.
- Düşük menzil — yüksek frekanslı kartlar özellikle okuyucuya yakın tutulacak şekilde tasarlanmıştır. Bu aynı zamanda kartı yetkisiz etkileşimlerden korumaya yardımcı olur. Elde ettiğimiz maksimum okuma menzili yaklaşık 15 cm idi ve bu özel yapılmış yüksek menzilli okuyucularla elde edildi.
- Gelişmiş protokoller — 424 kbps'e kadar veri aktarım hızları, kriptografi, veri aktarımı vb. sağlayan tam özellikli iki yönlü veri aktarımına izin veren karmaşık protokollere olanak tanır.
- Yüksek güvenlik — yüksek frekanslı temassız kartlar akıllı kartlardan hiçbir şekilde aşağı değildir. AES gibi kriptografik olarak güçlü algoritmaları destekleyen ve asimetrik kriptografiyi uygulayan kartlar vardır.
Saldırı
Bu Tag'lere Flipper Zero ile saldırabilirsiniz:
{{#ref}} flipper-zero/fz-nfc.md {{#endref}}
Veya proxmark kullanarak:
{{#ref}} proxmark-3.md {{#endref}}
MiFare Classic offline stored-value tampering (broken Crypto1)
Bir sistem parasal bakiyeyi doğrudan bir MiFare Classic karta kaydederse, genellikle bunu manipüle edebilirsiniz çünkü Classic NXP'nin kullanımdan kalkmış Crypto1 şifresini kullanır. Crypto1 yıllardır kırılmış durumdadır; bu, sektör anahtarlarının kurtarılmasına ve kart belleğinin tam okuma/yazılmasına commodity donanımla (ör. Proxmark3) izin verir.
Uçtan uca iş akışı (soyutlanmış):
- Orijinal kartı dump'layın ve anahtarları kurtarın
# Attempt all built-in Classic key recovery attacks and dump the card
hf mf autopwn
Bu genellikle sector keys (A/B)'yi kurtarır ve client dumps folder'da bir full-card dump oluşturur.
- value/integrity alanlarını tespit edin ve anlayın
- Orijinal karta yasal top-up'lar yapın ve birden çok dump alın (önce/sonra).
- Bakiye ve herhangi bir integrity alanını temsil eden değişen blok/byte'ları belirlemek için iki dump'ın diff'ini alın.
- Birçok Classic deployment'ı ya yerel "value block" encoding'ini kullanır ya da kendi checksums'larını uygular (ör. bakiye ile başka bir alanın ve bir sabitin XOR'u). Bakiyeyi değiştirdikten sonra integrity byte'larını yeniden hesaplayın ve tüm duplicated/complemented alanların tutarlı olduğundan emin olun.
- Değiştirilmiş dump'ı writable “Chinese magic” Classic tag'ine yazın
# Load a modified binary dump onto a UID-changeable Classic tag
hf mf cload -f modified.bin
- Terminallerin kartı tanıması için orijinal UID'yi klonlayın
# Set the UID on a UID-changeable tag (gen1a/gen2 magic)
hf mf csetuid -u <original_uid>
- Terminallerde kullanım
Kart üzerindeki bakiye ve UID'ye güvenen okuyucular, değiştirilmiş kartı kabul edecektir. Saha gözlemleri, birçok kurulumun bakiyeleri alan genişliğine göre sınırlandırdığını gösteriyor (ör. 16-bit fixed-point).
Notlar
- Eğer sistem native Classic value blocks kullanıyorsa, formatı hatırlayın: value (4B) + ~value (4B) + value (4B) + block address + ~address. Tüm parçalar eşleşmelidir.
- Basit checksums içeren özel formatlarda, differential analysis firmware'i tersine çevirmeden bütünlük fonksiyonunu çıkarmanın en hızlı yoludur.
- Sadece UID değiştirilebilir etiketler ("Chinese magic" gen1a/gen2) block 0/UID yazmaya izin verir. Normal Classic kartların UID'leri salt okunurdur.
Pratik Proxmark3 komutları için bkz:
{{#ref}} proxmark-3.md {{#endref}}
Taşınabilir HID MaxiProx 125 kHz Mobil Kloner Yapımı
Red-team operasyonları sırasında HID Prox® rozetlerini toplamak için uzun menzilli, pil ile çalışan bir çözüme ihtiyacınız varsa, duvara monte edilmiş HID MaxiProx 5375 okuyucusunu sırt çantasına sığan, kendi kendine yeten bir klonere dönüştürebilirsiniz. Tam mekanik ve elektriksel anlatım burada mevcuttur:
{{#ref}} maxiprox-mobile-cloner.md {{#endref}}
References
- https://blog.flipperzero.one/rfid/
- Let's Clone a Cloner – Part 3 (TrustedSec)
- NXP statement on MIFARE Classic Crypto1
- MIFARE security overview (Wikipedia)
- NFC card vulnerability exploitation in KioSoft Stored Value (SEC Consult)
{{#include ../../banners/hacktricks-training.md}}