このリポジトリでは、Officeドキュメントのマクロにおけるコード実行とAV回避の方法について説明しています。
VBS AV Evasion Stream/Videoの準備として、Officeマクロのコード実行手法と回避テクニックについて調査していました。
リストはどんどん長くなり、攻撃的なVBAテンプレートの中央集約的な場所が見つからなかったため、このリポジトリをそのような用途に利用できます。まだ完全にはほど遠いです。他にクールなテクニックや便利なテンプレートをご存知でしたら、ぜひコントリビュートしてプルリクエストを作成してください!
このリポジトリのテンプレートのほとんどは、すでにどこかで公開されています。ほとんどのテンプレートは、ms-docsサイトやブログ記事、他のツールからコピーペーストしただけです。
| ファイル | 説明 |
|---|---|
| ShellApplication_ShellExecute.vba | ShellApplicationオブジェクトとShellExecuteメソッドを使用してOSコマンドを実行 |
| ShellApplication_ShellExecute_privileged.vba | ShellApplicationオブジェクトとShellExecuteメソッドを使用して特権OSコマンドを実行 - UACプロンプト表示 |
| Shellcode_CreateThread.vba | Win32 CreateThreadを使用して現在のプロセスでシェルコードを実行 |
| Shellcode_EnumChildWindowsCallback.vba | EnumChildWindowsを使用して現在のプロセスでシェルコードを実行 |
| Win32_CreateProcess.vba | Win32 CreateProcess関数を使用してコード実行のための新しいプロセスを作成 |
| Win32_ShellExecute.vba | Win32 ShellExecute関数を使用してコード実行のための新しいプロセスを作成 |
| WMI_Process_Create.vba | WMIを使用してコード実行のための新しいプロセスを作成 |
| WMI_Process_Create2.vba | 別のWMIコード実行例 |
| WscriptShell_Exec.vba | WscriptShellオブジェクトとExecメソッドを使用してOSコマンドを実行 |
| WscriptShell_run.vba | WscriptShellオブジェクトとRunメソッドを使用してOSコマンドを実行 |
| VBA-RunPE | @itm4n'sのRunPEテクニック(VBA) |
| GadgetToJScript | med0x2e'sのC#スクリプト。JS/VBS/VBAベースのスクリプトからBinaryFormatterを使用して逆シリアル化されたときに.NETアセンブリの読み込み/実行をトリガーできる.NETシリアル化ガジェットを生成します。 |
| ファイル | 説明 |
|---|---|
| Unhooker.vba | メモリ内のAPIをアンフックしてフックを取り除く |
| Syscalls.vba | システムコールの使用 - ディスクから新規取得、またはSyswhispersのように |
ASRバイパス: http://blog.sevagas.com/IMG/pdf/bypass_windows_defender_attack_surface_reduction.pdf
シェルコードからVBScriptへの変換: https://github.com/DidierStevens/DidierStevensSuite/blob/master/shellcode2vbscript.py
VBAでのAMSIバイパス: https://outflank.nl/blog/2019/04/17/bypassing-amsi-for-vba/
VBAパージング: https://www.mandiant.com/resources/purgalicious-vba-macro-obfuscation-with-vba-purging
F-Secure VBA回避と検出に関する記事: https://blog.f-secure.com/dechaining-macros-and-evading-edr/
もう一つのF-Secureブログ: https://labs.f-secure.com/archive/dll-tricks-with-vba-to-improve-offensive-macro-capability/
| PPID_Spoof.vba | christophetd'sの spoofing-office-macro のコピー |
| AMSIBypass_AmsiScanBuffer_ordinal.vba | rmdavy'sのAMSIバイパス。序数を使用してAmsiScanBufferにパッチを適用し、シグネチャを回避します。 |
| AMSIBypass_AmsiScanBuffer_Classic.vba | rasta-mouse'sの古典的なAmsiScanBufferパッチ |
| AMSIBypass_Heap.vba | rmdavy'sの HeapsOfFun リポジトリのコピー |
| AMSIbypasses.vba | outflanknl'sの AMSIバイパスブログ |
| COMHijack_DLL_Load.vba | COMハイジャックを介してDLLをロード |
| COM_Process_create.vba | COMオブジェクトを介してプロセスを作成 |
| Download_Autostart.vba | リモートWebサーバーからファイルをダウンロードしてStartUpフォルダに配置 |
| Download_Autostart_WinAPI.vba | URLDownloadtoFileAを介してリモートWebサーバーからファイルをダウンロードしてStartUpフォルダに配置 |
| Dropper_Autostart.vba | バッチファイルをStartUpフォルダにドロップ |
| Registry_Persist_wmi.vba | WMIを介して永続化のためのStartUpレジストリキーを作成 |
| Registry_Persist_wscript.vba | wscriptオブジェクトを介して永続化のためのStartUpレジストリキーを作成 |
| ScheduledTask_Create.vba | コード実行/永続化のためのスケジュールタスクを作成して開始 |
| XMLDOM_Load_XSL_Process_create.vba | リモートWebサーバーからXSLをロードしてコードを実行 |
| regsvr32_sct_DownloadExecute.vba | regsvr32を実行してリモートWebサーバーのSCTファイルをダウンロードし、コードを実行 |
| BlockETW.vba | ntdll.dllのEtwEventWriteにパッチを適用してETWデータ収集をブロック |
| BlockETW_COMPLUS_ETWEnabled_ENV.vba | 環境変数COMPLUS_ETWEnabledを0に設定してETWデータ収集をブロック。 @xpnに感謝 |
| ShellWindows_Process_create.vba | ShellWindowsプロセスを作成し、explorer.exeを親プロセスとして取得 |
| AES.vba | こちらから入手したVBAでのAES暗号化/復号化の例 |
| Dropper_Executable_Autostart.vba | VBAから実行可能ファイルのバイトを取得し、Autostartにドロップ - この場合ダウンロードはなし |
| MarauderDrop.vba | COM登録された.NET DLLをtempにドロップし、関数をインポートしてコードを実行 - この場合、リモートWebサーバーからC#バイナリをメモリにロードして実行します。@Jean_Maes_1994の MaraudersMapに感謝 |
| Dropper_Workfolders_lolbas_Execute.vba | 埋め込まれた実行可能ファイルをTEMPディレクトリにドロップし、LOLBASとしてC:\windows\system32\Workfolders.exeを使用して実行 - @YoSignalsに感謝 |
| SandBoxEvasion | サンドボックス回避テンプレート |
| Evasion Dropper Autostart.vba | フォルダ名変更操作を使用してファイル書き込み監視をバイパスし、Startupディレクトリにファイルをドロップ |
| Evasion MsiInstallProduct.vba | WindowsInstaller ActiveXObjectを使用してリモートMSIパッケージをインストールし、疑わしいOffice子プロセスの生成を回避します。msiインストールはMSIEXEC /V serviceの子プロセスとして実行されます。 |
| StealNetNTLMv2.vba | 共有接続を介してNetNTLMv2ハッシュを盗む - https://book.hacktricks.xyz/windows/ntlm/places-to-steal-ntlm-credsに感謝 |
| Parse-Outlook.vba | Outlookを解析して機密キーワードとファイル拡張子を探し、メールで外部に送信 - JohnWoodmanに感謝 |
| Reverse-Shell.vba | Windows API呼び出しを使用して完全にVBAで記述されたリバースシェル - JohnWoodmanに感謝 |
| Manymore.vba |
| 他にアイデアがあれば自由にコントリビュートしてください |