BadUSB — On accessories that turn evil

BadUSB — On accessories that turn evil
Karsten Nohl <[email protected]>
Sascha Krißler <[email protected]>
Jakob Lell <[email protected]>
SRLabs Template
v12
デモ 1 – USB メモリによるキー
ボードエミュレーションと USB ブー
トによるコンピュータへの感染
2
アジェンダ




USB の概要
USB デバイスの再プログラム
USB の攻撃シナリオ
防御と次のステップ
3
ユーザからは見えない USB デバイスのマイクロコントローラ
USB コント
ローラ
8051 CPU
ブートローダ
フラッシュメモリ
コントロー
ラファーム
ウェア
マスストレージ
ユーザから見える
のはこの部分だけ
4
USB デバイスの認識
USB デバイス
コネクタ + ハブ
ホスト
ルート
ハブ
識別子
例
USB メモリ
デバイスクラス
8 – マスストレージ
a. 1 – オーディオ
b. 14 – ビデオ
エンドポイント
0 – コントロール
1 – データ転送
0
1
6
7
シリアルナンバー
AA627090820000000702
0258A350
ウェブカメラ
–
–
–
–
コントロール
ビデオデータ
音声データ
ビデオ割り込み
5
USB デバイスの初期化ステップ
USB デバイス
USB プラグアンドプレイ
登録
電源オン +
ファームウェア
初期化
アドレスの設定
ディスクリプタの送信
設定の送信
ドライバの
ロード
通常の動作
オプション : 登録の抹消
再登録…
別のドライバ
のロード
デバイスは複数の
識別子を持てる
 デバイスはディス
クリプタを通じて
その機能を通知
する
 ウェブカメラとマ
イクといった複数
のデバイスクラス
をサポートする場
合、デバイスは複
数のディスクリプ
タを持つ
 デバイスは登録
の抹消し、別のデ
バイスとして再登
録できる
6
アジェンダ




USB の概要
USB デバイスの再プログラミング
USB 攻撃のシナリオ
防御と次のステップ
7
USB ファームウェアのリバースエンジニアリングとパッチ作成に
必要な期間は 2 ヶ月以下
Aファームウェアアップデートプ B ファームウェアのリバースエ C
ロセスの文書化
1. インターネット上で漏洩して
いるファームウェアと更新
ツールを探す
2. Wireshark でアップデート
の通信を解析
3. アップデートで使用された
SCSI コマンドをリプレイ
4. ( フラッシュのピンをショート
させ、文鎮化したデバイスを
リセット )
ンジニアリング
1. 逆アセンブラにロード ( 落と
し穴 : MMU と同じようなメ
モリバンキング )
–. 経験則を当てはめる
–. 関数の開始位置と関数を呼
び出すインストラクションの
メモリアドレスを突き合わせ
る
–. ディスクリプタなどの既知の
USB のビットフィールドを見
つける
1. 通常のリバースエンジニア
リング手法でフックポイント
を見つける
ファームウェアをパッチ
1. ファームウェアにフックを追加
して、機能を追加および変更
2. 専用のリンカスクリプトで C
とアセンブラコードをコンパイ
ルし、元のファームウェアの未
使用部分に追加
標的になりうるデバイス
ここでは USB メモリを対象
にしているが、同じアプロー
チは他のデバイスにも有効
 外付けハードディスク
 ウェブカメラ、キーボード
 おそらく他にも多数
8
アジェンダ




USB の概要
USB デバイスの再プログラミング
USB 攻撃のシナリオ
防御と次のステップ
9
デモ 2 – USB メモリに感染した
Windows で Linux を乗っ取
る
10
感染と特権上昇に必要なのはキーボードエミュレーションだけ
( ソフトウェアの脆弱性は不要 )
問題 – Linux マルウェアは一般ユーザの権限で実行されるが、他の
USB メモリに感染を広げるには root 権限が必要
解決策 – sudo で使うパスワードをスクリーンセーバーで奪取
LD_PRELOAD でパス
ワード盗聴プログラムを
リンクしたスクリーンセー
バー ( もしくは
policykit) を起動
 ユーザがパスワードを入力
し、スクリーンロックを解除
 マルウェアはパスワードを盗
聴し、 sudo で root 権限を
奪取
この特権上昇モジュー
ルは Metasploit に投
稿予定
11
デモ 3 – USB メモリで
Windows の DNS を変更
12
「 USB の DHCP 」によるネットワーク通信の転送
偽の USB イーサ
ネット アダプタが
DHCP で DNS 設
定を変更
DNS クエリは
攻撃者の
DNS サーバ
へ
攻撃ステップ
結果
1.USB メモリがイーサ
ネットアダプタを偽装
2.DHCP リクエストには
デフォルトゲートウェイ
は変更せず、インター
ネット上の DNS サーバ
のアドレスを返す
1.インターネット通信は通常の WiFi
接続を通じて行われる
2.しかし、 DNS クエリは USB メモリ
が指定した DNS サーバに送られ、
リダイレクト攻撃が成立
13
ボーナス : 仮想マシンの脱獄
1. ゲストの仮想マシンが USB
デバイスを書き換え (SCSI コ
マンドを使う )
ゲスト仮想マシン
1. USB デバイスが別
のデバイスとしてホ
ストマシンに接続
ホスト
1. USB デバイスがキー入力を
偽装、 DNS 設定の変更
14
デモ 4 – Android で
Windows マシンのデータをリダ
イレクト
15
「そのパソコンでスマートフォンを充電してもらえないかな」 –
Android フォンが USB 攻撃のもっとも身近なプラットフォームに
USB イーサネットア
ダプタが DHCP で
デフォルトゲートウェ
イ を変更
コンピュータからのイ
ンターネット通信はす
べてスマートフォン経
由に
Preparation – Android デバイスの
Ethernet-over-USB 機能はほとんど設定を
必要としない
攻撃 – スマートフォンがデフォルトゲートウェイ
になり、すべてのインターネット通信を傍受
srlabs.de/badu
sb で実証コードを
公開
第二要素認証によるハッキ
ング
ウイルスに感染したスマート
フォンは、 USB 接続したコン
ピュータにキーボードエミュ
レーションで侵入可能
これによりオンラインバンキン
グの「二要素認証」セキュリ
ティモデルを崩せる
16
ブートセクタウイルス : USB バージョン
OS と BIOS
のフィンガープ
リンティング
パッチを当てた
USB メモリ
ファームウェア
は USB まわり
の挙動で
Windows/Ma
c/Linux およ
び BIOS を区
別可能
OS やアンチウイルスか
らルートキットを隠す
OS がアクセスしても見え
るのは USB の内容のみ
ブート時にマシンへ感染
BIOS が USB メモリにア
クセスすると見えるのは
Linux で、ルートキットが
起動してマシンに感染し、
USB メモリのファイルか
らブート
USB メモリには
Linux のインス
トールイメージ
など
隠された
Linux イメージ
17
USB による攻撃のバリエーションは多数
考えられる攻撃手法
これまでに紹介
した攻撃手法
キーボード
エミュレー
ション
ネットワーク
カードの偽
装
「 USB
ブートセク
タ」ウイルス
USB メモリや外
付けハードディス
クにデータを隠蔽
書き込みデータの
書き換え
PC BIOS のアッ
プデート
ディスプレイの偽
装
結果
 外部ストレージはファイルを削除するかわりに隠し
てしまうことができる
 ストレージに追加されるファイルにウイルスを追加
 アンチウイルスソフトウェアが最初にアクセスすると
オリジナルのファイルが見えるが、その後のアクセス
ではウイルスに
 ブート時にキーボードをエミュレートし、 USB メモリ
に隠された別の BIOS をインストール
 USB ディスプレイをエミュレートし、 CAPTCHAS や
乱数表などのセキュリティ情報を取得
18
アジェンダ




USB の概要
USB デバイスの再プログラミング
USB 攻撃のシナリオ
防御と次のステップ
19
USB 攻撃に対する効果的な防御は存在しない
防御方法
USB デバイスのホワイ
トリス
重要なデバイスクラスも
しくは USB そのものを
ブロック
限界
 USB デバイスのシリアルナンバーは必ずしもユニークではない
 ホワイトリストメカニズムを持つ OS は ( まだ ) 存在しない
 当然ながら、ユーザビリティに大きな影響を与える
 非常に基本的なデバイスクラスでも悪用可能で、それらをブロックす
るとほとんどの USB デバイスが使えなくなる
デバイスファームウェア
のスキャン
 可能だとしても、 USB デバイスのファームウェアはそのファームウェ
アを通じてしか読めない。悪意のあるファームウェアは正常なファー
ムウェアとして偽装できる
ファームウェアのアップ
デートにコード署名を使
用
 不適切な実装がファームウェアアップデートを許してしまう可能性は
否定できない
 小さなマイクロコントローラ上では、強固な暗号技術の実装は困難
 既存の膨大なデバイスは脆弱なまま
ハードウェアでファーム
ウェアアップデートを無
効に
 単純で効果的
20
USB デバイスの再プログラムには生産的な目的も
アイデア 1 – データベースクエリの高速化
 ホストにデータを返す前に ( もしくは返す代わりに )USB メ
モリ上でデータをパース
 A5/1 レインボーテーブルの参照を高速化するのが本来の
動機
アイデア 2 – 低コス
トなチップの再利用
 再プログラム可能な
チップを USB スト
レージ以外の用途に
使用
 flowswitch /
phison プロジェクト
の目的はローコスト
な USB 3.0-FPGA
インターフェースの作
成
21
BadUSB の責任の所在は曖昧
修正はまだ提供されていない
チップベン
ダーの反応
はない
機器メー
カーの反応
はない
OS ベン
ダーの反応
はない
 一番話題になっている Phison は改良し
たチップをすでに提供しているとするが、
顧客は積極的に新チップを選択していな
い
 他ベンダーは何の声明も出していない
 影響を受けるベンダーでパッチやアドバ
イザリを公表したベンダーはない
 OS の実装サイドにも解決に向けた動き
はない。例外は USB エニュメレーション
を無効にする機能を実装した FreeBSD
のみ
v
s.
BadUSB マルウェアは現実
的な脅威になりつつある
Adam Caudill と
Brandon Wilson は
Phison の USB コント
ローラを標的にしたエ
クスプロイトを 9 月に
開催された Dabycon
で発表
回避策として公表され
たのは GData の
Keyboard Guard の
み
22
まとめ
 USB デバイスは多様な感染経路になりうる
 USB やその他の方法で感染すると、マルウェ
アは USB デバイスをデータの隠し場所にする
ことができ、マルウェアの駆除を無効化できる
 コントローラが再プログラム可能な USB デバ
イスは共用すべきではない
ご質問は ?
[email protected]
23