Car Hacking Village 参戦レポート
ハッカーの祭典として、国際的な知名度を誇る『DEF CON』。その会期中に開かれる『DEF CON CTF』の本戦は、世界中から腕利きのセキュリティーエンジニアが集結し持ち前の技術を競うコンテストとして毎年注目を集めており、弊社社員も2012・2013・2014・2016年と参戦を続けています。
今年は、『DEF CON CTF』とは別に、『DEF CON』内で自動車セキュリティに特化した形で開催された『Car Hacking Village CTF』に弊社社員が参戦しましたので、そのレポートをお届けします。
──まずは、出場に至るまでの経緯を聞かせてください。
もともとは今年も『DEF CON CTF』に参戦する気でいたんですが、残念ながら出場が叶わなくて。それでも『DEF CON』には参加するので、今年は何をしようかと下調べをしていた時、たまたま開催を知ったのが『Car Hacking Village CTF』でした。これから先、自動車分野の仕事も増えますし、去年の秋には国内で同じ類のコンテストに参加していたので、「よし、やってみようか」と参加を決めました。
エントリーしたのは、全部で171チーム。いわゆるJeopardy形式のCTFで、出題者の問いに対して答えを導き出して正解すると点が貰えるという方式ですが、『DEF CON CTF』と違う点は、予選なしでラスベガスでのコンテスト一発勝負という点です。現地に居なくてもオンラインから参加できますが、現地で物理的なハードウェアを触らないと解答できない問題が一部にありました。
──当日の会場の様子はどうでしたか? 出された課題も含めて教えてください。
7月28日(金)の朝に会場がオープンして、そこから36時間のコンテストがスタートです。そのまま会場で課題に取り組んでもいいんですが、会場で必要な情報を集めてホテルの部屋に持ち帰りオンラインで解くのもOKです。夕方6時には会場がクローズするので、その後はいずれにしても部屋で取り組むことにはなる訳ですが。
さっき「171チームが参加」と言いましたが、実際に会場にいたのはだいたい20〜30チームくらいでしょうか。『DEF CON CTF』ほどではないにせよ、会場に活気はありましたね。
課題ですが、自動車のセキュリティに関するものが全部網羅されているとは言い切れませんが、多彩な分野のものが用意されていました。
例えば、駆動に関するシステム。会場の一角に数メートル四方のスペースがあって、その中で自分に割り当てられたラジコンカーを自由に動かせるようになっています。ただ、このラジコンは単なるラジコンではなく、実際の車によく似せた操作システムが内蔵されていて、、それに対してCANを通じてコマンドを送り出題者の指示のとおりに動かせたらクリアというものです。そのラジコンカーを動かす命令を解析して、動かすことに成功したら会場運営者に申告して確認してもらいます。
コンテストの攻撃対象となった車載機器
それと、キーレスエントリー・システム。キーレスエントリーの電波を受信するモジュールとドアのロック状態を司るアクチュエーターが動く状態で展示されているので、キーレスエントリーのリモコンを自分で操作して電波を発しながらそれの電波波形を記録して解析したうえで遠隔からロックを解除するという課題です。
キーレスエントリーの電波
カーナビシステムのハッキングもありましたね。カーナビ内部のシステムに侵入して、任意のコマンドを実行したりファイルを抜き出して解析したり。
コンテストの攻撃対象となったカーナビ
あとは、車内のコンピュータ同士の通信状況を解析するというものもありました。自動車には何台ものコンピュータが搭載されていて、互いに認証し合いながら走行などを制御している訳ですが、そのアルゴリズムを解析して認証を突破するというものです。
──課題に取り組むうえで、何か大変なことや苦労はありましたか?
『Car Hacking Village CTF』は今回が初めての開催ということもあってか、会の運営にはいろんな問題がありました。簡単に言ってしまえば、運営の対応が雑なんです(苦笑)。
まず、参加者に与えられた競技時間がどのくらいかがわからないんですよ。36時間とわかったのは、実際にコンテストがスタートしてからです。
それと、課題に取り組むにあたって自分で機器をいくつか持ち込む必要があったのですが、知る限り予告がありませんでした。電波を受信するための機器など、無いと問題に手を付けられないものが多かったです。てっきり、運営の側で用意してくれていると思ってたので、これには参りました。事前に「これを持ってこい」という指示があれば、少しは対処のしようがあったんですけどね……。一応、『DEF CON』会場の一角には物販ブースがあって、ある程度のものはその場で揃えることもできたんですが、在庫には限りがありますから。
それと、課題の一つに「トラクターに搭載されたコンピュータの設定ファイルを解読する」というのがあって、その配点が900点と全課題で最高得点のものでした。結局僕はそれを解けなかったんですが、解読の大きな助けになると思われるプログラムがインターネットで300ドル程度で売ってたんです! 一瞬「買おう」と思いましたが、結局断念しました。あれを買っていたら点を上乗せして、あと2つくらい上の順位に行けていたかもしれません。
困っている事を運営に伝えようにも英語で言うしかありません。問題に集中しようにも本質的ではない事柄で頻繁に支障が生じて、その度に運営に質問や交渉をしに行く必要に追われ、運営との会話で使う言語も母国語ではないのでなかなかスムーズにはいかずと、精神的な負荷がかなりかかりました。
それでも、悪いことばかりじゃありませんでした。カーナビの課題では、会場に実機が2台しかなく、そのうち1台は故障で使えない状態でした。この課題で他のチームがやっていた方法は、カーナビの基板から信号を取ってデバッグ用の通信機能を使って中に入るというもので、これは組み込み機器の解析としては定石なのですが、運悪くその時は通信用の機器を持っていなかったので定石が使えないという状態でした。最終日の夕方5時、残りの1台に空きが出たので使おうとしたら、その前のチームからなかなか順番が回ってきません。運営を通じて、時間がないので早く使いたいと何度かお願いしてやっと機器が使えるようになったのですが、それでも会場の撤収まで持ち時間が30分しかなく、定石も使えないので「もうダメか」と思いました。しかし、あれこれ試しているうちに、無線LAN経由でもシステム内部に入れることを見つけて、どうにか課題を解けました。有線でのアクセスにこだわらなくても、無線でいけたんです。
実は今回、この『Car Hacking Village CTF』には僕一人での参戦でした。周りはチームを組んでいろいろ分担しながら課題に取り組んでいる中で、課題を解くのも物品を調達するのも運営と交渉するのも全部自分でやっていました。会社の人や友人に助けを求める手もありましたが、会場に居て会場にある機器に触れるのは僕だけなので、会場の機器と遠隔参加者の間を中継する手間などを考えて、一人でやることにしました。
まあ、大変なのは参加者だけじゃなくて、運営もそうだったんでしょうね。課題の中に、そもそも原理的に解けないのではないかというものもありましたから。今回が初めての開催ですし、そういうことがあっても仕方がないのかなぁと思います。
出題されたファイルを解析している画面
──今回の参戦について、今どんなことを思っていますか?
36時間を振り返ってみて、一言で言うなら「疲れた」です(笑)。夜中の2時までホテルの部屋で課題に没頭して、3,4時間だけ寝た後、起きたらまたすぐにまた続きをやったんですが、こういう解析が好きじゃなかったらこんなことはできません。
順位については、トップ10に入れたとはいえ、僕としてはあまり満足していません。「もう少し上の順位に行けたのではないか」という悔しさも残っています。
仕事との関わりですが、ちょうど会社が自動車分野のセキュリティ対策に力を入れていて、診断案件も徐々に来ているところですから、今回の経験がこれからの仕事に活きる部分はあると思います。もちろん、実際の診断業務はここで出される課題とは状況が異なるものもありますが、それでも経験の幅が広がりましたし、無駄にはならないはずです。実際、コンテストで経験した珍しい事例が診断業務に役立ったことは何回かありましたから。
──最後に、これからのことや抱負について。
今回の参戦は、あくまで『DEF CON CTF』の本選に出る機会に恵まれなかったから。『Car Hacking Village CTF』で1位になることが最終目標ではないですし、来年以降また参戦するかどうかはわかりません。『Car Hacking Village CTF』でいろいろ面白い経験ができたのは良かったですが、優先順位はあくまで『DEF CON CTF』のほうが上なので、「もし機会があれば参戦しようかな」というのが本音です。
まずは来年、『DEF CON CTF』の予選突破に向けてチームでやっていきます。