
あらゆるUSBデバイスを攻撃に転用可能な「BadUSB」、Black Hatにてデモ予定 59
ストーリー by headless
攻撃 部門より
攻撃 部門より
あるAnonymous Coward 曰く、
WebカメラやキーボードなどのUSBデバイスを攻撃プラットフォームにするための技術「BadUSB」が開発され、デモが2日から7日まで開催されるBlack Hat 2014 USAで行われる予定だ(Ars Technicaの記事、 Black Hat - BadUSB、 本家/.)。
記事によるとファームウェアを改ざんするものであるらしい。このBadUSBハッキングは、理論的にどんなタイプのUSBデバイスにも有効で、ハッキングされたUSB機器を検知するのはほとんど不可能だという。その上、仕掛けられたものを解除することも難しいとしている。
BadUSBはUSBデバイスのファームウェアを書き換えることで、システムから種類の異なるUSBデバイスとして認識されるようにするというもの。例えば、USBメモリーをUSBキーボードとして動作させ、悪意のあるコマンドを入力させるといったことが可能になるとのこと。
例えば (スコア:1)
USBキーボードをUSBメモリーとして動作させ、データが読みだされそうになったときに必死に入力するはめに
# 何となく思い浮かんだので……
Re: (スコア:0)
映画とかドラマなら盛り上がりそうではありますね。
#でも、自動で何とかなりそうですね(笑
#嫌いじゃないです。イーサンハントの仲間がやりそう。
あるときはキーボード (スコア:1)
あるときはキーボード、あるときはマウス、
あるときはディスプレイ(VGAアダプタ)、
またあるときはキャプチャデバイス、NIC・・・。
およそなんでもできてしまいそうですね。
DVDドライブに化ければドライバのインストールもお手の物。
理論的にどんなタイプのUSBデバイスにも有効 (スコア:0)
そりゃファームを書き換えりゃどんなデバイスだって何にでも変わるだろ。理論的にはな。
素人みたいな煽り文句、さすがにスラドでは見たくないねえ。
Re:理論的にどんなタイプのUSBデバイスにも有効 (スコア:1)
今まで散々見てきてる気がしますがそれは。
Re: (スコア:0)
ほんと「ファームが外部から書き換えられるなら」可能ですよね。当たり前すぎて笑えるけど。
そもそも、いろんなデバイスになれるように書き換えることができるのだから。
市販のデバイスで外部書き換えが有効になったまま出荷されているデバイス見つけました、というのを
注目浴びるように盛った表現にしてるんでしょうね。
こんなのが大手を振って出てくるようなら大したことないイベントと思われちゃいますよ、主催者さん
Re: (スコア:0)
つーか、PC系の大概の周辺はファームウェアアップデート機能もってないか?
マザボのBIOS、HDD、ADSLルーター、・・・
隠されているだけで仕組みはあるのが普通でない?
ないのはそこまでサービスする必要のない安い単純なデバイスで。
なぜあるかというとそっちのほうが便利とユーザーが望んだからだろう。
Re: (スコア:0)
逆。
保証期間に不具合クレームでハード交換より、
ファーム交換の方がコストかからない。
それだけ。
どうやってファームウェア書き換えるの? (スコア:0)
もちろん攻撃者は物理的にデバイスへアクセスできないんだよね?
Re:どうやってファームウェア書き換えるの? (スコア:1)
Re:どうやってファームウェア書き換えるの? (スコア:3)
この発表者の人はブータブルUSBメモリからLinuxかなんかを起動して、そこから別のUSBメモリにウイルスを仕込んだという発表をするということ
です。そして、その最初のブータブルUSBメモリにもそのウイルスが書き込まれていて、BIOSから見たときだけ複合デバイスに見える、と。
Re: (スコア:0)
私はWindowsのUSBメモリをICカードリーダとして認識されるようなUSBメモリの
デバイスドライバの開発経験があるのだけど。
ICSPモードの説明にしても、ブータブルUSBメモリの説明も、ほとんどわからない。
限られた文字数で説明しようとするから、省略されているところが多すぎなのかもしれない。
Re:どうやってファームウェア書き換えるの? (スコア:3)
このストーリで問題なのは、USBメモリが単体でCPUを持っていて、かつUSBメモリのファームウェアがPC単体、USB経由で書き換えられる
というところです。それを利用して、PCから書き換えたり、接続してくるホストのOSを判別したり、判別結果に応じて動作を変えたりする
ことができたというのが内容です。
その結果として、BIOSがUSBメモリを読み出したと判定したときと、それ以外の通常のOSが読み出した時とではフラッシュメモリ上の
別の領域を内容として返し、かつBIOS判定の場合はUSBキーボードとしても認識させている(複合だかハブだか)ということです。その
領域には攻撃者に都合の良いOSが書き込まれていて、キーボード操作を送って外部ストレージからの起動を選ばせます(F12を押して、
下キーを押して、というような単なる操作記録のようです)。
この"攻撃者にとって都合の良いOS"には、単体でファームウェアを書き換えるプログラムが書き込まれていて、同時に繋がれているほかの
改造可能なUSBメモリが存在すれば、自分と同じプログラムを書き込むという風に設計されています。
また、BIOSか通常のOSかを判別するほかに、USBメモリ(マスストレージ)以外のデバイスとして見えるよう、まったく違うファームウェアを
書き込むことができるともされています。例えばUSB NICとして認識させ、DNSサーバを実装し、応答を偽装し、詐欺をはたらくということが
例に挙げられています。
# ICSPは In-Circuit Serial Programming の略で、マイコンを書き込み機ではなく、実際の基板上に実装した後で
# 独自のシリアル通信で書き換える機能です。USB経由で書き換えるのはICSPとは言わない気もします。
Re: (スコア:0)
タイトルが「あらゆるUSBデバイスを攻撃に転用可能」とあるのが、まずイカんのだよ
これは市場にあるどんなUSBデバイスもこのファームは感染可能と読めるような書き方だから
とにかくファームを書き換えられればそりゃUSBデバイスとして基本的に何でもできるわけで
そこは意外なことは何もない
この内容は攻撃に便利使えるUSBファームウエアの書き方見つけました・実装しましたって話
キーボードとストレージとして動作できる前提なのだから、リブートして好きなことできますよ
完全に乗っ取られてる状態ですから
技術的に新規性があるとしたらホストが何が動作しているか判定する安定した方法を見つけたらしいことかな
Re:どうやってファームウェア書き換えるの? (スコア:2)
いや、新規というか問題なのは市販USBメモリを書き換えたところだと思いますよ。極端な話、道端に落ちてることもあるわけですから。
USB開発キットを買った人物とかマイコンを何個か買った人物というのより追跡しづらいでしょうし、大量に生産もできます。
諜報機関が使うのなら、この改造メモリを仕込むのは目標のPCに数hopで到達できる場所でよく、あとは正規の利用者に運ばせることもできる。
そうやってアクセスが簡単になってしまっていたのが問題ではないかと。
タイトルが悪いというのにはまったく同意です。
Re: (スコア:0)
物理的にデバイスにアクセスできないのを どうやって解決するのか ということであって
物理的にデバイスにアクセス場合のファームウェア書き換え方法を聞いているのではないような、、、
ファームウェアを書き換えるEXEを起動すれば、一般権限で、書き換えることができてしまうので
悪意のある人間は、自分のパソコンにUSBをさして、ファームウェア書き換えのEXEを実行してしまう
ような気がしました。
ICSPモードにすると、EXEで書き換えるより簡単になるということなのでしょうか?
Re: (スコア:0)
Re: (スコア:0)
攻撃者の手元にはUSBデバイスがあるということなのかな。
攻撃者の手元にUSBデバイスがあるのに、解体しないと言い切れる根拠は何?
Re: (スコア:0)
ホビー用途のブートローダー内蔵でUSBポートからプログラム・メモリの書き換えが出来るマイコンボードと勘違いしてるだけだろう
キーボードなんかに使われてるローエンドのUSBデバイス(LSI)の典型的な構成は「USBデータ転送エンジン+いまだに現役の8051」で、USBポートからのICSP機能なんかついてない
逆に言えばUSBポートから書き換え可能なブートローダー内蔵のキーボードを作って内緒で販売すればやりたい放題になる可能性はあるわけだが
Re:どうやってファームウェア書き換えるの? (スコア:3)
USBポートからのICSP機能なんかついてない…と思うじゃないですか。たぶん、そうじゃないんでしょうなー。
SiliconMotion SM3255ENのカタログ [siliconmotion.com]を見るに内蔵8051がプログラムできないこともないふいんきだし、ツールが [blogspot.com]流出していて、書き換え方法があるっぽいような…
Re:どうやってファームウェア書き換えるの? (スコア:2, 興味深い)
市販品でも機能改善やUSB互換性向上とかでファームウェアアップデートが提供されてるなんて珍しくもないですしね。
特にUSB3.0はまだ枯れてないから更新できる機器がそこら辺に一杯ありそうです。
Windows8対応の為にUSB3.0-HUBのファームを更新 [buffalo.jp]したり、USBメモリのファームを更新 [iodata.jp]したり、ISOマウント機能付きUSB-HDDのファームを更新 [zalman.co.kr]しようとしたら、無関係のUSB-HDDのファーム領域 [speeddragon.com]に書き込まれちゃって買い替えたりとかしました。
Re:どうやってファームウェア書き換えるの? (スコア:1)
Re: (スコア:0)
書き換えたものを用意しておいて、どうにかして被害者にプラグさせるのでは。
Re: (スコア:0)
書き換えツールさえあればリモートでも出来そうだけど。
USBオーディオプレーヤーなんかはメーカーサイトからダウンロード出来ますよね。
Re: (スコア:0)
製造段階でBadUSBハッキングが行われると怖いって話じゃないかな。
良くある、某国製品にはバックドアが仕掛けられている! の範疇に、あらゆるusb機器が含まれるようになるってとこでしょう。
Re: (スコア:0)
USBメモリのautorunを書き換えてウィルス等を実行させるマルウェアがあったのをお忘れで?
ファームウェアの書き換えが簡単にできるとは思えないけど、絶対に不可能とも言えない。
Re: (スコア:0)
性能が大幅に改善する流出ドライバと称してネットに置いておくとか、
偽セキュリティソフトや偽ゲームソフトにするとか(競合するセキュリティソフトを止めてくださいって奴)、
中国の工場で仕込んでしまう(リージョンやIPをトリガに起動する)とか。
USB接続の「ただの石」 (スコア:0)
ただの石 [srad.jp]が意志を持つようになるかもしれないって事か
Re: (スコア:0)
後のモノリスである
USBマスストレージをMTPと認識させることでアクセス制御を迂回 (スコア:0)
ファームウェアの改造すら必要ないらしいです。
Re: (スコア:0)
・MTPを許可していた(禁止していなかった)のがマヌケという話
・単なるUSBマスストレージにはMTPの機能は無い
Re:USBマスストレージをMTPと認識させることでアクセス制御を迂回 (スコア:1)
> ・単なるUSBマスストレージにはMTPの機能は無い
まあそれは正しいんですけどね……。
Windowsの場合MTPデバイスはマイクロソフトがWPDというフレームワークを経由して使うんですが、USBマスストレージをWPD経由で使うことも出来るんですよ。
マイコンピュータからリムーバブルディスクを右クリックして、「ポータブルデバイスとして開く」てのがあります。
どこぞの企業で採用されていたセキュリティシステムがリムーバブルメディアを禁止しつつMTPがすり抜けていたそうですが、この機能を使うとどっちの扱いになるのか気になるところではあります。
Re:USBマスストレージをMTPと認識させることでアクセス制御を迂回 (スコア:1)
どこぞの企業で採用されていたセキュリティシステムも、ちゃんと最新バージョンに更新してればMTPもブロックできたんですけどね。
どこぞの企業の内部では、バージョンアップしてなかったセキュリティ部門への怨嗟の声も聞こえます。
#絶対AC
Re: (スコア:0)
UMASSの制限というやつは、だいたいアタッチしているドライバで判定されるわけで、
(あるいは、UMASSのドライバを無効にするとか。MTPは別ドライバだからすり抜ける)
その上がWPDであろうが、結局UMASSなんだから、制限はかかる。
メッセージ認証コード、使ってなかったのか (スコア:0)
現在のUSBデバイスは、製造元が作ったファームウェアかどうかを、確認するメッセージ認証コードとか、使っていないのですか?
それとも、その確認を回避して書き込めるのだろうか?
ファームウェアにコード署名を導入とかあるのかなぁ?
誰か、BadUSB もっと勉強して。
Re: (スコア:0)
Re: (スコア:0)
デバイス自身が認証プロセスを持っていなかったのか、ということだったのです。
コード署名の検証を安価なUSBデバイスがするのは、難しいかもしれませんが
メッセージ認証コードくらいは実装できるかと思ったのです。
メインフレームのデバイスでは、そういう実装をしているものもが昔あった。
Re: (スコア:0)
TPMだかEFIだかの関連でブートローダ回りの正当性チェックする機構はあるね。
そもそもUSBデバイスではファーム更新機能自体無い奴も多いと思うんだけど…
ファーム更新機能を正規に持つなら、自己書き換え前に署名検証とかは組み込めるし組み込まれてることも珍しくない。
ハードレベルでの検証機能となると、ソフト的に書き換えが実行されてる前提に基づいて実装される対策なわけだけど、
USBデバイスのファームに自己書き換え脆弱性が存在するリスクに対してそこまでのコストを払うかというと…まぁそういうことでは?
そこまで警戒する頃には、見た目そっくりで悪意あるファームを持った偽物をソーシャルハックで仕込まれる警戒とかも必要だろう。
となるとホスト側とデバイス側えガチガチに相互認証するくらいの領域に足突っ込んできて、そんなの一般用には出てこないだろ…
Re:メッセージ認証コード、使ってなかったのか (スコア:2)
ぐぐったところだと、USBメモリって中国の業者がその時手に入るフラッシュメモリとかをコントローラと組み合わせ、書き込みツールを
使ってパラメータを設定して製造するようです。taobaoなんか見るとメモリ部品以外がすべて実装された基板も売られてます。
しかし実際にはパラメータ設定と言ってもアルゴリズムを変えられたり動作を変えられたりするようで、設定とプログラムに別領域がある
というよりはひとつのバイナリにまとめて書き込んでいるのかと思います。であれば、その書き込みツールを使って、パラメータではなく
通常はいじらなくてよい、誰も気にしないプログラム部分をいじれば、機能を変えることができるということなのじゃないでしょうか。
コントローラの方でコードプロテクトをかけるくらいはしても当然にも思えますが、何せ8051を未だに新規で製造しているくらいですから、
一般人が書き換えることはない、する利益もないと想定して、一切対策されてないということは十分ありえると思いますね。
Re: (スコア:0)
良質な情報ありがとうございます。
書き込まれたバイナリを比較的安価なメッセージ認証コードのハードウェアで
チェックしていなかったのが、不思議だったのです。
昔、メインフレームの周辺機器を設計したことがあって
信頼性、安全性には、非常に厳しい環境にいたせい
かもしれないが、パソコンのずさんな考え方について
いけない。
多分、激安な価格でないとパソコンの周辺機器が売れない
といった事情があったかもしれないですけど。
Re:メッセージ認証コード、使ってなかったのか (スコア:2)
個人でパソコンいじってて信頼性ってのを実感することはあまりないですね。高信頼性をうたってる装置ってどうにも
ロバストさがなくて、私はお膳立てをして環境を整えてやらないとてこでも動かない、こける、みたいなイメージがあります。
コード署名をつけるといっても、チップメーカーはUSBメモリメーカーの正当性を保証できないし、認証基盤なんか作れないですよ。
結局コントローラに秘密鍵をつけなければいけないのなら、その時にファームウェアも書き込んでしまえばよいし、その後は書き換え
不能にするというほうが、対策として現実的じゃないかと思います。
Re: (スコア:0)
コード署名で、USBメモリメーカーの正当性まで保証する必要はないと思いますよ。
任意の悪党がファームの改竄できなければいい。
心配なら、ユーザーは、信頼のUSBメモリメーカー 〇立製作所 とか買えばいいのですから。
コントローラに秘密鍵をつけて、ファームウェアを書き換え可能にすることの問題点が見えないです。
知らない人もいるので解説すると、メッセージ認証コードはDES暗号などの秘密鍵を使って計算します。
Re:メッセージ認証コード、使ってなかったのか (スコア:2)
まあ、非公開のはずの仕様が漏れたか、方法が見つけられたかということが今回の発表に繋がるので、仕様を隠すことには
あまり意味がないでしょう。
やはり、人々が単機能で改造・再利用不可能だと思い込んでいたものが、実はプログラマブルだった、というところが問題は
ないでしょうか。USBメモリは事務処理で持ち込まれたりするもので、購入者と使用者というのも1対1対応ですらないわけです。
まったく書き換え不能で、かつできれば内容を検証可能なコントローラを誰かが新しく設計するか、チップメーカー程度の信頼された
大手にのみ書き込み可能な制度を作れれば解決するのではないかと思います。
たぶん、誰かが8051ベースではない新しめのCPUでコントローラを作り直し、それには組み立てるメーカーではなくコントローラの
メーカーの署名チェックがつくのでしょう。そして、それが数年間かけて広まっていくのでしょう。たぶん。
Re:メッセージ認証コード、使ってなかったのか (スコア:2)
もしBadUSBが非公開の仕様を突破する方法を見つけたのなら、それをどうやって見つけたのかですね。
それがわかれば、その方法では見つからないように仕様を変更すればいい。
Security through obscurity has never achieved engineering acceptance as an approach to securing a system [wikipedia.org]
The United States National Institute of Standards and Technology (NIST) specifically recommends against security through obscurity [wikipedia.org]
利用者が信頼性を重視するなら〇立製作所のUSBメモリを買えば
いいし、価格を重視するなら、安いところから買えばいいのです。
現状の市場構造では日◯製作所がUSBメモリを作るというのは現実的ではないですよ。現実的には彼らにできるのは検証することだけです。
業務用USBメモリを、例えば市場価格の1000円増しで販売する…売れると思いますか? そして、買った人はそれ以外のUSBメモリを自社周辺から
一掃できますか?
チップメーカーが組み立てメーカーに証明書を発行して、
組み立てメーカーは、その証明書でファームに署名をするということでいいような。
利用者は、信頼できる組み立てメーカーのデバイスを購入するのです。
どの組み立てメーカーが作ったものかは、証明書によって検証できるので大丈夫。
組み立てメーカーというのがそもそも日曜大工なのですよ。しかも、USBメモリというのは他人から受け取るものです。
顧客に向かって、あなたの持ってきたUSBメモリは実は怪しい業者のもので、信頼できないので中の書類は受けとりません、などと
いうことはできないでしょう。
一番、安いのが、仕様の非公開
次が、メッセージ認証コード
その次が、コード署名
なんだかバランス感覚が現代と離れているような気がしますが。そもそも仕様を非公開にすれば書き変えられないと思っていた
ところ、書き換えられてしまった、というのが出発点でもあるわけで。
Re: (スコア:0)
TPMを使ったブートローダでは、取り外しができるUBSデバイスの正当性チェックできない。
USBデバイスのファームに自己書き換え脆弱性が存在するリスクを対策しなければ
感染してUSBデバイスが悪事をするようになると、コストをけちることないと思う。
安価なUSBデバイスは、わからないが、メッセージ認証コードくらいのハードは
たいしたことないと思う。
安全なお店で買ったUSBデバイスを、安全な自宅で利用することは多いが
その場合は、ソーシャルハックの心配はない。
相互認証が面倒かどうかではなくて、セキュリティ的な問題があれば、やるしか
ないのでは。
Re:メッセージ認証コード、使ってなかったのか (スコア:2)
商業的に一番簡単なのは、8051をやめてARMにしちゃうことでしょう。セキュアブートとかもついてます。
USBメモリは片手か両手で数えるくらいの部品数しか載せませんし、メモリはオンダイでCPUのバスは半導体の外にも出ません。
よって暗号アクセラレータのような外部ハードをボード上に追加することはできません。コントローラ+メモリの2チップしかそもそも
載っていません。USB 2.0のフラッシュメモリ程度であれば、FelicaのようなIC暗号カードと同じ方向性で、マスクROMを載せて
プログラム書き換え不能とし、フラッシュ領域に設定だけを書き込むようにするのが解決策としてよくあるやり方じゃないかと思います。
Re:メッセージ認証コード、使ってなかったのか (スコア:1)
誤変換なんだろうけど
”だんぱ"じゃなくて”たんぱー”(tamper)
突っ込む、どつきまわすくらいにとっておけばいい
#マルチプルタイタンパーとか
中身ダンプして改変、リストアに耐えるってのも耐タンパー性でいいとおっもう
Re:迷惑な (スコア:1)
でもベネッセの件でも、充電のためにスマホをPCにつないだら、データの持ち出しが可能なことに気付いた、というのが発端だったので、あながち的外れでもないような気がします。
でも「USB扇風機を禁止」というのはさすがに捕捉率の点からみて効率が悪いので、「充電・給電目的で、PCのUSBポートへの外部機器の接続禁止」ぐらいに落ち着くのではないでしょうか。
Re:迷惑な (スコア:2)
USBポートのないシンクライアントと、USB充電ポートのあるコンセント、外部持ち込みのUSBメモリを吸い出す監視された専用装置を用意しましょう。
接続できなければ悪さをすることもできないのです(狂信者の目で)
# USBを廃してPS/2のみを備えた非x86の需要があるのかもしれない…?
# ほかにも盗み出せる方法はいろいろあるけども
Re:迷惑な (スコア:1)