badUSBを無理矢理実装して味見してみる

 2015-04-29
一部で騒がれているBadUSBを味見!
 
BadUSBとは! 見た目はUSBマスストレージクラス! 頭脳はHIDデバイス! なシロモノ。らしいです。
特に、元々USBマスストレージクラスであるUSBフラッシュメモリのコントローラのファームウェアを書き換えて、HIDデバイスとして振る舞わせる事、振る舞わせたデバイスの事を指すらしい。
USBの根本的なバグ~等と騒がれていたのでどーいうことだと期待(?)していたのですが拍子抜けです。

これなら自作も難しくないね。USBが喋れるマイコンも安く手に入るし。
※作れるとは言ってない



というわけで、とってもインチキな手法を用いて作ってみます。

badUSB19075100.jpgbadUSB19165700.jpgまずは中古ショップ等で打ち捨てられているUSBキーボードを入手。サクッとバラして中のコントローラをチェック。このキーマトリクスを乗っ取ります。


badUSB20163600.jpgbadUSB20164300.jpgキーマトリクスの乗っ取りなんて簡単簡単! ・・・と思っていたのですが、事はそう簡単には行きませんでした。小癪なことに単純にマトリクスのスキャンをしているのではなく、プルアップと立ち上がりエッジ、立ち下がりエッジを使った割り込み処理のようなのです。嗚呼、面倒すぎる。


badUSB22325500.jpgbadUSB23320500.jpgbadUSB23322100.jpg
キーマトリクスの接続部にPICを直結して乗っ取る予定でしたが、それではタイミング的に難しいかなと思われたので、力業で、キーマトリクスのスイッチを挟み込んで、そのスイッチをPICで駆動するやりかたにします。無理矢理。


DSC_3798.jpgDSC_3803.jpgDSC_3807.jpg
DSC_3811.jpgDSC_3818.jpg
途中失敗もありましたが完成! 無理矢理ですね。 動けば良かろうなのだ。



よくわかるどうが



手法としては、その昔に一時話題になった、携帯・PHSに指すと自動的に任意の番号にコールするドングル、と似たような感じですね。HIDデバイスとして振る舞って、任意の入力データをOSへ通知するもの。
もっともっと高度になれば、接続してきたOSを読み取って流し込むデータを変えるなどすればマルチプラットホームなアブナイデバイスになりますね。おお怖い怖い。

この手法のキモは、ユーザがHIDデバイスを挿入したことに気づかないというところでしょうか。USBメモリを挿したつもりなのにHIDデバイスがロードされ、あれっ?と思っているうちに入力データを流し込む、と。
このようなあからさまなブツに関しては、OS側で「HIDデバイスを有効にしますか?」と問い合わせることでほぼ無力化できると思われる。 有効にするかどうかの返答にUSBなHIDデバイスを使うのは危険が伴うのでそれらは一時的に全部無効化、「30秒後に有効にします」等とアナウンスして、意図しないデバイスの場合はユーザに引き抜いて貰うことで回避する。
画面の解像度を変更したときに「映っていますか?」のあれ。

とは言え、これも万全ではない。HIDデバイスの姿をしたデバイスの場合、ユーザは不審に思わない。普段は健全なデバイスとして振る舞っておき、何らかのトリガで悪意ある入力データを流す、という実装の場合は防ぐのが難しい。
ファームウェアのフィンガープリントを取得できるようにしておいて、見知らぬHIDデバイスは使用不可にするなどの対策でないとダメっぽい。そうなるとUSBの旨味である標準ドライバによる動作が否定されることになるので、痛し痒し・・かな。。

信頼できるHIDデバイスの需要が今後一部では高まるかも知れませんね。。
 
コメント












管理者にだけ表示を許可する
トラックバック
トラックバックURL:
http://wbbwbb.blog83.fc2.com/tb.php/195-2c7bf373
≪ トップページへこのページの先頭へ  ≫