
Ce dépôt couvre certaines méthodes d'exécution de code et d'évasion AV pour les macros dans les documents Office.
En préparation d’un Stream/Vidéo sur l’évasion AV pour VBS, je faisais des recherches sur les méthodes d’exécution de code dans les macros Office et les techniques d’évasion.
La liste s’est allongée et je n’ai trouvé aucun endroit centralisé pour les templates VBA offensifs – ce dépôt peut donc servir à cela. Il est très loin d’être complet. Si vous connaissez d’autres techniques sympas ou des templates utiles, n’hésitez pas à contribuer et à créer une pull request !
La plupart des templates de ce dépôt ont déjà été publiés quelque part. J’ai simplement copié-collé la plupart des templates à partir de sites ms-docs, d’articles de blog ou d’autres outils.
| Fichier | Description |
|---|---|
| ShellApplication_ShellExecute.vba | Exécute une commande OS via l’objet ShellApplication et la méthode ShellExecute |
| ShellApplication_ShellExecute_privileged.vba | Exécute une commande OS privilégiée via l’objet ShellApplication et la méthode ShellExecute – invite UAC |
| Shellcode_CreateThread.vba | Exécute du shellcode dans le processus courant via Win32 CreateThread |
| Shellcode_EnumChildWindowsCallback.vba | Exécute du shellcode dans le processus courant via EnumChildWindows |
| Win32_CreateProcess.vba | Crée un nouveau processus pour l’exécution de code via la fonction Win32 CreateProcess |
| Win32_ShellExecute.vba | Crée un nouveau processus pour l’exécution de code via la fonction Win32 ShellExecute |
| WMI_Process_Create.vba | Crée un nouveau processus via WMI pour l’exécution de code |
| WMI_Process_Create2.vba | Un autre exemple d’exécution de code via WMI |
| WscriptShell_Exec.vba | Exécute une commande OS via l’objet WscriptShell et la méthode Exec |
| WscriptShell_run.vba | Exécute une commande OS via l’objet WscriptShell et la méthode Run |
| VBA-RunPE | Technique RunPE de en VBA |
| Fichier | Description |
|---|---|
| Unhooker.vba | Déhooker les API en mémoire pour se débarrasser des hooks |
| Syscalls.vba |
Contournement ASR :
http://blog.sevagas.com/IMG/pdf/bypass_windows_defender_attack_surface_reduction.pdf
Conversion Shellcode en VBScript :
https://github.com/DidierStevens/DidierStevensSuite/blob/master/shellcode2vbscript.py
Contournement AMSI dans VBA :
https://outflank.nl/blog/2019/04/17/bypassing-amsi-for-vba/
Purge VBA :
https://www.mandiant.com/resources/purgalicious-vba-macro-obfuscation-with-vba-purging
Article de F-Secure sur l’évasion et la détection VBA :
https://blog.f-secure.com/dechaining-macros-and-evading-edr/
Un autre blog de F-Secure :
https://labs.f-secure.com/archive/dll-tricks-with-vba-to-improve-offensive-macro-capability/
| GadgetToJScript | Script C# de med0x2e pour générer des gadgets .NET sérialisés qui peuvent déclencher le chargement/exécution d’assembly .NET lors de la désérialisation via BinaryFormatter depuis des scripts JS/VBS/VBA. |
| PPID_Spoof.vba | Copie de christophetd et de spoofing-office-macro |
| AMSIBypass_AmsiScanBuffer_ordinal.vba | Contournement AMSI de rmdavy pour patcher AmsiScanBuffer en utilisant des valeurs ordinales pour un contournement de signature |
| AMSIBypass_AmsiScanBuffer_Classic.vba | Patch classique AmsiScanBuffer de rasta-mouse |
| AMSIBypass_Heap.vba | Copie du dépôt HeapsOfFun de rmdavy |
| AMSIbypasses.vba | Article d’outflanknl sur le contournement AMSI |
| COMHijack_DLL_Load.vba | Charge une DLL via un détournement COM |
| COM_Process_create.vba | Crée un processus via un objet COM |
| Download_Autostart.vba | Télécharge un fichier depuis un serveur web distant et le place dans le dossier Démarrage |
| Download_Autostart_WinAPI.vba | Télécharge un fichier depuis un serveur web distant via URLDownloadtoFileA et le place dans le dossier Démarrage |
| Dropper_Autostart.vba | Dépose un fichier batch dans le dossier Démarrage |
| Registry_Persist_wmi.vba | Crée une clé de registre Démarrage pour la persistance via WMI |
| Registry_Persist_wscript.vba | Crée une clé de registre Démarrage pour la persistance via l’objet wscript |
| ScheduledTask_Create.vba | Crée et démarre une tâche planifiée pour l’exécution de code / la persistance |
| XMLDOM_Load_XSL_Process_create.vba | Charge un XSL depuis un serveur web distant pour exécuter du code |
| regsvr32_sct_DownloadExecute.vba | Exécute regsvr32 pour télécharger un fichier SCT depuis un serveur web distant pour l’exécution de code |
| BlockETW.vba | Patche EtwEventWrite dans ntdll.dll pour bloquer la collecte ETW |
| BlockETW_COMPLUS_ETWEnabled_ENV.vba | Bloque la collecte ETW en définissant la variable d’environnement COMPLUS_ETWEnabled à 0, crédit à @xpn |
| ShellWindows_Process_create.vba | Création de processus via ShellWindows pour obtenir explorer.exe comme processus parent |
| AES.vba | Un exemple d’utilisation du chiffrement/déchiffrement AES en VBA depuis ici |
| Dropper_Executable_Autostart.vba | Obtient les octets d’un exécutable depuis VBA et les dépose dans AutoStart – pas de téléchargement dans ce cas |
| MarauderDrop.vba | Dépose une DLL .NET enregistrée COM dans temp, importe la fonction et exécute du code – dans ce cas charge un binaire C# distant depuis un serveur web en mémoire et l’exécute – crédit à @Jean_Maes_1994 pour MaraudersMap |
| Dropper_Workfolders_lolbas_Execute.vba | Dépose un exécutable embarqué dans le dossier TEMP et l’exécute en utilisant C:\windows\system32\Workfolders.exe comme LOLBAS – crédit à @YoSignals |
| SandBoxEvasion | Quelques templates d’évasion de bac à sable |
| Evasion Dropper Autostart.vba | Dépose un fichier dans le dossier Démarrage en contournant la surveillance d’écriture de fichiers via une opération de renommage de dossier |
| Evasion MsiInstallProduct.vba | Installe un package MSI distant en utilisant WindowsInstaller ActiveXObject pour éviter de générer un processus fils Office suspect – l’installation MSI sera exécutée comme un fils du service MSIEXEC /V |
| StealNetNTLMv2.vba | Vole un hash NetNTLMv2 via une connexion de partage – crédit à https://book.hacktricks.xyz/windows/ntlm/places-to-steal-ntlm-creds |
| Parse-Outlook.vba | Analyse Outlook à la recherche de mots-clés sensibles et d’extensions de fichiers, et les exfiltre par email – crédit à JohnWoodman |
| Reverse-Shell.vba | Shell inversé entièrement écrit en VBA en utilisant les appels API Windows – crédit à JohnWoodman |
| Utilisation de syscalls – frais depuis le disque ou type Syswhispers |
| Manymore.vba | Si vous avez d’autres idées, n’hésitez pas à contribuer |