
Este repositorio cubre algunos métodos de ejecución de código y evasión de antivirus para macros en documentos de Office.
En preparación para un Stream/Video de Evasión AV con VBS, estaba investigando métodos de ejecución de código para Macros de Office y técnicas de evasión.
La lista se hizo cada vez más larga y no encontré un lugar centralizado para plantillas VBA ofensivas, así que este repositorio puede usarse para ello. Está muy lejos de estar completo. Si conoces alguna otra técnica interesante o plantilla útil, ¡siéntete libre de contribuir y crear un pull request!
La mayoría de las plantillas en este repositorio ya fueron publicadas en algún lado. Simplemente copié y pegué la mayoría de las plantillas de sitios ms-docs, publicaciones de blogs o de otras herramientas.
| Archivo | Descripción |
|---|---|
| ShellApplication_ShellExecute.vba | Ejecutar un comando del SO a través del objeto ShellApplication y el método ShellExecute |
| ShellApplication_ShellExecute_privileged.vba | Ejecutar un comando privilegiado del SO a través del objeto ShellApplication y el método ShellExecute - solicitud UAC |
| Shellcode_CreateThread.vba | Ejecutar shellcode en el proceso actual a través de Win32 CreateThread |
| Shellcode_EnumChildWindowsCallback.vba | Ejecutar shellcode en el proceso actual a través de EnumChildWindows |
| Win32_CreateProcess.vba | Crear un nuevo proceso para ejecución de código a través de la función Win32 CreateProcess |
| Win32_ShellExecute.vba | Crear un nuevo proceso para ejecución de código a través de la función Win32 ShellExecute |
| WMI_Process_Create.vba | Crear un nuevo proceso a través de WMI para ejecución de código |
| WMI_Process_Create2.vba | Otro ejemplo de ejecución de código mediante WMI |
| WscriptShell_Exec.vba | Ejecutar un comando del SO a través del objeto WscriptShell y el método Exec |
| WscriptShell_run.vba | Ejecutar un comando del SO a través del objeto WscriptShell y el método Run |
| VBA-RunPE |
| Archivo | Descripción |
|---|---|
| Unhooker.vba | Desenganchar API's en memoria para eliminar hooks |
| Syscalls.vba |
Bypass ASR: http://blog.sevagas.com/IMG/pdf/bypass_windows_defender_attack_surface_reduction.pdf
Conversión de Shellcode a VBScript: https://github.com/DidierStevens/DidierStevensSuite/blob/master/shellcode2vbscript.py
Bypass AMSI en VBA: https://outflank.nl/blog/2019/04/17/bypassing-amsi-for-vba/
Purgado VBA: https://www.mandiant.com/resources/purgalicious-vba-macro-obfuscation-with-vba-purging
Publicación de F-Secure sobre evasión y detección VBA: https://blog.f-secure.com/dechaining-macros-and-evading-edr/
Un blog más de F-Secure: https://labs.f-secure.com/archive/dll-tricks-with-vba-to-improve-offensive-macro-capability/
| Técnica RunPE de @itm4n's en VBA |
| GadgetToJScript | Script C# de med0x2e's para generar gadgets serializados .NET que pueden desencadenar carga/ejecución de ensamblados .NET cuando se deserializan usando BinaryFormatter desde scripts basados en JS/VBS/VBA. |
| PPID_Spoof.vba | Copia de spoofing-office-macro de christophetd |
| AMSIBypass_AmsiScanBuffer_ordinal.vba | Bypass de AMSI de rmdavy's para parchear AmsiScanBuffer usando valores ordinales para un bypass de firmas |
| AMSIBypass_AmsiScanBuffer_Classic.vba | Parche clásico de AmsiScanBuffer de rasta-mouse's |
| AMSIBypass_Heap.vba | Copia del repositorio HeapsOfFun de rmdavy's |
| AMSIbypasses.vba | Blog de bypass AMSI de outflanknl's AMSI bypass blog |
| COMHijack_DLL_Load.vba | Cargar DLL mediante secuestro COM |
| COM_Process_create.vba | Crear proceso a través de objeto COM |
| Download_Autostart.vba | Descargar un archivo desde un servidor web remoto y colocarlo en la carpeta de Inicio |
| Download_Autostart_WinAPI.vba | Descargar un archivo desde un servidor web remoto mediante URLDownloadtoFileA y colocarlo en la carpeta de Inicio |
| Dropper_Autostart.vba | Colocar un archivo batch en la carpeta de Inicio |
| Registry_Persist_wmi.vba | Crear clave de registro de Inicio para persistencia mediante WMI |
| Registry_Persist_wscript.vba | Crear clave de registro de Inicio para persistencia mediante objeto wscript |
| ScheduledTask_Create.vba | Crear e iniciar una tarea programada para ejecución de código/persistencia |
| XMLDOM_Load_XSL_Process_create.vba | Cargar XSL desde un servidor web remoto para ejecutar código |
| regsvr32_sct_DownloadExecute.vba | Ejecutar regsvr32 para descargar un archivo SCT de un servidor web remoto para ejecución de código |
| BlockETW.vba | Parchear EtwEventWrite en ntdll.dll para bloquear la recopilación de datos ETW |
| BlockETW_COMPLUS_ETWEnabled_ENV.vba | Bloquear la recopilación de datos ETW estableciendo la variable de entorno COMPLUS_ETWEnabled a 0, crédito a @xpn |
| ShellWindows_Process_create.vba | Creación de proceso ShellWindows para obtener explorer.exe como proceso padre |
| AES.vba | Un ejemplo para usar cifrado/descifrado AES en VBA desde Aquí |
| Dropper_Executable_Autostart.vba | Obtener bytes de un ejecutable desde VBA y colocarlos en Autostart - sin descarga en este caso |
| MarauderDrop.vba | Colocar un DLL .NET registrado COM en temp, importar la función y ejecutar código - en este caso carga un binario C# remoto desde un servidor web a memoria y lo ejecuta - crédito a @Jean_Maes_1994 por MaraudersMap |
| Dropper_Workfolders_lolbas_Execute.vba | Colocar un ejecutable incrustado en el directorio TEMP y ejecutarlo usando C:\windows\system32\Workfolders.exe como LOLBAS - crédito a @YoSignals |
| SandBoxEvasion | Algunas plantillas de evasión de sandbox |
| Evasion Dropper Autostart.vba | Coloca un archivo en el directorio de Inicio evadiendo la monitorización de escritura de archivos mediante una operación de carpeta renombrada |
| Evasion MsiInstallProduct.vba | Instala un paquete MSI remoto usando WindowsInstaller ActiveXObject evitando generar un proceso hijo ofimático sospechoso; la instalación MSI se ejecutará como hijo del servicio MSIEXEC /V |
| StealNetNTLMv2.vba | Robar el hash NetNTLMv2 a través de una conexión de recurso compartido - crédito a https://book.hacktricks.xyz/windows/ntlm/places-to-steal-ntlm-creds |
| Parse-Outlook.vba | Analiza Outlook en busca de palabras clave y extensiones de archivo sensibles, y los exfiltra por correo electrónico - crédito a JohnWoodman |
| Reverse-Shell.vba | Shell inverso escrito completamente en VBA usando llamadas a la API de Windows - crédito a JohnWoodman |
| Uso de Syscalls - fresco desde disco o similar a Syswhispers |
| Manymore.vba | Si tienes más ideas, siéntete libre de contribuir |