hacktricks/todo/radio-hacking/pentesting-rfid.md

106 lines
11 KiB
Markdown
Raw Normal View History

2024-04-06 18:36:54 +00:00
# Pentesting RFID
<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong>를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요<strong>!</strong></summary>
* **사이버 보안 회사**에서 일하시나요? **회사를 HackTricks에서 광고**하거나 **PEASS의 최신 버전에 액세스**하거나 **HackTricks를 PDF로 다운로드**하고 싶으신가요? [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인해보세요!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견해보세요. 독점적인 [**NFT**](https://opensea.io/collection/the-peass-family) 컬렉션입니다.
* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요.
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **참여**하거나 **Twitter**에서 **팔로우**하세요 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **해킹 팁을 공유하려면 PR을** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **및** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **에 제출**하세요.
</details>
## 소개
\*\*Radio Frequency Identification (RFID)\*\*는 가장 인기 있는 단거리 무선 솔루션입니다. 일반적으로 개체를 식별하는 정보를 저장하고 전송하는 데 사용됩니다.
RFID 태그는 **자체 전원(액티브)**(내장형 배터리와 같은) 또는 **받은 무선 파동으로부터 유도된 전류**(**패시브**)를 사용하여 읽기 안테나에서 전원을 공급받을 수 있습니다.
### 클래스
EPCglobal은 RFID 태그를 여섯 가지 범주로 나눕니다. 각 범주의 태그는 이전 범주에 나열된 모든 기능을 갖고 있으므로 하위 호환성을 가집니다.
* **클래스 0** 태그는 **패시브** 태그로, **UHF** 대역에서 작동합니다. 공장에서 제작 시 공급업체가 **미리 프로그램**합니다. 따라서 저장된 정보를 **변경할 수 없습니다**.
* **클래스 1** 태그는 **HF** 대역에서도 작동할 수 있습니다. 또한, 제작 후 **한 번만 쓸 수 있습니다**. 많은 클래스 1 태그는 수신한 명령의 **순환 중복 검사**(CRC)를 처리할 수도 있습니다. CRC는 오류 감지를 위해 명령의 끝에 추가된 몇 바이트입니다.
* **클래스 2** 태그는 **여러 번 쓸 수 있습니다**.
* **클래스 3** 태그에는 현재 온도나 태그의 움직임과 같은 환경 매개 변수를 기록할 수 있는 **내장 센서**가 포함될 수 있습니다. 이러한 태그는 **반 액티브**이며, 내장된 **배터리**와 같은 전원 공급원을 가지고 있지만 다른 태그나 리더와 **무선 통신을 시작할 수 없습니다**.
* **클래스 4** 태그는 동일한 클래스의 다른 태그와 통신을 시작할 수 있으므로 **액티브 태그**입니다.
* **클래스 5** 태그는 다른 모든 이전 태그 클래스와 **통신하고 다른 태그에 전원을 공급**할 수 있습니다. 클래스 5 태그는 **RFID 리더**로 작동할 수 있습니다.
### RFID 태그에 저장된 정보
RFID 태그의 메모리에는 일반적으로 네 가지 종류의 데이터가 저장됩니다: 태그가 연결된 **개체**를 **식별**하는 **식별 데이터**(이 데이터에는 은행 계좌와 같은 사용자 정의 필드가 포함됨); 개체에 대한 **추가 정보**를 제공하는 **보충 데이터**; 태그의 내부 **구성**에 사용되는 **제어 데이터**; 태그의 **제조업체 데이터**로, 태그의 고유 식별자(**UID**)와 제조, 유형 및 공급업체에 대한 세부 정보를 포함합니다. 상업용 태그에서는 첫 두 종류의 데이터를 모두 찾을 수 있으며, 마지막 두 종류는 태그의 공급업체에 따라 다를 수 있습니다.
ISO 표준은 태그가 속하는 **객체의 종류**를 나타내는 코드인 **Application Family Identifier (AFI)** 값을 지정합니다. ISO에서 지정한 또 다른 중요한 레지스터는 \*\*Data Storage Format Identifier (DSFID)\*\*로, 사용자 데이터의 **논리적 구성**을 정의합니다.
대부분의 RFID **보안 제어**는 각 사용자 메모리 블록 및 AFI 및 DSFID 값을 포함하는 특수 레지스터에 대한 **읽기** 또는 **쓰기** 작업을 **제한**하는 메커니즘을 갖고 있습니다. 이러한 **잠금** 메커니즘은 제어 메모리에 저장된 데이터를 사용하며, 공급업체가 미리 구성한 **기본 암호**를 사용하지만 태그 소유자가 **사용자 정의 암호를 구성**할 수 있습니다.
### 저주파 및 고주파 태그 비교
<figure><img src="../../.gitbook/assets/image (27).png" alt=""><figcaption></figcaption></figure>
## 저주파 RFID 태그 (125kHz)
**저주파 태그**는 주로 **높은 보안이 필요하지 않은 시스템**에서 사용됩니다: 건물 출입, 인터콤 키, 체육관 멤버십 카드 등. 더 높은 범위로 인해 유료 주차장에 사용하기 편리합니다: 운전자는 카드를 판독기에 가까이 가져가지 않아도 되므로 더 멀리서 트리거됩니다. 동시에, 저주파 태그는 매우 원시적이며 데이터 전송 속도가 낮습니다. 이러한 이유로 잔액 유지 및 암호화와 같은 복잡한 양방향 데이터 전송을 구현할 수 없습니다. 저주파 태그는 인증 수단 없이 짧은 ID만 전송합니다.
이러한 장치는 **패시브 RFID** 기술을 기반으로 하며, **30 kHz에서 300 kHz**의 범위에서 작동하지만 일반적으로 125 kHz에서 134 kHz를 사용합니다:
* **장거리** - 낮은 주파수는 더 긴 범위로 변환됩니다. 약 1미터 거리에서 작동하는 EM-Marin 및 HID 판독기가 있습니다. 이러한 판독기는 주로 주차장에서 사용됩니다.
* **원시적인 프로토콜** - 데이터 전송 속도가 낮기 때문에 이러한 태그는 짧은 ID만 전송할 수 있습니다. 대부분의 경우 데이터는 인증되지 않으며 어떠한 방식으로도 보호되지 않습니다. 카드가 판독기의 범위에 들어가면 즉시 ID를 전송하기 시작합니다.
* **낮은 보안성** - 이 카드는 쉽게 복제되거나 프로토콜의 원시성으로 인해 다른 사람의 주머니에서도 읽을 수 있습니다.
\*\*인기 있는 125 kHz 프로토콜:
## 고주파 RFID 태그 (13.56 MHz)
**고주파 태그**는 암호화, 양방향 데이터 전송, 인증 등 복잡한 리더-태그 상호작용이 필요한 경우에 사용됩니다.\
이는 일반적으로 은행 카드, 대중 교통 및 기타 보안 패스에서 찾을 수 있습니다.
**고주파 13.56 MHz 태그는 표준 및 프로토콜의 집합**입니다. 일반적으로 [NFC](https://nfc-forum.org/what-is-nfc/about-the-technology/)로 알려져 있지만 항상 정확하지는 않습니다. 물리적 및 논리적 수준에서 사용되는 기본 프로토콜 세트는 ISO 14443입니다. 고수준 프로토콜 및 ISO 19092와 같은 대체 표준은 이를 기반으로 합니다. 많은 사람들은 이 기술을 13.56 MHz 주파수에서 작동하는 장치를 위한 용어인 \*\*근거리 통신 (NFC)\*\*로 착각하기도 합니다.
<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와 같은 암호화 강도가 높은 알고리즘을 지원하고 비대칭 암호화를 구현하는 카드도 있습니다.
### 공격
Flipper Zero를 사용하여 이러한 태그를 **공격**할 수 있습니다:
{% content-ref url="flipper-zero/fz-nfc.md" %}
[fz-nfc.md](flipper-zero/fz-nfc.md)
{% endcontent-ref %}
또는 **proxmark**를 사용할 수도 있습니다:
{% content-ref url="proxmark-3.md" %}
[proxmark-3.md](proxmark-3.md)
{% endcontent-ref %}
## 참고 자료
* [https://blog.flipperzero.one/rfid/](https://blog.flipperzero.one/rfid/)
<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong>를 통해 제로에서 영웅까지 AWS 해킹 배우기<strong>!</strong></summary>
* **사이버 보안 회사**에서 일하고 계신가요? **회사를 HackTricks에서 광고**하거나 **PEASS의 최신 버전에 액세스**하거나 HackTricks를 **PDF로 다운로드**하고 싶으신가요? [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인해보세요!
* 독점적인 [**NFT 컬렉션인 The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요.
* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요.
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **참여**하거나 **Twitter**에서 **저를 팔로우**하세요 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **hacktricks repo**와 **hacktricks-cloud repo**에 PR을 제출하여 **당신의 해킹 기교를 공유**하세요.
</details>