【温故知新シリーズ】 脅威のスポットライト:USBデバイスの不正利用

By The Cylance Threat Research Team

温故知新シリーズブログでは、新たな知見を広げるために過去に米国でリリースされたブログを翻訳しています。本ブログ記事は、2017年4月25日に米国で公開された抄訳版です。原文はこちらからご覧頂けます。

概要

Hak5は最近、Bash Bunnyと呼ばれる新しいツールをリリースしました。このツールは、あらゆる種類の機能侵入テストシナリオを提供する、再プログラムされたUSBデバイスです。デバイスのセキュリティは現在大きな関心を集めている問題ですが、攻撃を阻止する方法は多数あり、そのすべてに最新のセキュリティ技術が必要なわけではありません。多くの場合、最も簡単な解決策はデバイスを常に物理的に管理し、信頼できないUSBを接続しないことです。クラウドのファイル共有サイトの登場により、このアドバイスに従うのは以前よりも容易です。

このブログでは、USBフラッシュドライブの背景にある仕組みを明らかにし、それらがどのように動作するかを説明します。また、USBフラッシュドライブコントローラのファームウェアがいかに再プログラミングに脆弱で、どのようなリスクがあるかについても取り上げます。次に、HAK5のUSBフラッシュドライブ攻撃ツール、Rubber DuckyとBash Bunnyについて説明します。そして、物理的なセキュリティの脅威の軽減に役立つヒントを示します。

本題に入る前に、情報を次のセクションに分けます。

  • USBフラッシュドライブの仕組み
  • USBコントローラファームウェアの再プログラミング
  • Bash BunnyとRubber Ducky
  • 物理的境界の保護

USBフラッシュドライブの仕組み

USBフラッシュドライブの内部には、プロセッサ、ブートローダー、RAM、ファームウェア、USBコントローラ、LED、およびマスストレージデバイスが格納されています。

 

図1:USBフラッシュドライブの内部

USBブートローダーは、実行時にファームウェアとの間でRAM(ランダムアクセスメモリ)の内容をロードおよび保存するために使用されます。USBコントローラは、マスストレージユニットに対して実行されるデータクエリの読み書きを管理するために使用されます。マスストレージユニットは、ROM(読み取り専用メモリ)チップなどの不揮発性メディアにデータを保存します。

USBフラッシュドライブは、USB(ユニバーサルシリアルバス)と呼ばれるプロトコル上で動作します。割り込み要求は、USBデバイスとホストコントローラ間で、USB接続上で送受信されます。

USBデバイスにはマスストレージクラス(MSC)が含まれており、これを使用することで内部ストレージにアクセスできます。ただし、マスストレージクラスは、パフォーマンス要件を満たしていません。そこで、MSCのパフォーマンス上の問題を解決するため、USBマスストレージデバイスでコマンドキューイングとアウトオブオーダー完了を可能にする、USB接続SCSI(Small Computer System Interface)と呼ばれる別のクラスが導入されています。

そのコマンドの一部を次に示します。

図2:SCSIコマンド ( http://usb.org/を参照)

USBコントローラファームウェアの再プログラミング

USBフラッシュドライブの動作の大まかな仕組みがわかったところで、どのような方法でUSBデバイスを悪意のある目的のために再プログラムできるかを見ていきましょう。

USBデバイス記述子には、USBの製品IDとベンダーIDに関する情報が含まれています。製品IDとベンダーIDは16桁の16進数で表されます。この情報は、キーボードやEthernet over USBアダプタなどのUSBデバイスタイプを定義するために使用されますが、これをファームウェアによってプログラムで設定できるのです。

ここでセキュリティ上の懸念が生じます。ファームウェアを再プログラムしてキーボードなどの異なるデバイスクラスの情報を格納できるということは、キーストロークをインジェクトする機能をUSBフラッシュドライブに設定できることになります。多くのUSBフラッシュドライブには書き込み保護がないため、ファームウェアの再プログラミングが可能です。さらに、ファームウェアイメージにマルウェアを埋め込むこともできます。

USBデバイスをコンピューターに接続してデバイスドライバーがインストールされた後は、オペレーティングシステムは本質的になりすましデバイスを信頼するため、悪意のある連鎖反応を引き起こす可能性があります。他の例については、このブログの「Bash BunnyとRubber Ducky」のセクションに記載します。ここに掲載されているサイランスの調査チームのビデオでデモをご覧いただけます。

Bash BunnyとRubber Ducky

Bash Bunny とUSB Rubber Ducky の2つは悪意のあるUSBデバイスです。これらのデバイスはHAK5コミュニティのメンバーによって開発され、製品IDとベンダーIDを偽装することによってキーボードなどの他のデバイスをエミュレートします。これにより、単純なキーストロークインジェクションから接続エンドポイントへの完全なリモートコマンドシェルアクセスまで、さまざまな攻撃シナリオが可能になります。そこからこれらのツールを使用して、あらゆる種類のペイロードを実行できます。これらの攻撃では、ソーシャルエンジニアリング戦術によって、ユーザーをだまし不正なUSBフラッシュドライブを挿入させます。または、攻撃者がデバイスに物理的にアクセスして、目立たないポートにこっそりUSBデバイスを挿入する必要があります。

Rubber DuckyとBash Bunnyの主な違いは、エミュレートするデバイスの数です。Rubber Duckyは単にキーボードデバイスを模倣するだけであるのに対し、Bash BunnyはEthernet over USBアダプタ、シリアルポート、ストレージデバイスなど、それ以外のさまざまなデバイスをエミュレートできます。ペイロードは、カスタムプログラミング言語であるDucky Scriptに書き込まれます。Bash Bunnyはテキストエディターを使って再プログラムすることもでき、その場合、ファームウェアイメージとしてロードする必要はありません。以下の図を使って、これらのデバイスに関連する攻撃をいくつか説明します。

まず、Rubber Duckyを使用して次の「duckyペイロード」をメモリにインジェクトしてみましょう。

図3:Rubber Duckyペイロード

ご覧のように、リバースMeterpreterシェルを実行できるようになりました。


図4:リバースWindows Meterpreterシェルの取得


図5:Windows SYSTEMアカウントに昇格

続いて、次の図に示すように、Bash Bunnyを使用してPowerShellスクリプトとInvoke-Mimikatzを実行し、Windows認証情報をダンプします。


図6:Bash Bunnyペイロード


図7:Mimikatz PowerShellペイロードの実行


図8:ダンプされた認証情報

物理的境界の保護

攻撃者が無人のシステムに物理的にアクセスしたことから侵害を受けた企業が多数存在します。このようなシステムにはキオスクやATMも含まれます。USBフラッシュドライブを使えば、このようなシステムに悪意のあるペイロードを簡単に配布できます。USBフラッシュドライブはどこにでもあるため在庫管理が難しく、悪意のあるUSBフラッシュドライブと正当なフラッシュドライブが混ざってしまうからです。

この点を念頭に、専門家としてヒントをいくつか提供したいと思います。

  • ハードウェア式の書き込み保護スイッチが付いたUSBフラッシュドライブを使用する。
  • USBドライブに保存する企業データの量を制限する。
  • USBドライブをキーチェーン/ストラップにつなぎ、メディアの紛失を防ぐ。
  • 非アクティブなUSBポートを無効にする。
  • Windowsグループポリシーを設定して USBデバイスをフィルターする

結論

繰り返しになりますが、ハードウェアコンポーネントの設計時にセキュリティ制御を導入すべきです。最初から物理的セキュリティと論理的セキュリティを包括的な1つのセキュリティプログラムに統合する必要があります。USBフラッシュドライブに関係する攻撃の詳細については、David Kierznowskiの文書『BadUSB 2.0』を読むことをお勧めします。

サイランスのエンドポイント防護製品 CylancePROTECT®をご利用中のお客様は、この記事で取り上げた攻撃からすでに防御されています 。CylancePROTECTをご利用でない場合、AIベースのソリューションがいかにして未知の新しい脅威を予測・防御できるかについてぜひ サイランスまでお問い合わせください

Tags: