DEF CONは世界有数のセキュリティ国際会議であるBlack Hatとほぼ同じタイミングで開催されます。Black Hatと同じくセキュリティに関する国際会議であり、その歴史はBlack Hatよりも古く、今年で30回目の開催となります。
大規模な企業ブースや研究結果の様なしっかりとした講演があるBlack Hatと比較すると、様々なジャンルごとに小規模な展示や講演、イベント等が行われています。世界最高峰のセキュリティコンテストなども行われ、世界中からセキュリティの専門家が集まることから、ハッカーの祭典とも呼ばれています。
今年のDEF CONはラスベガスの大規模なカンファレンスセンターであるCaesars Forumや、Flamingo、Linq、Harrah'sといった大きなホテルのカンファレンスルームで行われました。
今回、NRIセキュアテクノロジーズのグループ会社であり、自動車のサイバーセキュリティを専門とする株式会社NDIAS(エヌディアス)のメンバーによる、DEF CON参加レポートをお送りします。
DEF CONの会場であるCaesars Forumに向かうNDIASのメンバー
Caesars Forum内の様子
NDIASでは2019年にBlack HatとDEF CONに現地参加していましたが、新型コロナウイルス流行の影響でBlack HatやDEF CONがオンライン開催になったり、海外視察がしづらくなったりした事もあって現地参加から遠のいていました。今年は3年ぶりとなる久々の現地参加となりました。
2022年のDEF CONをご紹介
DEF CONでは広い会場のあちらこちらで数多くの講演や展示、グッズの販売等が行われています。
展示の例として、名物?となっている『Wall of Sheep』というものがあります。これはDEF CON運営が会場に用意したWi-Fiのアクセスポイントに接続し、暗号化されていない通信でインターネットアクセスを行うと、IDとパスワード(の一部)が晒されてしまうデモンストレーションです。
『Wall of Sheep』(本画像ではIDはぼかしているが、会場でははっきり見られる)
また、グッズ売り場では様々なセキュリティに関する機器も売られています。連日1時間以上並ぶような列が出来るほどの人気です。NDIASメンバーも売り場が空いたら買いに行こうと思って後回しにしていたら、(売り物が無くなったのか)気がついた時には閉店してしまっていました。
何十メートルも人が並ぶグッズ売り場の列
セキュリティのテーマごとにVillageという単位で展示や講演、セキュリティコンテストなどが行われるのも、DEF CONの特徴の一つです。例えば、航空宇宙系のセキュリティであれば「AeroSpace Village」、IoT機器のセキュリティであれば「IoT Village」、AIセキュリティであれば「AI Village」などです。
変わり種としては投票機器のセキュリティを扱う「Voting Machine Village」や偽情報や情報の信頼性を扱う「Misinformation Village」といったものもあります。それぞれのVillageでは特色のある展示もされており、AeroSpace Villageであれば実験用の人工衛星が、Voting Machine Villageであれば実際に使われている投票機器などが会場に置かれていて、それぞれのVillageでセキュリティコンテストなどのイベントにも利用されていました。
AeroSpace Villageの実験用人工衛星
Voting Machine Villageの投票機
NDIASは主に自動車セキュリティに関するイベントや講演が行われるCar Hacking Villageに参加したので、その内容について詳しくご紹介します。
CTFも行われるCar Hacking Villageに参加
Car Hacking Village(以下、CHV)は自動車セキュリティに特化した講演、展示、そしてセキュリティコンテストであるCTF(Capture The Flag)が行われています。それぞれどのような内容だったのか紹介します。
Car Hacking Village入口と会場の様子
Car Hacking Villageの講演を聴講
CHVの講演はBlack Hatでの講演と比較すると気軽に発表できるので、比較的内容が軽めの脆弱性に関する話や講演者が作成した解析ツールなどの紹介などが行われます。NDIASも一昨年講演を行っています。現地でのリアルタイム講演は無く、全ての講演内容は事前収録してYouTubeで公開されました。
今年は以下の様な講演がありました。
- 自動車の生体認証とそれに対する攻撃の解説
- CHV会場で販売しているバッジを解析に使う方法の解説
(バッジはRaspberry Pi Picoを利用して、CANバスに対する解析などを行える) - インドで販売されている日本の大手OEMのコネクテッドカーにあった他人の車の遠隔開錠などが可能な脆弱性の解説
- Bluetoothのシリアルポートに関するプロファイルの使い方や作成したツールの説明
- 日本の大手OEMの自動車にあったリモートキーの脆弱性を見つけた経緯の説明
- 車両システムのリバースエンジニアリング等を行うために作成したテスト機器の説明
- UDS(車のコンピュータであるECUの診断用プロトコル)のファジングに関する説明
- CANバス解析用のフレームワークやツールの説明
上記の通り、今年は日本車の脆弱性に関する講演が2件ある事が事前に分かっていたため、我々もどういった内容であるのか注目していました。YouTubeでの公開でしたが、現地ですぐに確認してメンバーでその影響度を検討したり議論をしたりしました。
実際に触れられるCar Hacking Villageの展示
CHVでは自動車セキュリティに関する機器が展示されています。
解析可能な自動車(2台)
会場には、脆弱性解析などを自由に試してもよい自動車が2台置かれていました。参加者は車に乗り込んだりボンネットを開けたりして勝手に解析を行っていました。また、リモートキー脆弱性に関する講演を行った講演者が現地にいたため、講演で紹介したデモを、参加者が説明を受けながら実際に試すことが可能でした。
リモートキーの脆弱性について説明する講演者
自動車の解析を行う参加者
また、講演でデモに利用されていた「Flipper Zero」というプログラム可能な無線デバイスも置かれており、その汎用性や簡易さからセキュリティ関係者の興味を惹いていました。
会場に置かれていた、プログラム可能な無線デバイス「Flipper Zero」
解析練習用のテストベンチ
会場には自動車解析の練習が行える自動車ネットワークを模したテストベンチが設置してあり、解析用PCやチュートリアルも用意されていて誰でも自由に解析の練習をしてよいようになっていました。
テストベンチと解析用PC
CTF(Capture The Flag)
DEF CONでは予選を勝ち抜いて参加できる世界最高峰のハッキング大会である『DEF CON CTF』が有名ですが、それとは別にCHVでは自動車セキュリティに特化したCTFが行われており、こちらでも多数の参加者がトライしていました。CHVのCTFには予選が無く、当日会場に行って自由に参加することが出来ます。
『DEF CON CTF』には、NDIASのベテランメンバーが日本人のチームの一員として参加しましたが、CHVのCTFには腕試しとしてNDIASの若手を中心としたメンバーが参加しました。
CHVのCTFに挑む参加者たち
参加者によって持ち込まれた大量の解析機器
昨年や一昨年は、バーチャル開催がメインだったため、運営側はリモートでも挑戦できる問題の作成に苦労しているようでしたが、今回は大部分が現地での実施が前提となった問題が用意されていました。
実機問題
会場に置かれたECU(車載される電子制御ユニット)などに対して解析用のPCを接続し、CAN信号を解析して答えを探したり、逆にCAN信号を送って指示された挙動をさせたりする等の問題がありました。実機のインターフェースは有線だけでなく、無線の問題もありました。
解析対象の基板
ECUに接続して解析するNDIASメンバー
シミュレーター問題
自動車シミュレーターが用意され、車載機器に相当するサーバからCAN信号を送って指示された挙動(ドアを開く、エアバック動作させる、等)を車両に起こしたりしました。
また、DEF CON会場の色々なところに自動車シミュレーターにガソリンを給油するためのワンタイムコードが書かれたガソリンカードが置かれており、CHVのTwitterアカウントが出すヒントを参考にガソリンカードを探すような事も行いました。
シミュレーターが不調で、勝手に自動車が止まってしまうトラブルが何度も発生し、その度に運営者に説明・交渉して直してもらう等、問題内容以外もなかなか大変な問題でした。
自動車シミュレーター画面とガソリンカード
CHV会場で販売されていたバッジにプログラムを書き込む問題も
CHV会場で販売されているバッジ(Raspberry Pi Pico搭載)に自分で書いたプログラムを書き込み、スーパーマリオの曲の冒頭部分を演奏させたり、マイコンのメモリダンプ情報から元のプログラム情報をリバースエンジニアリングして巧妙に隠されたフラグ情報を探したりするような問題もありました。
CHV会場で販売されていたバッジ
実際の問題例
実際出題された問題をいくつか紹介します。まず、難易度が高く得点も高かった『Try Me TriCore』というカテゴリの『CRC’ly』という問題を紹介します。この問題では、まず多数のバイナリファイルとひとつのテキストファイルが与えられます。
問題で与えられたファイル一覧
ファイル名を見てみると、メモリのアドレス情報の様に見受けられます。また、問題のカテゴリ名に含まれる「TriCore」というのは車載機器でも使われるマイコンのコアで、更に一部ファイルの中身をバイナリエディタ等で確認するとInfineon社のAURIX TC3X7というマイコンに関するHTMLが含まれており、与えられた情報はマイコンのメモリマップではと推測しました。
Infineon社のサイトでマイコンのマニュアルを見つけて確認すると、メモリマップと問題で与えられたファイルのファイル名に含まれた番地が一致しているようで、またマニュアル内容からプログラムデータは0x8000000以降に存在することがわかりました。そこで与えられた多数のファイルの中にあった「start_0x80000000_0x802FFFFF」というファイル名のファイルを解析することにしました。
このファイルをGhidra*3で読み込み、デコンパイルしてコードを確認すると「FLAG{」というフラグ文字列を含んだ関数が見つかります。
デコンパイルした関数の一部
この関数でフラグ文字列は4つの変数を連結しているように見え、更に呼び出される多数の文字列候補をコード中から見つけたのですが、4つの正しい組み合わせがデコンパイルしたコードを追っても分かりませんでした。
文字列候補(一部抜粋)
仕方ないので別のコードを確認すると、フラグ文字列に関してCRC(誤り検出方式の一つ)を確認するものがありました。今回問題名が『CRC’ly』という事もあったので、この関数を使えないか検討することにしました。
CRC計算結果と文字列を比較する個所
この関数はCRCを計算した結果が16進数で「d6be」となるか確認している様です。そこで先ほど見つけた多数の文字列候補から4つ選択し、CRCを計算したら16進数で「d6be」となる組み合わせを総当たりで探そうとしました。ただ、4つの文字列の組み合わせ総当たりを試すのに時間が掛かる事と、同じCRC計算結果となるパターンが多く出ることが想定されたので、それも難しいと推測しました。
このような状況で行き詰っていたところ、運営から以下のヒントが追加されました。
- Due to oversight and bad napkin math, I'm throwing a bone. The first three words in no particular order are {spoon, scary, asked}.
ヒントから文字列の3候補が明らかになったので、残りの1候補に関して総当たりを行いました。その結果、不明だった文字列があきらかになり、最初の関数で生成される文字列は「FLAG{scaryspoonaskedquite}」ということが分かって正解となりました。
もう一つ、現地でしか解けない実機問題である『Mystery ECU』というカテゴリの『Just Decode It 2』という問題も紹介します。この問題は会場に置かれている赤い筐体のECU相当の機器から配線が出ており、解析用のPCを接続してCAN信号を解析する問題になります。
解析対象となるECU相当の機器
単純にCAN信号を読み取るcandumpコマンドなどでCAN信号を見てみると、データに文字情報が含まれており、繋げると『F|AG{+o_.|^7E~try:^ eArLler~s1|[e}』というフラグの様な文字列になっています。
ECUが出力していたCAN信号の内容
しかしこの文字列は正解ではないようで、回答フォームに入力しても得点になりませんでした。そのため、更に解析を続けます。
先ほど取得したフラグの様な文字列を再度見てみると、おぼろげに「try earlier」と読めるような文字が含まれています。そこで、CAN信号のビットレートに着目し、CAN FD設定によるCAN信号データの取得を試みました。CAN FD(CAN with Flexible Data Rate)はCANの拡張版として策定されたプロトコルで、その名の通りCAN信号のデータ部分のビットレートが可変であり、より高速かつ大きいデータを送ることが可能です。
そのため、受信用のソフトウェアでより高いビットレートで受信するよう設定し、CAN信号を読み取りました。ところが、読み取れたデータに変化はなく、また別の方法を模索することとなりました。
次なる「try earlier」の策として、ビット判定位置を早める設定を試しました。CANプロトコルの物理層ではビットタイミングの定義があり、各ビットの判定タイミング(サンプルポイント)でそのビットが0か1かを判定しており、サンプルポイントの位置は設定変更することができます。CAN信号の立ち上がり(立ち下がり)ポイントがサンプルポイントに近い場合、サンプルポイントをずらすことで読み取るデータが変わる可能性があります。
サンプルポイントを変更した場合のCAN信号読み取りイメージ
多くの場合、サンプルポイントはCAN解析ツールのデフォルト設定のままで問題がないため、普段変更しないパラメータですが、確認のためサンプルポイントをデフォルトの80%から50%に変更して(タイミングを早めて)CAN信号を読み取ってみました。すると、先ほどとは異なるデータとして読み取ることができました。
サンプルポイントを変更して読み取ったCAN信号の内容
このデータを繋げると『F|AG{(HV_\~gEt|l+\nIcE~^nd;e@RLY!}』というフラグの様な文字が改めて出てきたので、これを答えとして入力したところ、正解となりました。
この様な様々な問題が全部で11カテゴリ計49問あり、NDIASのメンバーは現地の雰囲気を味わいながら挑戦してきました。最終的には海外の大手自動車会社の社員で構成されたチームが優勝していました。現地アメリカの企業チームは10人以上のメンバーで参加しているチームも複数あり、日本企業のDEF CONやCHVへの力の入れ方と差を感じました。
余談ですが、ラスベガスは砂漠の中に作られた街という事もあって会場の外は暑いのですが、会場内はエアコンが効きすぎて場所によっては驚くほど寒いところがあり、他のCTF参加者に上着を借りたりして寒さを凌ぐことがありました。Black Hatで買ったお土産のパーカーなども羽織っていてもまだまだ寒い状態でしたので、もし来年以降皆さんがDEF CONに参加される場合は、上着を十分に持って行かれる事をお勧めします。
最後に
今年のDEF CONは新型コロナウイルス流行の影響がある程度減ってきている中、以前の水準とはまだ言えないまでも、かなり参加者が戻ってきている様に見受けられました。Black Hatではマスクは強制されていませんでしたが、DEF CONではマスクの常時着用が求められており、運営メンバーが定期的に回ってマスクを着けていない人やずらして着けている人に注意をして、コロナウイルス流行下での安全な実施を模索している様でした。
また、そのDEF CONの中でも、近年自動車に関する脆弱性の報告や法規の成立で自動車セキュリティが注目されている事もあり、CHV会場には他のVillageと比較しても多くの人が訪れていたように見受けられました。CHVのCTFも、過去NDIASメンバーが現地参加した時よりも参加者が増えていた様に思えました。
NDIASは自動車セキュリティを事業としているため今回Car Hacking Villageに集中的に参加しましたが、DEF CONでは様々なテーマのVillageがあるため、現地参加した際は自身の興味があるVillageに参加して最新のセキュリティ状況や現地の熱気を味わってもらえればと思います。
- 用語一覧
- CAN: Controller Area Networkの略で、車載ネットワークで広く利用される通信プロトコル。
- CAN FD: CANを拡張したより多くのデータを高速に送るための通信プロトコル。
- Ghidra: NSA(米国家安全保障局)が開発したソフトウェアリバースエンジニアリングツール