CODE BLUE 2018にて「Car Hacking Challenge」開催!
日本発の情報セキュリティ国際会議「CODE BLUE」が、2018年10月29日から11月2日の期間に東京・新宿で開催されました。今年で開催6回目を迎える「CODE BLUE 2018」では、IoTやブロックチェーン、仮想通貨などのトレンドに加え、サイバー犯罪対策や法律、サイバー戦争等のセキュリティ動向も紹介されました。
その中で、11月1日から2日間、車載ネットワークのハッキングコンテスト「Car Hacking Challenge」を開催しました。
「Car Hacking Challenge」の会場の様子
コンテストの概要
コンテストは、自動車の動作中に車載ネットワークで流れる通信パケットやECU(電子制御装置)のプログラムを解析して、脆弱性を探すコンテストです。
参加者は、手元のラズパイとミニラジコンを使用してtutorialと各challenge(全5問)を問き、エンジンやステアリング等のコントロールを奪うことを目指します(challenge1~5の回答を行う際は中央テーブルのラジコンを動作させます)。チャレンジステージが進むごとに、車載ネットワークを守るセキュリティ機能が実装され、難易度が上がっていきます。
2日間で最も多くの得点を獲得したチームの勝利となります。
ラジコンカーと本物の車載制御システムを模した機器
参加者インタビュー
チーム名:kataga
参加者:3名
今回の参加の目的は?
あのイエラエさんが大会を開催すると聞いたので参加しました(笑)。
参加の目的は、CTFが好きということと、自動車セキュリティの診断や設計をしていること、そして国内で車のセキュリティのCTFが開催されることは珍しいので参加しました。特に、攻撃者の目線でどんなところを抑えなければいけないか、実際に確認する場として参加させてもらいました。
実際に参加してみた感想と、難しかったポイントがあれば教えてください。
面白かったです。実際のCANで攻撃できるCTFは少ないので、そういった経験ができたのは良かったですね。
難しかったところとしては、そのアルゴリズムで暗号化をしているのが一般的なのかどうかちょっと分からないような形式だったので、ある意味難しかったし、現実に沿っているなら攻撃が難しいんだなということが再確認できましたね。
環境について
ラジコンカーのネットワーク環境は、ラズパイを使って「車のエミュレート端末」、「攻撃者端末」、「管理端末」の3種類を作りました。
全部で6台分の環境を用意し、6チームが同時に参加できるようにしました。各端末の詳細内容は以下の通りです。
参加者の手元に配布されたラズパイとミニラジコン
車のエミュレート端末
ラズパイを使ってラジコンカーの動作をエミュレートするための端末です。
ハードウェア構成として、ラズパイに「PiCan 2」シールドと、ラジコンカーの無線コントローラーをGPIOピンに接続させて、ジョイスティックをUSBポートに繋げました。
ジョイスティックのボタンを押すとラジコンカーを動かすCANメッセージが送信されて、それに応じたGPIOピンをONにすることによって無線コントローラーから該当する動作命令(進む/曲がる)が送信される仕組みになっていました。「攻撃者端末」から受けるCANメッセージが正しい場合も同様にGPIOピンをONにする仕組みでした。
攻撃者端末
攻撃者のクライアント端末です。CANメッセージを送信できる環境を用意しました。
「USB2CAN」ケーブルを使って「車のエミュレート端末」のCANインタフェイスに接続させました。
管理端末
「車のエミュレート端末」にCTF問題スクリプトをプッシュし、ログを取得するための端末です。
「Car emulation side」を起動する手順
- USBメモリー(OSブート)やジョイスティックを挿します。
- DHCP-clientになっているため、ルーターに繋いでから電源を入れます。
- 起動後、SSH証明書「ssh_pi.key」で「scp」を使ってスクリプトをアップロードします。
scp -i ssh_pi.key canGPIO.py pi@IP:/tmp/ - SSHでログインします。
ssh pi@IP -i ssh_pi.key - 「pi」ユーザー権限において、スクリプトを実行します。
python /tmp/canGPIO.pyリンク:setup