t49's blog

電子工作初心者のブログ

BadUSBを自作した話

概要

t49.hatenablog.jp

先日製作したスクリーンセーバーキラーはPCにHID(Human Interface Device)のマウスとして認識させています。
今回はキーボードと認識させて、任意のキー入力を行い、管理者権限でコマンドプロンプトを起動後、メモ帳を開いて文字を入力するという実験を行いました。

管理者権限を取得しキー入力ができれば、様々な悪さができてしまいます。
そのような悪意あるプログラムが仕込まれているUSBのことをBadUSBと呼びます。

実験内容

作成した実験用のプログラムは、下記のようにしました。

  1. 「Win」 + 「r」(「ファイル名を指定して実行」を開く )
  2. "cmd.exe"と入力
  3. 「Ctrl」+ 「Shift」+ 「Enter」(管理者権限で実行)
  4. 「このアプリがデバイスに変更を加えることを許可しますか?」に対して「←」で「はい」を選択
  5. 管理者権限で「cmd.exe」が開く
  6. "notepad.exe"と入力
  7. 「Ctrl」+ 「;」(画面録画した際文字が見えづらいので、文字を最大限まで拡大)
  8. 任意の文字を入力(helllo, worldとASCII文字列)

実験結果

実際にUSBポートに差し込むと以下のGIF動画のようにコマンドプロンプトが開き、「notepad.exe」を実行し文字列を入力し始めました。
※GIF動画では見えませんが、管理者権限で実行されています。

実行結果(GIF)

このようにUSBフラッシュメモリの形状に化けたキーボードは普段我々がしているように自由にPCを操作することが可能です。

特にWindowsの管理者アカウントでログインしている場合、管理者権限が必要な時、「このアプリがデバイスに変更を加えることを許可しますか?」に対して「←」で「はい」を選択するだけでいいので、BadUSBは簡単に管理者権限を取得してしまいます。

逆に標準アカウントから管理者権限を得ようと思うと管理者のパスワードを入力しなければならないので、上記の実験用のプログラムは途中で失敗します。
なぜなら今回製作したBadUSBの実態はUSBフラッシュメモリの形状をしたキーボードに過ぎず、プログラムした決まったキー入力しか行えないからです。
英数記号で総当りを行うことができれば理論上、管理者権限の取得は可能ですが、余程簡単なパスワードでない限り現実的ではありません。

まとめ

  • BadUSBは攻撃が成立するとユーザが行うキーボード・マウスの操作を全て行うことができるため非常に危険。
  • アウトプットはできるがインプットはできないため、単純な操作しかできない。
  • 攻撃を行うにはBadUSBを対象のPCに挿し込む必要がある。

以上のことから、下記のような対策が有効と考えました。

  • 不審なUSBデバイスは接続しない。
  • 標準アカウントを使用し管理者権限をパスワードで保護する。
  • 信頼できない場所では、下記のような製品でUSBポートをロックする。