mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-22 20:53:37 +00:00
125 lines
12 KiB
Markdown
125 lines
12 KiB
Markdown
# Pentesting RFID
|
|
|
|
{% hint style="success" %}
|
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
|
|
|
<details>
|
|
|
|
<summary>Support HackTricks</summary>
|
|
|
|
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
|
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
|
|
|
</details>
|
|
{% endhint %}
|
|
|
|
## 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
|
|
|
|
<figure><img src="../.gitbook/assets/image (27).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
## 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](../todo/radio-hacking/flipper-zero/fz-125khz-rfid.md)
|
|
{% endcontent-ref %}
|
|
|
|
## High-Frequency RFID Tags (13.56 MHz)
|
|
|
|
**고주파 태그**는 암호화, 대규모 양방향 데이터 전송, 인증 등이 필요할 때 더 복잡한 판독기-태그 상호작용에 사용됩니다.\
|
|
일반적으로 은행 카드, 대중 교통 및 기타 보안 패스에서 발견됩니다.
|
|
|
|
**고주파 13.56 MHz 태그는 일련의 표준 및 프로토콜**입니다. 일반적으로 [NFC](https://nfc-forum.org/what-is-nfc/about-the-technology/)라고 불리지만 항상 정확한 것은 아닙니다. 물리적 및 논리적 수준에서 사용되는 기본 프로토콜 세트는 ISO 14443입니다. 고급 프로토콜과 대체 표준(예: ISO 19092)은 이를 기반으로 합니다. 많은 사람들이 이 기술을 **근거리 통신(NFC)**이라고 부르며, 이는 13.56 MHz 주파수에서 작동하는 장치에 대한 용어입니다.
|
|
|
|
<figure><img src="../.gitbook/assets/image (22).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
간단히 말해, 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](../todo/radio-hacking/flipper-zero/fz-nfc.md)
|
|
{% endcontent-ref %}
|
|
|
|
Or using the **proxmark**:
|
|
|
|
{% content-ref url="../todo/radio-hacking/proxmark-3.md" %}
|
|
[proxmark-3.md](../todo/radio-hacking/proxmark-3.md)
|
|
{% endcontent-ref %}
|
|
|
|
## References
|
|
|
|
* [https://blog.flipperzero.one/rfid/](https://blog.flipperzero.one/rfid/)
|
|
|
|
{% hint style="success" %}
|
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
|
|
|
<details>
|
|
|
|
<summary>Support HackTricks</summary>
|
|
|
|
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
|
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
|
|
|
</details>
|
|
{% endhint %}
|