
Dieses Repository behandelt einige Methoden zur Codeausführung und AV-Umgehung für Makros in Office-Dokumenten.
Zur Vorbereitung auf einen VBS-AV-Evasion-Stream/Video habe ich einige Recherchen zu Methoden der Codeausführung in Office-Makros und Umgehungstechniken durchgeführt.
Die Liste wurde immer länger und ich fand keinen zentralen Ort für offensive VBA-Vorlagen – daher kann dieses Repository dafür genutzt werden. Es ist noch lange nicht vollständig. Falls du eine andere coole Technik oder nützliche Vorlage kennst, kannst du gerne einen Beitrag leisten und einen Pull-Request erstellen!
Die meisten Vorlagen in diesem Repository wurden bereits irgendwo veröffentlicht. Ich habe die meisten Vorlagen einfach von MS-Docs-Seiten, Blogbeiträgen oder anderen Tools kopiert und eingefügt.
| Datei | Beschreibung |
|---|---|
| ShellApplication_ShellExecute.vba | Führt einen Betriebssystembefehl mittels ShellApplication-Objekt und ShellExecute-Methode aus |
| ShellApplication_ShellExecute_privileged.vba | Führt einen privilegierten Betriebssystembefehl mittels ShellApplication-Objekt und ShellExecute-Methode aus – UAC-Eingabeaufforderung |
| Shellcode_CreateThread.vba | Führt Shellcode im aktuellen Prozess mittels Win32 CreateThread aus |
| Shellcode_EnumChildWindowsCallback.vba | Führt Shellcode im aktuellen Prozess mittels EnumChildWindows aus |
| Win32_CreateProcess.vba | Erstellt einen neuen Prozess zur Codeausführung mittels Win32 CreateProcess-Funktion |
| Win32_ShellExecute.vba | Erstellt einen neuen Prozess zur Codeausführung mittels Win32 ShellExecute-Funktion |
| WMI_Process_Create.vba | Erstellt einen neuen Prozess mittels WMI zur Codeausführung |
| WMI_Process_Create2.vba | Ein weiteres Beispiel für WMI-Codeausführung |
| WscriptShell_Exec.vba | Führt einen Betriebssystembefehl mittels WscriptShell-Objekt und Exec-Methode aus |
| WscriptShell_run.vba | Führt einen Betriebssystembefehl mittels WscriptShell-Objekt und Run-Methode aus |
| VBA-RunPE |
| Datei | Beschreibung |
|---|---|
| Unhooker.vba | Entfernt API-Hooks im Speicher, um Hooks loszuwerden |
| Syscalls.vba |
ASR-Umgehung: http://blog.sevagas.com/IMG/pdf/bypass_windows_defender_attack_surface_reduction.pdf
Shellcode-zu-VBScript-Konvertierung: https://github.com/DidierStevens/DidierStevensSuite/blob/master/shellcode2vbscript.py
AMSI in VBA umgehen: https://outflank.nl/blog/2019/04/17/bypassing-amsi-for-vba/
VBA-Bereinigung: https://www.mandiant.com/resources/purgalicious-vba-macro-obfuscation-with-vba-purging
F-Secure VBA-Evasion- und Erkennungsbeitrag: https://blog.f-secure.com/dechaining-macros-and-evading-edr/
Ein weiterer F-Secure-Blog: https://labs.f-secure.com/archive/dll-tricks-with-vba-to-improve-offensive-macro-capability/
| @itm4n's RunPE-Technik in VBA |
| GadgetToJScript | C#-Skript von med0x2e zum Generieren von .NET-serialisierten Gadgets, die beim Deserialisieren mit BinaryFormatter aus JS/VBS/VBA-basierten Skripten das Laden/Ausführen von .NET-Assemblys auslösen können. |
| PPID_Spoof.vba | Kopie von christophetd's spoofing-office-macro |
| AMSIBypass_AmsiScanBuffer_ordinal.vba | AMSI-Bypass von rmdavy zum Patchen von AmsiScanBuffer mittels ordinaler Werte für einen Signatur-Bypass |
| AMSIBypass_AmsiScanBuffer_Classic.vba | Klassischer AmsiScanBuffer-Patch von rasta-mouse |
| AMSIBypass_Heap.vba | Kopie aus dem Repository HeapsOfFun von rmdavy |
| AMSIbypasses.vba | AMSI-Bypass-Blog von outflanknl outflanknl's Blog |
| COMHijack_DLL_Load.vba | Lädt eine DLL mittels COM-Hijacking |
| COM_Process_create.vba | Erstellt einen Prozess mittels COM-Objekt |
| Download_Autostart.vba | Lädt eine Datei von einem entfernten Webserver herunter und legt sie im StartUp-Ordner ab |
| Download_Autostart_WinAPI.vba | Lädt eine Datei von einem entfernten Webserver mittels URLDownloadtoFileA herunter und legt sie im StartUp-Ordner ab |
| Dropper_Autostart.vba | Legt eine Batch-Datei im StartUp-Ordner ab |
| Registry_Persist_wmi.vba | Erstellt einen StartUp-Registrierungsschlüssel zur Persistenz mittels WMI |
| Registry_Persist_wscript.vba | Erstellt einen StartUp-Registrierungsschlüssel zur Persistenz mittels wscript-Objekt |
| ScheduledTask_Create.vba | Erstellt und startet einen geplanten Task zur Codeausführung/Persistenz |
| XMLDOM_Load_XSL_Process_create.vba | Lädt XSL von einem entfernten Webserver, um Code auszuführen |
| regsvr32_sct_DownloadExecute.vba | Führt regsvr32 aus, um eine SCT-Datei von einem entfernten Webserver zur Codeausführung herunterzuladen |
| BlockETW.vba | Patcht EtwEventWrite in ntdll.dll, um die ETW-Datensammlung zu blockieren |
| BlockETW_COMPLUS_ETWEnabled_ENV.vba | Blockiert die ETW-Datensammlung durch Setzen der Umgebungsvariablen COMPLUS_ETWEnabled auf 0, Dank an @xpn |
| ShellWindows_Process_create.vba | ShellWindows-Prozesserstellung, um explorer.exe als übergeordneten Prozess zu erhalten |
| AES.vba | Ein Beispiel zur Verwendung von AES-Verschlüsselung/-Entschlüsselung in VBA von hier |
| Dropper_Executable_Autostart.vba | Holt ausführbare Bytes aus VBA und legt sie im Autostart ab – in diesem Fall kein Download |
| MarauderDrop.vba | Legt eine COM-registrierte .NET-DLL im Temp-Ordner ab, importiert die Funktion und führt Code aus – in diesem Fall lädt es eine entfernte C#-Binärdatei von einem Webserver in den Speicher und führt sie aus – Dank an @Jean_Maes_1994 für MaraudersMap |
| Dropper_Workfolders_lolbas_Execute.vba | Legt eine eingebettete ausführbare Datei im TEMP-Verzeichnis ab und führt sie mittels C:\windows\system32\Workfolders.exe als LOLBAS aus – Dank an @YoSignals |
| SandBoxEvasion | Einige Sandbox-Evasion-Vorlagen |
| Evasion Dropper Autostart.vba | Legt eine Datei im StartUp-Verzeichnis ab, wobei die Dateischreibüberwachung durch Umbenennung des Ordners umgangen wird |
| Evasion MsiInstallProduct.vba | Installiert ein entferntes MSI-Paket mit WindowsInstaller ActiveXObject und vermeidet so das Erzeugen eines verdächtigen Office-Unterprozesses; die MSI-Installation wird als Kind des MSIEXEC /V-Dienstes ausgeführt |
| StealNetNTLMv2.vba | Stealtht NetNTLMv2-Hash über eine Freigabeverbindung – Dank an https://book.hacktricks.xyz/windows/ntlm/places-to-steal-ntlm-creds |
| Parse-Outlook.vba | Parst Outlook nach sensiblen Schlüsselwörtern und Dateierweiterungen und exfiltriert sie per E-Mail – Dank an JohnWoodman |
| Reverse-Shell.vba | Reverse Shell, vollständig in VBA geschrieben, unter Verwendung von Windows-API-Aufrufen – Dank an JohnWoodman |
| Syscall-Verwendung – direkt von der Festplatte oder wie Syswhispers |
| Manymore.vba | Falls du weitere Ideen hast, kannst du gerne einen Beitrag leisten |