12 KiB
Pentesting RFID
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
Introduction
**무선 주파수 식별(RFID)**는 가장 인기 있는 단거리 무선 솔루션입니다. 일반적으로 엔티티를 식별하는 정보를 저장하고 전송하는 데 사용됩니다.
RFID 태그는 자체 전원 공급 장치(능동형), 즉 내장 배터리에 의존하거나 수신된 전파에서 유도된 전류를 사용하여 판독 안테나로부터 전원을 받을 수 있습니다(수동형).
Classes
EPCglobal은 RFID 태그를 여섯 가지 범주로 나눕니다. 각 범주의 태그는 이전 범주에 나열된 모든 기능을 갖추고 있어 하위 호환성이 있습니다.
- Class 0 태그는 수동형 태그로 UHF 대역에서 작동합니다. 공급업체가 생산 공장에서 미리 프로그래밍합니다. 결과적으로, 이들의 메모리에 저장된 정보를 변경할 수 없습니다.
- Class 1 태그는 HF 대역에서도 작동할 수 있습니다. 또한, 생산 후 한 번만 쓸 수 있습니다. 많은 Class 1 태그는 수신한 명령의 순환 중복 검사(CRC)를 처리할 수 있습니다. CRC는 오류 감지를 위한 명령 끝에 있는 몇 바이트의 추가 데이터입니다.
- Class 2 태그는 여러 번 쓸 수 있습니다.
- Class 3 태그는 현재 온도나 태그의 움직임과 같은 환경 매개변수를 기록할 수 있는 내장 센서를 포함할 수 있습니다. 이러한 태그는 반수동형입니다. 왜냐하면 내장 전원 공급 장치(예: 통합 배터리)가 있지만 다른 태그나 판독기와 무선 통신을 시작할 수 없습니다.
- Class 4 태그는 동일한 클래스의 다른 태그와 통신을 시작할 수 있어 능동형 태그입니다.
- Class 5 태그는 다른 태그에 전원을 공급하고 이전 태그 클래스와 통신할 수 있습니다. Class 5 태그는 RFID 판독기로 작동할 수 있습니다.
Information Stored in RFID Tags
RFID 태그의 메모리는 일반적으로 네 가지 종류의 데이터를 저장합니다: 식별 데이터, 이는 태그가 부착된 엔티티를 식별합니다(이 데이터에는 사용자 정의 필드, 예: 은행 계좌가 포함됨); 보조 데이터, 이는 엔티티에 대한 추가 세부정보를 제공합니다; 제어 데이터, 태그의 내부 구성에 사용됩니다; 그리고 태그의 제조업체 데이터, 이는 태그의 고유 식별자(UID)와 태그의 생산, 유형, 및 공급업체에 대한 세부정보를 포함합니다. 상업용 태그의 경우 첫 번째 두 가지 데이터는 모두 포함되어 있으며, 마지막 두 가지는 태그의 공급업체에 따라 다를 수 있습니다.
ISO 표준은 태그가 속한 객체의 종류를 나타내는 코드인 응용 프로그램 가족 식별자(AFI) 값을 지정합니다. ISO에서 지정한 또 다른 중요한 레지스터는 데이터 저장 형식 식별자(DSFID)로, 이는 사용자 데이터의 논리적 구성을 정의합니다.
대부분의 RFID 보안 제어는 각 사용자 메모리 블록 및 AFI와 DSFID 값을 포함하는 특수 레지스터에 대한 읽기 또는 쓰기 작업을 제한하는 메커니즘을 가지고 있습니다. 이러한 잠금 메커니즘은 제어 메모리에 저장된 데이터를 사용하며 공급업체가 미리 구성한 기본 비밀번호를 사용하지만 태그 소유자가 사용자 정의 비밀번호를 구성할 수 있도록 허용합니다.
Low & High frequency tags comparison
Low-Frequency RFID Tags (125kHz)
저주파 태그는 종종 높은 보안이 필요하지 않은 시스템에서 사용됩니다: 건물 출입, 인터콤 키, 체육관 회원 카드 등. 더 높은 범위 덕분에 유료 주차에 사용하기 편리합니다: 운전자는 카드를 판독기에 가까이 가져갈 필요가 없으며, 더 멀리서도 작동합니다. 동시에 저주파 태그는 매우 원시적이며 데이터 전송 속도가 낮습니다. 이러한 이유로 잔액 유지 및 암호화와 같은 복잡한 양방향 데이터 전송을 구현할 수 없습니다. 저주파 태그는 인증 수단 없이 짧은 ID만 전송합니다.
이 장치는 수동형 RFID 기술에 의존하며 30 kHz에서 300 kHz 범위에서 작동하지만 일반적으로 125 kHz에서 134 kHz를 사용합니다:
- 긴 범위 — 낮은 주파수는 더 높은 범위로 이어집니다. EM-Marin 및 HID 판독기가 있으며, 최대 1미터 거리에서 작동합니다. 이러한 태그는 종종 주차장에서 사용됩니다.
- 원시 프로토콜 — 낮은 데이터 전송 속도로 인해 이러한 태그는 짧은 ID만 전송할 수 있습니다. 대부분의 경우 데이터는 인증되지 않으며 어떤 방식으로도 보호되지 않습니다. 카드가 판독기의 범위에 들어가면 ID를 전송하기 시작합니다.
- 낮은 보안 — 이러한 카드는 쉽게 복사되거나 심지어 다른 사람의 주머니에서 읽힐 수 있습니다.
인기 있는 125 kHz 프로토콜:
- EM-Marin — EM4100, EM4102. CIS에서 가장 인기 있는 프로토콜입니다. 단순성과 안정성 덕분에 약 1미터 거리에서 읽을 수 있습니다.
- HID Prox II — HID Global에서 도입한 저주파 프로토콜입니다. 이 프로토콜은 서구 국가에서 더 인기가 있습니다. 더 복잡하며 이 프로토콜에 대한 카드와 판독기는 상대적으로 비쌉니다.
- Indala — Motorola에서 도입한 매우 오래된 저주파 프로토콜로, 이후 HID에 인수되었습니다. 이전 두 프로토콜에 비해 실제로는 덜 자주 접할 수 있습니다.
실제로 저주파 프로토콜은 훨씬 더 많습니다. 그러나 이들은 모두 물리적 계층에서 동일한 변조를 사용하며, 나열된 프로토콜의 변형으로 간주될 수 있습니다.
Attack
You can attack these Tags with the Flipper Zero:
{% content-ref url="../todo/radio-hacking/flipper-zero/fz-125khz-rfid.md" %} fz-125khz-rfid.md {% endcontent-ref %}
High-Frequency RFID Tags (13.56 MHz)
고주파 태그는 암호화, 대규모 양방향 데이터 전송, 인증 등이 필요할 때 더 복잡한 판독기-태그 상호작용에 사용됩니다.
일반적으로 은행 카드, 대중 교통 및 기타 보안 패스에서 발견됩니다.
고주파 13.56 MHz 태그는 일련의 표준 및 프로토콜입니다. 일반적으로 NFC라고 불리지만 항상 정확한 것은 아닙니다. 물리적 및 논리적 수준에서 사용되는 기본 프로토콜 세트는 ISO 14443입니다. 고급 프로토콜과 대체 표준(예: ISO 19092)은 이를 기반으로 합니다. 많은 사람들이 이 기술을 **근거리 통신(NFC)**이라고 부르며, 이는 13.56 MHz 주파수에서 작동하는 장치에 대한 용어입니다.
간단히 말해, NFC의 아키텍처는 다음과 같이 작동합니다: 전송 프로토콜은 카드를 만드는 회사에 의해 선택되며 저수준 ISO 14443를 기반으로 구현됩니다. 예를 들어, NXP는 Mifare라는 자체 고급 전송 프로토콜을 발명했습니다. 그러나 낮은 수준에서 Mifare 카드는 ISO 14443-A 표준을 기반으로 합니다.
Flipper는 저수준 ISO 14443 프로토콜과 Mifare Ultralight 데이터 전송 프로토콜 및 은행 카드에서 사용되는 EMV와 상호작용할 수 있습니다. Mifare Classic 및 NFC NDEF에 대한 지원 추가 작업을 진행 중입니다. NFC를 구성하는 프로토콜 및 표준에 대한 철저한 검토는 별도의 기사로 다룰 가치가 있으며, 나중에 게시할 계획입니다.
ISO 14443-A 표준을 기반으로 하는 모든 고주파 카드는 고유한 칩 ID를 가지고 있습니다. 이는 카드의 일련 번호로 작용하며, 네트워크 카드의 MAC 주소와 유사합니다. 일반적으로 UID는 4 또는 7 바이트 길이이지만 드물게 10 바이트까지 갈 수 있습니다. UID는 비밀이 아니며 쉽게 읽을 수 있으며, 때때로 카드 자체에 인쇄되어 있습니다.
UID에 의존하여 인증 및 접근 권한 부여를 수행하는 많은 출입 통제 시스템이 있습니다. 때때로 RFID 태그가 암호화를 지원할 때도 이런 오용이 발생합니다. 이러한 오용은 보안 측면에서 125 kHz 카드 수준으로 떨어뜨립니다. 가상 카드(예: Apple Pay)는 동적 UID를 사용하여 전화 소유자가 결제 앱으로 문을 열지 않도록 합니다.
- 짧은 범위 — 고주파 카드는 판독기에 가까이 배치되어야 하도록 특별히 설계되었습니다. 이는 카드가 무단 상호작용으로부터 보호되는 데도 도움이 됩니다. 우리가 달성한 최대 읽기 범위는 약 15cm였으며, 이는 맞춤형 고범위 판독기를 사용한 경우입니다.
- 고급 프로토콜 — 데이터 전송 속도가 최대 424 kbps로 복잡한 프로토콜을 허용하며, 완전한 양방향 데이터 전송이 가능합니다. 이는 암호화, 데이터 전송 등을 가능하게 합니다.
- 높은 보안 — 고주파 비접촉 카드가 스마트 카드에 비해 열등하지 않습니다. AES와 같은 암호적으로 강력한 알고리즘을 지원하고 비대칭 암호화를 구현하는 카드가 있습니다.
Attack
You can attack these Tags with the Flipper Zero:
{% content-ref url="../todo/radio-hacking/flipper-zero/fz-nfc.md" %} fz-nfc.md {% endcontent-ref %}
Or using the proxmark:
{% content-ref url="../todo/radio-hacking/proxmark-3.md" %} proxmark-3.md {% endcontent-ref %}
References
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.