
이 레포지토리는 Office 문서의 매크로에 대한 코드 실행 및 AV 우회 방법을 다룹니다.
VBS AV 우회 스트리밍/비디오를 준비하면서 Office 매크로 코드 실행 방법과 우회 기법을 조사하고 있었습니다.
목록이 점점 길어졌고, 공격용 VBA 템플릿을 모아놓은 중앙 저장소가 없어서 이 저장소를 만들게 되었습니다. 아직 완성과는 거리가 멉니다. 다른 멋진 기법이나 유용한 템플릿을 알고 계시다면 기여해 주시고 풀 리퀘스트를 생성해 주세요!
이 저장소에 있는 대부분의 템플릿은 이미 어딘가에 공개된 것들입니다. 저는 대부분의 템플릿을 ms-docs 사이트, 블로그 글 또는 다른 도구에서 복사해서 붙여넣었습니다.
| 파일 | 설명 |
|---|---|
| ShellApplication_ShellExecute.vba | ShellApplication 개체와 ShellExecute 메서드를 통해 OS 명령 실행 |
| ShellApplication_ShellExecute_privileged.vba | ShellApplication 개체와 ShellExecute 메서드를 통해 권한 있는 OS 명령 실행 - 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 메서드를 통해 OS 명령 실행 |
| WscriptShell_run.vba | WscriptShell 개체와 Run 메서드를 통해 OS 명령 실행 |
| VBA-RunPE | @itm4n의 VBA RunPE 기법 |
| GadgetToJScript | med0x2e의 C# 스크립트로, JS/VBS/VBA 기반 스크립트에서 BinaryFormatter를 사용하여 역직렬화할 때 .NET 어셈블리 로드/실행을 트리거할 수 있는 .NET 직렬화 가젯 생성 |
| 파일 | 설명 |
|---|---|
| Unhooker.vba | 메모리에서 API 후킹 제거 |
| Syscalls.vba | Syscall 사용 - 디스크에서 직접 로드 또는 Syswhispers 방식 |
ASR 우회: http://blog.sevagas.com/IMG/pdf/bypass_windows_defender_attack_surface_reduction.pdf
셸코드를 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의 spoofing-office-macro 복사본 |
| AMSIBypass_AmsiScanBuffer_ordinal.vba | rmdavy의 AMSI 우회 기법 - 서명 우회를 위해 서수 값을 사용하여 AmsiScanBuffer 패치 |
| AMSIBypass_AmsiScanBuffer_Classic.vba | rasta-mouse의 고전적인 AmsiScanBuffer 패치 |
| AMSIBypass_Heap.vba | rmdavy의 HeapsOfFun 저장소 복사본 |
| AMSIbypasses.vba | outflanknl의 AMSI 우회 블로그 |
| COMHijack_DLL_Load.vba | COM 하이재킹을 통해 DLL 로드 |
| COM_Process_create.vba | COM 개체를 통해 프로세스 생성 |
| Download_Autostart.vba | 원격 웹 서버에서 파일을 다운로드하여 시작 폴더에 배치 |
| Download_Autostart_WinAPI.vba | URLDownloadtoFileA를 통해 원격 웹 서버에서 파일을 다운로드하여 시작 폴더에 배치 |
| Dropper_Autostart.vba | 배치 파일을 시작 폴더에 드롭 |
| 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 | 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을 temp에 드롭하고, 함수를 가져와 코드 실행 - 이 경우 원격 웹 서버의 C# 바이너리를 메모리에 로드하여 실행, 출처 @Jean_Maes_1994의 MaraudersMap |
| Dropper_Workfolders_lolbas_Execute.vba | 포함된 실행 파일을 TEMP 디렉토리에 드롭하고 LOLBAS로 C:\windows\system32\Workfolders.exe를 사용하여 실행, 출처 @YoSignals |
| SandBoxEvasion | 일부 샌드박스 우회 템플릿 |
| Evasion Dropper Autostart.vba | 폴더 이름 변경 작업을 통해 파일 쓰기 모니터링을 우회하여 시작 디렉토리에 파일 드롭 |
| Evasion MsiInstallProduct.vba | WindowsInstaller ActiveXObject를 사용하여 원격 MSI 패키지를 설치, 의심스러운 Office 자식 프로세스 생성을 피하고 msi 설치는 MSIEXEC /V 서비스의 자식으로 실행됨 |
| StealNetNTLMv2.vba | 공유 연결을 통해 NetNTLMv2 해시 탈취, 출처 https://book.hacktricks.xyz/windows/ntlm/places-to-steal-ntlm-creds |
| Parse-Outlook.vba | Outlook에서 민감한 키워드 및 파일 확장자를 파싱하고 이메일을 통해 유출, 출처 JohnWoodman |
| Reverse-Shell.vba | Windows API 호출을 사용하여 완전히 VBA로 작성된 리버스 셸, 출처 JohnWoodman |
| 더 많은 아이디어가 있다면 자유롭게 기여해 주세요 |