ユーザからは見えない
USB デバイスのマイクロコントローラ
8051 CPU
ブートローダ
USB コント
ローラ
コントロー
ラファーム
ウェア
マスストレージ
フラッシュメモリ
ユーザから見える
のはこの部分だけ
USB デバイスの認識
USB デバイス コネクタ
+ ハブ ホスト
ルート
ハブ
例
USB メモリ
8 – マスストレージ
AA627090820000000702
0 – コントロール
1 – データ転送
デバイスクラス
エンドポイント
識別子
a. 1 – オーディオ
b.14 – ビデオ
ウェブカメラ
シリアルナンバー 0258A350
0 – コントロール
1 – ビデオデータ
6 – 音声データ
7 – ビデオ割り込み
USB ファームウェアのリバースエンジニアリングとパッチ作成に
必要な期間は
2 ヶ月以下
1. インターネット上で漏洩して
いるファームウェアと更新
ツールを探す
2.Wireshark でアップデート
の通信を解析
3. アップデートで使用された
SCSI コマンドをリプレイ
4.( フラッシュのピンをショート
させ、文鎮化したデバイスを
リセット )
ファームウェアアップデートプ
ロセスの文書化 ファームウェアをパッチ
ファームウェアのリバースエ
ンジニアリング
1. 逆アセンブラにロード ( 落と
し穴 : MMU と同じようなメ
モリバンキング )
–. 経験則を当てはめる
–. 関数の開始位置と関数を呼
び出すインストラクションの
メモリアドレスを突き合わせ
る
–. ディスクリプタなどの既知の
USB のビットフィールドを見
つける
1. 通常のリバースエンジニア
リング手法でフックポイント
を見つける
1. ファームウェアにフックを追加
して、機能を追加および変更
2. 専用のリンカスクリプトで C
とアセンブラコードをコンパイ
ルし、元のファームウェアの未
使用部分に追加
標的になりうるデバイス
ここでは USB メモリを対象
にしているが、同じアプロー
チは他のデバイスにも有効
外付けハードディスク
ウェブカメラ、キーボード
おそらく他にも多数
A
B
C
感染と特権上昇に必要なのはキーボードエミュレーションだけ
( ソフトウェアの脆弱性は不要 )
問題 –
Linux マルウェアは一般ユーザの権限で実行されるが、他の
USB メモリに感染を広げるには root 権限が必要
解決策 –
sudo で使うパスワードをスクリーンセーバーで奪取
LD_PRELOAD でパス
ワード盗聴プログラムを
リンクしたスクリーンセー
バー( もしくは
policykit) を起動
ユーザがパスワードを入力
し、スクリーンロックを解除
マルウェアはパスワードを盗
聴し、 sudo で root 権限を
奪取
この特権上昇モジュー
ルは
Metasploit に投
稿予定
ボーナス
: 仮想マシンの脱獄
ゲスト仮想マシン
ホスト
1. ゲストの仮想マシンがUSB
デバイスを書き換え (SCSI コ
マンドを使う )
1.USB デバイスがキー入力を
偽装、 DNS 設定の変更
1.USB デバイスが別
のデバイスとしてホ
ストマシンに接続
「そのパソコンでスマートフォンを充電してもらえないかな」 –
Android フォンが USB 攻撃のもっとも身近なプラットフォームに
Preparation – Android デバイスの
Ethernet-over-USB 機能はほとんど設定を
必要としない
攻撃 – スマートフォンがデフォルトゲートウェイ
になり、すべてのインターネット通信を傍受
USB イーサネットア
ダプタが DHCP で
デフォルトゲートウェ
イ を変更
コンピュータからのイ
ンターネット通信はす
べてスマートフォン経
由に
第二要素認証によるハッキ
ング
ウイルスに感染したスマート
フォンは、USB 接続したコン
ピュータにキーボードエミュ
レーションで侵入可能
これによりオンラインバンキン
グの「二要素認証」セキュリ
ティモデルを崩せる
srlabs.de/badu
sb で実証コードを
公開
USB による攻撃のバリエーションは多数
考えられる攻撃手法
結果
外部ストレージはファイルを削除するかわりに隠し
てしまうことができる
ストレージに追加されるファイルにウイルスを追加
アンチウイルスソフトウェアが最初にアクセスすると
オリジナルのファイルが見えるが、その後のアクセス
ではウイルスに
ブート時にキーボードをエミュレートし、 USB メモリ
に隠された別の BIOS をインストール
USB ディスプレイをエミュレートし、 CAPTCHAS や
乱数表などのセキュリティ情報を取得
これまでに紹介
した攻撃手法
キーボード
エミュレー
ション
USB メモリや外
付けハードディス
クにデータを隠蔽
書き込みデータの
書き換え
PC BIOS のアッ
プデート
ディスプレイの偽
装
ネットワーク
カードの偽
装
「
USB
ブートセク
タ」ウイルス
USB 攻撃に対する効果的な防御は存在しない
防御方法
USB デバイスのシリアルナンバーは必ずしもユニークではない
ホワイトリストメカニズムを持つ OS は ( まだ ) 存在しない
限界
可能だとしても、USB デバイスのファームウェアはそのファームウェ
アを通じてしか読めない。悪意のあるファームウェアは正常なファー
ムウェアとして偽装できる
重要なデバイスクラスも
しくは
USB そのものを
ブロック
当然ながら、ユーザビリティに大きな影響を与える
非常に基本的なデバイスクラスでも悪用可能で、それらをブロックす
るとほとんどのUSB デバイスが使えなくなる
不適切な実装がファームウェアアップデートを許してしまう可能性は
否定できない
小さなマイクロコントローラ上では、強固な暗号技術の実装は困難
既存の膨大なデバイスは脆弱なまま
USB デバイスのホワイ
トリス
デバイスファームウェア
のスキャン
ファームウェアのアップ
デートにコード署名を使
用
ハードウェアでファーム
ウェアアップデートを無
効に
単純で効果的