本書は、複雑な電子機器とコンピュータシステムを備えた現代の自動車が、どのような仕組みで動作しているかを、より深く知りたい読者(ハッカー)のための書籍です。自動車の脅威モデルの紹介にはじまり、CANバスをはじめとしたさまざまなバスネットワークを解説、さらにCANバスのリバースエンジニアリングを行います。そしてECUをハッキングするための基礎的な知識と具体的なハッキングの手法も紹介。車載インフォテイメントシステムや車車間通信についても解説した上で、そこまでに紹介した方法を用いて発見した脆弱性を攻撃するツールを実際に作成。攻撃のリスクや問題点に対する充分な知識を得た上で、読者がそれらに対応することを可能にします。
カーハッカーズ・ハンドブック
―車載システムの仕組み・分析・セキュリティ
Craig Smith 著、井上 博之 監修、自動車ハッククラブ 訳
- TOPICS
- Make/Electronics/DIY , System/Network
- 発行年月日
- 2017年12月
- PRINT LENGTH
- 312
- ISBN
- 978-4-87311-823-9
- 原書
- The Car Hacker's Handbook
- FORMAT
- Print PDF
目次
本書の出版に寄せて 謝辞 はじめに なぜ、自動車ハッキングはすべての人々にとって良いのか 本書の内容 1章 脅威モデルの理解 アタックサーフェースの探索 脅威モデル レベル 0: 概観 レベル 1: 受信機 レベル 2: 受信機のブレークダウン 脅威の識別 レベル 0: 概観 レベル 1: 受信機 レベル 2: 受信機のブレークダウン 脅威評価システム DREAD評価システム CVSS: DREADに代わる選択肢 脅威モデルの結果を使った取り組み まとめ 2章 バスプロトコル CANバス OBD-IIコネクタ CAN接続箇所を見つける方法 CANバスパケットのフォーマット ISO-TPプロトコル CANopenプロトコル GMLANバス SAE J1850プロトコル PWMプロトコル VPWプロトコル キーワードプロトコルとISO9141-2 LINプロトコル OSTプロトコル MOSTネットワーク層 MOST制御ブロック MOSTのハッキング FlexRayバス ハードウェア ネットワークトポロジ 実装 FlexRayサイクル パケットレイアウト FlexRayネットワークのスニファ 車載イーサネット OBD-IIコネクタのピン配置図 OBD-III規格 まとめ 3章 SocketCANによる車載通信 CANデバイスと接続するためのcan-utilsのセットアップ can-utilsのインストール ビルトインチップセットの設定 シリアル CANデバイスの設定 仮想 CANネットワークの設定 CANユーティリティ集 追加のカーネルモジュールのインストール can-isotp.koモジュール SocketCANアプリケーションのコーディング CANソケットとの接続 CANフレームのセットアップ Procfsインタフェース socketcandデーモン Kayak まとめ 4章 診断とロギング 故障診断コード DTCフォーマット スキャンツールによるDTCの読取り DTCの消去 統合診断サービス ISO-TPとCANを用いたデータ送信 モードとPIDの理解 診断モードの総当たり調査 車を診断モードに保つ イベントデータレコーダのログ EDRのデータ読取り SAE J8規格 その他のデータ復元の実践 自動クラッシュ通知システム 悪意のある行動 まとめ 5章 CANバスのリバースエンジニアリング CANバスの場所の特定 can-utilsとWiresharkによる CANバス通信のリバースエンジニアリング Wiresharkの使用 candumpの使用 CANバスから流れてくるデータのグループ化 記録と再生機能の利用 パケット解析の工夫 タコメータの値の読取り ICSimによるバックグラウンドトラフィックノイズの生成 ICSimのセットアップ ICSimを使った CANバスのトラフィックの読取り ICSimの難易度の変更 OpenXCによる CANバスの解析 CANバスメッセージの変換 CANバスへの書込み OpenXCのハッキング CANバスのファジング 問題が起きた時のトラブルシューティング まとめ 6章 ECUハッキング フロントドア攻撃 J2534: 標準化された車両通信 API J2534ツールの利用 KWP2000と古いプロトコル フロントドアアプローチの活用 : Seed-Keyアルゴリズム バックドア攻撃 エクスプロイト 自動車のファームウェアのリバースエンジニアリング 自己診断システム ライブラリ関数 パラメータ特定のためのバイト比較 WinOLSによる ROMデータの特定 コード解析 単純な逆アセンブラの動作 対話型逆アセンブラ まとめ 7章 ECUテストベンチの構築と利用 基本的な ECUテストベンチ ECUを見つける方法 ECU配線の調査 配線作業 より高度なテストベンチの構築 センサ信号のシミュレーション ホール効果センサ 車速のシミュレーション まとめ 8章 ECUや他の組込みシステムへの攻撃 回路基板の解析 型番の特定 ICチップの解体と識別 JTAGやシリアル線を使ったハードウェアのデバッグ JTAG シリアル線を使ったデバッグ Advanced User Debugger Nexus ChipWhispererを使ったサイドチャネル解析 ソフトウェアのインストール Victim Boardの準備 電力解析攻撃によるセキュアブートローダの総当たり調査 AVRDUDESSを使ったテストの準備 ChipWhispererをシリアル通信用に設定 独自パスワードの設定 AVRをリセットする ChipWhispererの ADCセットアップ パスワード入力時における電力使用量のモニタ Pythonスクリプトによる ChipWhispererの処理 フォルトインジェクション クロックグリッチ トリガラインの設定 電源グリッチ 侵襲的フォルトインジェクション まとめ 9章 車載インフォテイメントシステム アタックサーフェース アップデートシステムを利用した攻撃 システムの識別 アップデートのファイルタイプの特定 システムの改変 アプリとプラグイン 脆弱性の特定 IVIハードウェアへの攻撃 IVIユニットの接続の解析 IVIユニットの分解 インフォテイメントのテストベンチ GENIVI Meta-IVI Automotive Grade Linux テスト用の自動車メーカ製 IVIの取得 まとめ 10章 車車間通信 車車間通信の方式 DSRCプロトコル 機能と使用方法 DSRC路側システム WAVE規格 DSRCによる車両追跡 セキュリティ上の懸念 PKIベースのセキュリティ対策 車両証明書 匿名証明書 証明書プロビジョニング 証明書失効リストの更新 不正動作の報告 まとめ 11章 攻撃ツールの作成 C言語によるエクスプロイトの作成 アセンブラコードへの変換 アセンブラコードからシェルコードへの変換 NULL値の削除 Metasploitペイロードの作成 ターゲットの車種の特定 対話的な調査法 受動的な CANバスのフィンガープリント識別法 エクスプロイトに対する責任 まとめ 12章 SDRを用いた無線システムへの攻撃 無線システムとSDR 信号変調 TPMSのハッキング 無線受信機による傍受 TPMSパケット 起動信号 車両の追跡 イベントのトリガ 偽造パケットの送信 キーフォブとイモビライザへの攻撃 キーフォブハッキング PKESシステムへの攻撃 イモビライザで使われている暗号 イモビライザシステムへの物理攻撃 フラッシュバック:ホットワイヤ まとめ 13章 パフォーマンスチューニング パフォーマンスチューニングのトレードオフ ECUチューニング チップチューニング フラッシュチューニング スタンドアロンエンジンの管理 まとめ 付録A 市販のツール ハードウェア ローエンドなCANデバイス ハイエンドなCANデバイス ソフトウェア Wireshark PyOBDモジュール Linuxツール CANiBUSサーバ Kayak SavvyCAN O2OOデータロガー Caring Caribou c0fフィンガープリント取得ツール UDSim ECUシミュレータ Octane CANバススニファ AVRDUDESS GUI RomRaider ECUチューナ Komodo CANバススニファ Vehicle Spy 付録B 診断コードのモードとPID 0x10以上のモード よく使われるPID 付録C 自分たちのOpen Garageを作ろう Character Sheetの記入 ミーティングの日時 アフィリエーションとプライベートメンバーシップ ミーティングの場所の決定 連絡先 創設当初の幹事 機材 略語集 索引 監修者あとがき