
DOUBLEPULSAR 페이로드의 usermode 셸코드를 사용하여 임의의 DLL을 다른 프로세스에 반사적으로 로드하는 유틸리티로, 탐지 기법 테스트 또는 기타 보안 연구에 사용됩니다.
저자: Matt Hillman ([email protected] - @sp1nl0ck)
회사: Countercept (@countercept)
웹사이트: https://countercept.com
DOUBLEPULSAR 페이로드의 사용자 모드 셸코드를 사용하여 임의의 DLL을 다른 프로세스에 반사적으로 로드하는 유틸리티로, 탐지 기술 테스트 또는 기타 보안 연구에 사용됩니다.
Shadow Brokers가 공개한 DOUBLEPULSAR 페이로드는 처음에 커널 모드에서 실행되며 비동기 프로시저 호출(APC)을 사용하여 DLL을 사용자 모드 프로세스에 반사적으로 로드합니다. 실제 DLL 로딩은 사용자 모드에서 발생하며, 이 유틸리티는 해당 사용자 모드 셸코드를 활용하여 지정된 프로세스에 DLL을 로드하고 지정된 서수를 실행합니다. 이는 페이로드에 대한 공격 탐지 및 디지털 포렌식 침해 대응 기술을 테스트하는 데 도움이 됩니다.
이 로더는 표준 LoadLibrary 호출을 사용하지 않고 임의의 DLL과 함께 작동한다는 점에서 주목할 만합니다. LoadLibrary를 피하면 DLL을 디스크에 쓸 필요가 없어지고, LoadLibrary 호출을 모니터링하는 모든 것을 우회할 수 있으며, 일반적으로 로드된 모듈 목록을 얻는 방식인 프로세스 환경 블록(PEB)에 항목이 생기는 것도 피할 수 있으므로 로드가 더 은밀해질 수 있습니다. 이러한 기술은 이제 상당히 일반화되었지만, 지금까지 이 방식으로 임의의 DLL을 로드할 수 있는 공개 코드는 알려지지 않았습니다. 기존 코드는 로드를 지원하도록 맞춤 제작된 DLL이 필요했습니다. DOUBLEPULSAR는 거의 모든 DLL을 로드할 수 있는 보다 완전한 로더를 구현한다는 점에서 다릅니다. 이 로더는 현재 상태 그대로 거의 모든 Windows 버전에서 작동합니다.
DOUBLEPULSAR 자체는 커널 모드에서 사용자 모드 프로세스에 대기열에 넣은 APC 호출을 사용하지만, 이 유틸리티는 사용자 모드에서 APC를 대기열에 넣습니다. 이는 실질적인 차이가 거의 없습니다. 또한 이 유틸리티는 대신 CreateRemoteThread를 사용하여 셸코드를 트리거할 수도 있습니다.
C:\>DOUBLEPULSAR-usermode-injector.exe
USAGE: <pid> <shellcode_file> <dll_to_inject> <ordinal_to_execute> [use_CreateRemoteProcess]
마지막 인수는 선택 사항이며, 'true'로 지정하면 Doublepulsar가 기본적으로 작동하는 방식인 APC 호출 대신 CreateRemoteProcess가 사용됩니다. 이는 사용자가 다양한 방식으로 테스트할 수 있도록 하기 위한 것입니다.
기본값은 APC 사용입니다. 이는 대상의 모든 스레드에 주입하므로 그중 하나가 빠르게 트리거될 가능성이 높아집니다. 이는 페이로드를 두 번 이상 호출하는 것이 바람직하지 않을 수 있으므로 테스트 목적으로만 적합합니다.
예를 들어, 비동기 프로시저 호출(APC)을 사용하여 somelibrary.dll을 프로세스 1234에 주입하고 서수 1을 호출합니다:
C:\>dopu-usermode-injector.exe 1234 dopu-64bit-usermode-shellcode.bin somelibrary.dll 1
Using thread: 2456
Using thread: 2032
Using thread: 3876
또는 위와 동일하지만 APC 대신 CreateRemoteThread를 사용합니다:
C:\>dopu-usermode-injector.exe 1234 dopu-64bit-usermode-shellcode.bin somelibrary.dll 1 true
DOUBLEPULSAR 사용자 모드 셸코드에 대한 전체 분석:
DOUBLEPULSAR 커널 구성 요소에 대한 선행 연구:
https://www.countercept.com/our-thinking/analyzing-the-doublepulsar-kernel-dll-injection-technique/
https://zerosum0x0.blogspot.co.uk/2017/04/doublepulsar-initial-smb-backdoor-ring.html