
Этот репозиторий охватывает некоторые методы выполнения кода и обхода антивирусов (AV) для макросов в документах Office.
Готовясь к стриму/видео по обходу AV в VBS, я проводил исследование методов выполнения кода через макросы Office и техник обхода.
Список становился всё длиннее, и я не нашёл централизованного места для шаблонов offensive VBA — поэтому этот репозиторий может служить таким хранилищем. Он очень далёк от полноты. Если вы знаете другие крутые техники или полезные шаблоны, смело вносите свой вклад и создавайте pull request!
Большинство шаблонов в этом репозитории уже были где-то опубликованы. Я просто скопировал большинство шаблонов с сайтов ms-docs, из блог-постов или из других инструментов.
| Файл | Описание |
|---|---|
| ShellApplication_ShellExecute.vba | Выполнить команду ОС через объект ShellApplication и метод ShellExecute |
| ShellApplication_ShellExecute_privileged.vba | Выполнить привилегированную команду ОС через объект ShellApplication и метод ShellExecute - запрос 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 |
| WscriptShell_run.vba | Выполнить команду ОС через объект WscriptShell и метод Run |
| VBA-RunPE | Техника RunPE от @itm4n на VBA |
| Файл | Описание |
|---|---|
| Unhooker.vba | Отмена хуков API в памяти для избавления от перехвата |
| Syscalls.vba |
Обход ASR: http://blog.sevagas.com/IMG/pdf/bypass_windows_defender_attack_surface_reduction.pdf
Преобразование шеллкода в VBScript: https://github.com/DidierStevens/DidierStevensSuite/blob/master/shellcode2vbscript.py
Обход AMSI в VBA: 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/
| GadgetToJScript | C#-скрипт от med0x2e для генерации .NET сериализованных гаджетов, которые могут запускать загрузку/выполнение .NET сборок при десериализации с помощью BinaryFormatter из скриптов на JS/VBS/VBA. |
| PPID_Spoof.vba | Копия spoofing-office-macro от christophetd |
| AMSIBypass_AmsiScanBuffer_ordinal.vba | AMSI Bypass от rmdavy для патча AmsiScanBuffer с использованием порядковых номеров для обхода сигнатур |
| AMSIBypass_AmsiScanBuffer_Classic.vba | Классический патч AmsiScanBuffer от rasta-mouse |
| AMSIBypass_Heap.vba | Копия репозитория HeapsOfFun от rmdavy |
| AMSIbypasses.vba | Блог от outflanknl по обходу AMSI |
| COMHijack_DLL_Load.vba | Загрузка DLL через COM-угон |
| COM_Process_create.vba | Создание процесса через COM-объект |
| Download_Autostart.vba | Загрузить файл с удалённого веб-сервера и поместить его в папку автозагрузки |
| Download_Autostart_WinAPI.vba | Загрузить файл с удалённого веб-сервера через URLDownloadtoFileA и поместить его в папку автозагрузки |
| Dropper_Autostart.vba | Сбросить batch-файл в папку автозагрузки |
| Registry_Persist_wmi.vba | Создать ключ реестра автозагрузки для сохранения через WMI |
| Registry_Persist_wscript.vba | Создать ключ реестра автозагрузки для сохранения через объект wscript |
| ScheduledTask_Create.vba | Создать и запустить запланированную задачу для выполнения кода/сохранения |
| XMLDOM_Load_XSL_Process_create.vba | Загрузить XSL с удалённого веб-сервера для выполнения кода |
| regsvr32_sct_DownloadExecute.vba | Выполнить regsvr32 для загрузки SCT-файла с удалённого веб-сервера и выполнения кода |
| BlockETW.vba | Пропатчить EtwEventWrite в ntdll.dll для блокировки сбора данных ETW |
| BlockETW_COMPLUS_ETWEnabled_ENV.vba | Блокировать сбор данных ETW, установив переменную среды COMPLUS_ETWEnabled в 0, спасибо @xpn |
| ShellWindows_Process_create.vba | Создание процесса через ShellWindows, чтобы получить explorer.exe в качестве родительского процесса |
| AES.vba | Пример использования шифрования/дешифрования AES в VBA из этого источника |
| Dropper_Executable_Autostart.vba | Получить байты исполняемого файла из VBA и сбросить в автозагрузку — без загрузки в данном случае |
| MarauderDrop.vba | Сбросить COM-зарегистрированную .NET DLL во временную папку, импортировать функцию и выполнить код — в данном случае загружает удалённый C# бинарник с веб-сервера в память и выполняет его, спасибо @Jean_Maes_1994 за MaraudersMap |
| Dropper_Workfolders_lolbas_Execute.vba | Сбросить встроенный исполняемый файл в каталог TEMP и выполнить его с помощью C:\windows\system32\Workfolders.exe как LOLBAS — спасибо @YoSignals |
| SandBoxEvasion | Некоторые шаблоны для обхода песочницы |
| Evasion Dropper Autostart.vba | Сбрасывает файл в каталог автозагрузки, обходя мониторинг записи файлов за счёт переименования папки |
| Evasion MsiInstallProduct.vba | Устанавливает удалённый MSI-пакет с помощью WindowsInstaller ActiveXObject, избегая появления подозрительного дочернего процесса 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 | Обратная оболочка, полностью написанная на VBA с использованием вызовов Windows API — спасибо JohnWoodman |
| Использование системных вызовов — напрямую с диска или как Syswhispers |
| Manymore.vba | Если у вас есть ещё идеи, не стесняйтесь вносить свой вклад |