自動車ってどうやってハッキングするんですか? [IoTSecJP #2 振り返り]
こんにちは。
本記事は主にIoTSecJP #2でお話させて頂いたスライドを補足したいと思います。
まずは、今回の機会を頂いた黒林檎氏に感謝します!ありがとうございました。
さて、早速ですが、私のスライドを貼っておきます。 ※表示がちょっと崩れてしまっています
公開用に一部秘匿しています。
補足
Jeepのハッキング例について
2015年にJeepがハッキングされ、自動車のハッキング事例が脚光を浴びたのが記憶に新しいと思います。
ハッキングを成功させたのはチャーリー・ミラー(Charlie Miller)氏とクリス・ヴァラセク(Chris Valasek)氏です。
Jeepに搭載されているインフォテインメントシステム(ナビ)には3G回線と接続する機能が搭載されていました。しかし、最初からSSH可能なポートが開いていたそうです。
そこで、その脆弱性をついて遠隔操作を可能にしました。
彼らをレビューした動画がYoutubeにありました。
Hackers Remotely Kill a Jeep on the Highway—With Me in It
実際に遠隔から、実際に走行している自動車のホーンを鳴らすなど、遠隔操作を実現しています。
ジョージ・ホッツ (george Hotz)氏のCODE BLUEでの登壇内容について
今回、攻撃にターゲットを据えた話をするにあたって、折角の機会なのでジョージ氏が公開しているopenpilotについて調べてみました。
openpilotは実際にGithubに公開されています。
GitHub - commaai/openpilot: open source driving agent
彼の開発したシステムの内容をまとめますと、以下のようになると思います。
これから分かるように、各社のCANIDの解析結果がopendbcとして公開されてしまっているので、これは結構やばいのでは・・・?
openpilotはオートクルーズを模擬するようなものなのですが、そのためには実際にCANメッセージなりすますことで、実際のECUをなりすまします。
しかし、各社搭載しているECUが異なる、乃ちCAN IDが異なるため、その各社同士の違いを吸収するのがopendbcになります。
openpilotは変換されたメッセージを解釈することで、自動運転を実現します。
※追記
こんにちは、素晴らしい資料拝見させて頂きました。comma.aiのODBドングルのpandaはUSB接続かwi-fiのアクセスポイントになるのでそれで接続出来ますよ
— ユベ (@yubedrums) 2018年1月9日
@yubedrumsさんより、OBDドングルとの接続方法について補足頂きました。ありがとうございます!
実践!自動車ミニハックについて
例の脆弱そうなOBDドングルを実際に使ってみた例です。
コマンドを実行して、実際にCANメッセージをモニタできている様子の動画を添付しておきます。
シミュレータとアナライザについて
最後に少し質問を頂いたので、メモとして残しておきます。
実際の自動車でなくても、CANの応答を確認するためのツールとしてECUシミュレータというものがあります。
少しお高いですが、、、
また、アナライザ(OBDからCANをモニタするツールとして)は下から上まで様々あります。
送信/受信バッファがある程度あるものですと、なかなか高価なものになると思います。
恐らくRasperry Pi + PiCANのセットが一番安く上がるのではないのかと思います。
ソフトウェアとしてはcan-utilsが利用できます。