カーハッカーズ・ハンドブック

―車載システムの仕組み・分析・セキュリティ

[cover photo]
TOPICS
Make/Electronics/DIY , System/Network
発行年月日
PRINT LENGTH
312
ISBN
978-4-87311-823-9
原書
The Car Hacker's Handbook
FORMAT
Print PDF
Ebook
3,520円
Ebookを購入する
Print
3,520円

本書は、複雑な電子機器とコンピュータシステムを備えた現代の自動車が、どのような仕組みで動作しているかを、より深く知りたい読者(ハッカー)のための書籍です。自動車の脅威モデルの紹介にはじまり、CANバスをはじめとしたさまざまなバスネットワークを解説、さらにCANバスのリバースエンジニアリングを行います。そしてECUをハッキングするための基礎的な知識と具体的なハッキングの手法も紹介。車載インフォテイメントシステムや車車間通信についても解説した上で、そこまでに紹介した方法を用いて発見した脆弱性を攻撃するツールを実際に作成。攻撃のリスクや問題点に対する充分な知識を得た上で、読者がそれらに対応することを可能にします。

目次

本書の出版に寄せて
謝辞
はじめに
    なぜ、自動車ハッキングはすべての人々にとって良いのか
    本書の内容
    
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の記入
        ミーティングの日時
        アフィリエーションとプライベートメンバーシップ
        ミーティングの場所の決定
        連絡先
        創設当初の幹事
        機材

略語集 
索引 
監修者あとがき