该仓库涵盖了Office文档中宏的代码执行和AV绕过方法。
为了准备一场关于VBS AV规避的直播/视频,我正在研究Office宏代码执行方法及规避技术。
列表越来越长,而我没有找到一个集中存放攻击性VBA模板的地方——因此这个仓库可以用于此目的。它还远未完成。如果你知道任何其他有用的技术或模板,欢迎贡献并创建拉取请求!
本仓库中的大多数模板已在其他地方发布过。我只是从微软文档网站、博客文章或其他工具中复制粘贴了大部分模板。
| 文件 | 描述 |
|---|---|
| ShellApplication_ShellExecute.vba | 通过ShellApplication对象和ShellExecute方法执行操作系统命令 |
| ShellApplication_ShellExecute_privileged.vba | 通过ShellApplication对象和ShellExecute方法执行提权的操作系统命令——UAC提示 |
| Shellcode_CreateThread.vba | 通过Win32 CreateThread在当前进程中执行shellcode |
| Shellcode_EnumChildWindowsCallback.vba | 通过EnumChildWindows在当前进程中执行shellcode |
| 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 | @itm4n's 在VBA中的RunPE技术 |
| GadgetToJScript | med0x2e's 的C#脚本,用于生成.NET序列化小工具,当从基于JS/VBS/VBA的脚本中使用BinaryFormatter反序列化时,可触发.NET程序集加载/执行。 |
| 文件 | 描述 |
|---|---|
| Unhooker.vba | 解钩内存中的API以移除钩子 |
| Syscalls.vba | 系统调用使用——直接从磁盘或类似Syswhispers的方式 |
| Manymore.vba |
ASR绕过: http://blog.sevagas.com/IMG/pdf/bypass_windows_defender_attack_surface_reduction.pdf
Shellcode转VBScript: https://github.com/DidierStevens/DidierStevensSuite/blob/master/shellcode2vbscript.py
VBA中绕过AMSI: 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/
| PPID_Spoof.vba | christophetd's 的 spoofing-office-macro 副本 |
| AMSIBypass_AmsiScanBuffer_ordinal.vba | rmdavy's 的AMSI绕过,通过使用序号值修补AmsiScanBuffer以实现签名绕过 |
| AMSIBypass_AmsiScanBuffer_Classic.vba | rasta-mouse's 的经典AmsiScanBuffer修补 |
| AMSIBypass_Heap.vba | rmdavy's 的 HeapsOfFun 仓库副本 |
| AMSIbypasses.vba | outflanknl's 的 AMSI绕过博客 |
| COMHijack_DLL_Load.vba | 通过COM劫持加载DLL |
| COM_Process_create.vba | 通过COM对象创建进程 |
| Download_Autostart.vba | 从远程Web服务器下载文件并放入启动文件夹 |
| Download_Autostart_WinAPI.vba | 通过URLDownloadtoFileA从远程Web服务器下载文件并放入启动文件夹 |
| Dropper_Autostart.vba | 将批处理文件放入启动文件夹 |
| Registry_Persist_wmi.vba | 通过WMI创建启动注册表项以实现持久化 |
| Registry_Persist_wscript.vba | 通过wscript对象创建启动注册表项以实现持久化 |
| ScheduledTask_Create.vba | 创建并启动计划任务以执行代码/持久化 |
| XMLDOM_Load_XSL_Process_create.vba | 从远程Web服务器加载XSL以执行代码 |
| regsvr32_sct_DownloadExecute.vba | 执行regsvr32以下载远程Web服务器的SCT文件以执行代码 |
| BlockETW.vba | 修补ntdll.dll中的EtwEventWrite以阻止ETW数据收集 |
| BlockETW_COMPLUS_ETWEnabled_ENV.vba | 通过设置环境变量COMPLUS_ETWEnabled为0来阻止ETW数据收集,感谢@xpn |
| ShellWindows_Process_create.vba | ShellWindows进程创建,将explorer.exe作为父进程 |
| AES.vba | 一个在VBA中使用AES加密/解密的示例,来自此处 |
| Dropper_Executable_Autostart.vba | 从VBA获取可执行字节并放入自动启动——此例中无下载 |
| MarauderDrop.vba | 将一个COM注册的.NET DLL放入临时目录,导入函数并执行代码——本例中从Web服务器加载远程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 | 使用WindowsInstaller ActiveXObject安装远程MSI包,避免生成可疑的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调用的反向Shell——感谢JohnWoodman |
| 如果你有更多想法,欢迎贡献 |