
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 @itm4n en VBA |
| 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 |