Slide 1

Slide 1 text

面倒くさい CANバスリバーシングの 方法論 2019/9/21 @_jptomoya

Slide 2

Slide 2 text

注意 • 本発表の内容は個人の見解であり、所属する組織・ 部署の見解を代表するものではありません • 本発表内容を参考にする場合は、企業の権利侵害や 法律違反にならないよう十分注意 関連法律 • 道路交通法 • 道路運送車両法 2

Slide 3

Slide 3 text

自己紹介 @_jptomoya • 自動釣銭機の次に車にとりつかれてしまった社会人2年目 3 自動釣銭機@自宅

Slide 4

Slide 4 text

CANバスリバーシングの目的 本日は、CANバスリバーシングのための方法論を紹介。 目的 • 車両の電子制御への理解を深める • 車両データの利活用 以下は扱わない。 • CANバスのキャプチャ方法 • 電気回路の基礎知識 • 自動車の故障診断の概念 4 車両データを活用してギア位置を表示する例 車両データの活用(グラフ表示)

Slide 5

Slide 5 text

作業前/作業後の注意 作業前 • 車載通信機の通信機能を無効にする • ディーラーへの無用な通知を避けるため • ダイアグの消去手順を確認する 作業後 • 車載通信機の通信機能を有効にする • ダイアグを消去、警告灯の消灯確認 • ディーラーでの点検時に無用な指摘を避けるため • 警告灯の点灯しないダイアグコードもあるため必ずDTCを確認 5 OBD-II >clear DTC DCM OFF センター

Slide 6

Slide 6 text

Controller Area Network(CAN) • 車載ネットワークとして最も使われているプロトコル • 1980年代にドイツBosch社が提唱し, ISO15118で標準化 • 1対のツイストペア線に複数のECUが接続される 6 脆弱性 もたらされる攻撃 ブロードキャスト リプレイ攻撃 認証機構を備えない なりすまし 暗号化されていない ログデータの解析が容易 CAN IDによる優先度 Denial of Service (DoS)攻撃 [1] Jiajia Liu et al., “In-Vehicle Network Attacks and Countermeasures: Challenges and Future Directions,” IEEE Network, Vol. 31, No. 5, pp. 50-58, 2017. • CANプロトコルは本質的に脆弱[1]

Slide 7

Slide 7 text

CANバスリバーシング概要 大まかな流れ 7 初度登録年月 2019年2月 (2018年発表モデル) 種別 ガソリン車 トランスミッション 6MT 主なADAS機能 その他装備 車載通信機 ACC AEB LKAS RSA AHB BSM 1.準備 • a. 工具・道具の調達 • b. CANバス アーキテクチャの 事前調査 2.CANバスへのアクセス • CAN-L, CAN-Hの特定 • 信号線の取り出し 3.解析 • 送信元の特定 • CANメッセージ内容 の特定 対象車両 概要

Slide 8

Slide 8 text

1-a. 工具・道具 以下を準備するといろいろ捗る。 8 ワイヤーストリッパー ニードル型プローブ 圧着ペンチ OBD-II治具 オシロスコープ (CANトリガ・デコード付) DC電源 他、ドライバー、マルチテスター等の一般的な工具も 故障診断機や OBDスキャナ CANダンプ できるやつ RPi MCP2515 修理書

Slide 9

Slide 9 text

補足: 修理書の入手 • 修理書はディーラーや共販店で注文可能 • 修理書には様々な情報が記載。大幅な時間節約が可能 • CANバスの配置 • 配線図/艤装図 • パネル類の正しい取り外し手順 • 各ECUの機能 • どのような信号をどのECUに送るか • フェイルセーフ時の大まかな動作 • 以下は記載されていない • どのECUがどのCAN IDを発するか • CANメッセージ毎の意味 9

Slide 10

Slide 10 text

1-b. 対象車両のCANバスアーキテクチャ • 修理書を参照して、CANバスのアーキテクチャを把握する • CGWは各バス間の通信を中継する 10 CGW OBD-II ECU ECU ECU ECU : CAN通信線 ECU ECU ECU ECU ECU ECU ECU ECU ECU ECU ECU ECU ECU プロトコル CAN 2.0B (標準フォーマット) バス速度 500 kbps ECU数 17 バス1 (ADAS) バス2 (パワトレ) バス4 (シャシ) バス5 (ボデー) バス3 (テレマティクス)

Slide 11

Slide 11 text

2-a. CANバスへのアクセス • 対象車両はCGW有りのため、OBD-IIにCANメッセージは流れない ⇒配線図、艤装図を参考にCAN-L, CAN-Hの線を探す • テスターで電圧が2.5V付近であることを確認 • 2本の線で平均電圧が低いほうがCAN-L、高いほうがCAN-H 11 ※マイナスはボデーアースからとる ECU1 ECU2 バス1 CGW × OBD-II

Slide 12

Slide 12 text

1. エレクトロタップやワイストを使った分岐 ⇒破壊的だが簡単 2. ジャンクションコネクタの新設 ⇒確実な接続かつ、原状回復可能 3. ニードル型プローブ等を使った準侵略プロービング ⇒一時的なモニタや、純正配線を傷つけたくない場合に適する 2-b. CANバスへのアクセス CAN-L, CAN-Hの位置が判明したら、電気信号の取り出し方法を検討する 12

Slide 13

Slide 13 text

補足: 試しにcandumpしてみる 13 • 助手席下に空きコネクタがあるのでcandump ⇒整備マニュアル曰く、テレマティクス系のCANバスらしい candump画面(110個のCAN ID) CAN IDが多すぎてわけわからん

Slide 14

Slide 14 text

3-a. 送信元特定の必要性 14 CAN IDと送信元ECUの対応付けができていると、センサの配置や配線図から ・ブレーキECUから車速が出ているはず ・エンジン回転数はエンジンECUから出ているはず 等、仮説を立てられる エンジンECU ブレーキECU スピード センサ FR スピード センサ FL スピード センサ RR スピード センサ RL 車速? カム角 センサ IGコイル インジェクタ CAN通信線

Slide 15

Slide 15 text

3-a. 送信元の特定 CANバスの効率的な解析には、CAN IDと送信元ECUの 対応表作成が不可欠 15 CAN-HとCAN-L の短絡 コネクタを抜く ヒューズを抜く ・・・などしてCAN IDと送信元ECUを対応付ける 単体試験 波形比較,バスオフ

Slide 16

Slide 16 text

補足: ヒューズを抜く • ヒューズを抜いて、抜く前と比較して消えたCAN IDを調べる • 複数ECUが道ずれになるようなヒューズを抜くと逆に切り分けが困難に なる • 常時電源とIG電源がある場合、両方抜かないと確実な通信途絶は期待で きない 16 ECU1 ECU2 ECU IG No.2 10A EPS ECU EPS 30A

Slide 17

Slide 17 text

補足: コネクタを抜く • 特定のECUを確実に途絶させられる方法 • 実車ではECUまでの物理的アクセスが大変 17

Slide 18

Slide 18 text

補足: CAN-LとCAN-Hの短絡 • 短絡させると、同一バス内の全てのECUが通信不能となる ⇒CGWの中継元/先の切り分けに利用 • ルネサス公認!手法 18 https://ja-support.renesas.com/knowledgeBase/17795917 ECU1 ECU2 ECU3 バス1 バス2 CGW 1. バス2のCAN-H, CAN-Lを短絡 2. バス2内に配置されたECUの CANメッセージが中継されなくなる ×

Slide 19

Slide 19 text

補足: 単体試験 • ECU単体に電源を供給し、送信されるCAN IDを調べる • CAN IDを特定するという目的では最も確実な方法 • 終端抵抗(CAN)の有無に注意 19 余談:ヨーレートセンサの活用 https://twitter.com/_jptomoya/status/1165974609578971137

Slide 20

Slide 20 text

補足: 波形比較 CAN IDごとに波形の特徴を比較すると、送信元を分類できる • SOF付近の形 • 全体的な波形の安定度 • 電圧の最大値/最小値 • ヒゲの有無 等 20 Top = 3.55V Base=1.46V Top = 3.55V Base=1.37V

Slide 21

Slide 21 text

バスオフを利用した切り分け 1. オシロスコープで特定のCAN IDに対してトリガをかけておく 2. マイコンでトリガ出力を拾ってエラーフレームをCANバスに送る 3. 対象のCAN IDを送信しているECUはバスオフとなり、同ECUが 送信していた他のCAN IDも消える 21 オシロスコープ マイコン CANトランシーバ : CAN通信線 ECU1 ECU2 トリガ出力 Rx Tx ① ② ③バスオフ ※ほとんどのECUは数十~数百msでrestartし、自動的にバスオフ状態から復帰する

Slide 22

Slide 22 text

3-b. CANメッセージ内容の特定 CANバスをモニタしながら以下を行う 1. 特定操作時のCANメッセージの変化を見る 1. 静止状態でできるもの 2. 走行しないと変化しないもの 2. センサ情報の偽装 22 ※モニタにはcansniffer等を利用すると良い

Slide 23

Slide 23 text

補足: センサ情報の偽装 23 ボリューム(可変抵抗器) • 本来のセンサ値の代わりに任意電圧を入力することで、CANメッセージの 変化を調べる • 実際に走行しなくても、極端な値を入力可能

Slide 24

Slide 24 text

成果物 (CAN ID一覧表) リバースエンジニアリング結果をまとめると 巨大な表が出来上がる 24 191個の CAN ID

Slide 25

Slide 25 text

なぜ車は攻撃されるか • 車両自体に価値がある(車両窃盗団) • コネクティッド化 ⇒アタックサーフェスの増加 • 高度な電子制御化/ADASの普及 ⇒走る・曲がる・止まるに電子制御で介入できる • クルマは情報の宝庫 • ドラレコ、目的地履歴、アドレス帳、EDR・・・ 25 https://www.gizmodo.jp/2019/04/crashed-teslas-have-drivers-data.html

Slide 26

Slide 26 text

最近のトピックス 1. 車検制度でのOBDの活用(2019/1) 2. 自動ブレーキ搭載義務化(2019/2) 3. レベル3自動運転対応に向けた道交法の改正(2019/5) 26 1. https://response.jp/article/2019/01/31/318619.html 2. https://www.nikkei.com/article/DGXMZO41197100T10C19A2000000/ 3. https://www.nikkei.com/article/DGXMZO45357170Y9A520C1000000/

Slide 27

Slide 27 text

まとめ • 実車のCANバスをリバースエンジニアリングする ための方法論を紹介した • CANバスの構成・CANメッセージの割り当ては 車種ごとに異なる ⇒効率的なCANバスリバースエンジニアリングの参考に なれば幸い 27