Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
DarkWidow — 간접 동적 시스템 콜, 수정된 TartarusGate 방식을 통한 SSN + 시스템 콜 주소 정렬 + APC Early Bird를 통한 원격 프로세스 인젝션 + 희생 프로세스를 대상 프로세스로 생성 + 생성된 프로세스에 (ACG+BlockDll) 완화 정책 적용 + PPID 스푸핑 + TIB에서 API 해석 + API 해싱 | Kitploit
도구/GitHubGitHub/reveng007/darkwidow
Privilege EscalationExploitationIDS/IPS EvasionPost-ExploitationMalware AnalysisBinary AnalysisLearning & EducationRed TeamingPayload Development
GitHubreveng007/darkwidow

DarkWidow

간접 동적 시스템 콜, 수정된 TartarusGate 방식을 통한 SSN + 시스템 콜 주소 정렬 + APC Early Bird를 통한 원격 프로세스 인젝션 + 희생 프로세스를 대상 프로세스로 생성 + 생성된 프로세스에 (ACG+BlockDll) 완화 정책 적용 + PPID 스푸핑 + TIB에서 API 해석 + API 해싱

80710437개월 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기

DarkWidow

Windows를 대상으로 하는 사용자 정의 가능한 드로퍼 도구입니다.


감사의 말:

  1. BlackHat Asia, 2024 - 도구 제안 요청
  2. BlackHat USA, 2024 - 도구 제안 요청
  3. BlackHat SecTor, 2024 - 도구 제안 요청
  4. BlackHat Europe, 2024 - 도구 제안 요청
  5. Wild West Hacking Fest 2024 - Arsenal
  • Soumyadeep Da (일명 @SoumyadeepBas12)님께 이 컨퍼런스에 지원하도록 격려해 주셔서 정말 감사드립니다. 그렇지 않았다면 하지 않았을 것입니다 :)
  • Faran (일명 @Chrollo_l33t)님께 이 도구 프레젠테이션을 위한 슬라이드와 PPT 제작을 도와주셔서 정말 감사드립니다 :)

기능:

  1. 간접 동적 시스템 콜. (MITRE ATT&CK TTP: T1106)
  2. 수정된 TartarusGate 방식을 통한 SSN + 시스템 콜 주소 정렬
  3. APC 얼리 버드를 통한 원격 프로세스 인젝션으로 EDR의 원격 측정 수집 차단. (MITRE ATT&CK TTP: T1055.004)
  4. 희생 프로세스를 대상 프로세스로 생성하여 환경에서 이미 열려 있는 프로세스를 방해하지 않습니다.
  5. 생성된 희생 프로세스에 ACG(Arbitrary Code Guard)/BlockDll 완화 정책 적용.
  6. PPID 스푸핑 (MITRE ATT&CK TTP: T1134.004)
  7. TIB에서 직접 (TIB -> TEB -> PEB 오프셋을 통해) API 및 DLL 해결하여 Nt API 해결 (MITRE ATT&CK TTP: T1106)
  8. 저주받은 Nt API 해싱 (MITRE ATT&CK ID: S0574)

보너스: 관리자 권한이 있다면 =>

  1. EventLog 서비스 스레드를 _종료_하여 이벤트 로그 비활성화 (MITRE ATT&CK TTP: T1562.002)

단점: 스레드가 재개되면 이벤트 로거 중단 중에 발생한 모든 이벤트가 다시 기록됩니다!

그래서 대신 종료하는 것을 생각했습니다!

"중단보다 더 침습적이지만 결정은 항상 운영자에게 달려 있습니다. 게다가 스레드를 종료하면 커널 수준에서 기록됩니다." - @SEKTOR7net

간접 시스템 콜 임플란트에서 해당 스레드만 종료하려고 할 때 오류가 발생했습니다. "eventlog" _SubProcessTag Value_를 가져올 수 없었습니다. 그래서 모든 스레드를 종료, 즉 전체 프로세스(해당 svchost.exe)를 종료하기로 결정했습니다. 네, IOC를 만들고 있습니다!.

=

1. EDR/Ring-3/UserLand 후크 우회

2. 시스템 콜 및 반환 문이 ntdll.dll 메모리에서 실행됩니다.

3. 호출 스택의 반환 주소를 확인하여 EDR 탐지를 우회할 수 있습니다.

컴파일:

root@kitploit:~
VS 컴파일러를 통해 직접:

이미지

/MT 컴파일러 플래그도 추가하세요! => CRT 함수를 바이너리에 정적으로 연결합니다 (네, 맞췄습니다, 임플란트가 커집니다)

이미지

  1. compile.bat를 통해서도 가능 (옵션 1 선호)
root@kitploit:~
./compile.bat

사용법:

root@kitploit:~
PS C:> .\x64\Release\indirect.exe
[!] Wrong!
[->] Syntax: .\x64\Release\indirect.exe <PPID to spoof>

실행 중:

https://github.com/reveng007/DarkWidow/assets/61424547/62a90c5b-84af-4389-8ddc-9f7926debdcf

Sofos XDR 엔드포인트에서 경고 없이 성공적인 실행:

SofosXDREvade


추가 개선 사항:

  1. PPID 스푸핑 (Emotet 방식)
  2. 훨씬 더 은밀한 이벤트 로그 비활성화 사용 사례!

도움이 된 코드 일부 및 링크:

  1. TIB:

    • https://en.wikipedia.org/wiki/Win32_Thread_Information_Block
    • https://www.wikiwand.com/en/Win32_Thread_Information_Block
  2. GS 및 FS 레지스터:

    • https://stackoverflow.com/questions/39137043/what-is-the-gs-register-used-for-on-windows
    • https://stackoverflow.com/questions/10810203/what-is-the-fs-gs-register-intended-for#:~:text=The%20registers%20FS%20and%20GS,to%20access%20thread%2Dspecific%20memory.
  3. PEB LDR 구조:

    • BlackHat - What Malware Authors Don't Want You to Know - Evasive Hollow Process Injection by @monnappa22

    • 위 링크의 프로세스 메모리 사진:
      이미지

    • labs.cognisys.group의 @D1rkMtr 블로그:
      이미지

  4. TIB -> TEB -> PEB -> Nt API 해결 및 API 해싱

    • https://stackoverflow.com/questions/41277888/iterating-over-peb-dllname-shows-only-exe-name

    • https://doxygen.reactos.org/d7/d55/ldrapi_8c_source.html#l01124

    • labs.cognisys.group의 @D1rkMtr 블로그

root@kitploit:~

#include <stdint.h>
#include <stdio.h>
#include <Windows.h>

DWORD64 djb2(const char* str)
{
	DWORD64 dwHash = 0x7734773477347734;
	int c;

	while (c = *str++)
		dwHash = ((dwHash << 0x5) + dwHash) + c;


	return dwHash;
}

int main(int argc, char** argv)
{
	if (argc < 2)
	{
		printf("[!] Wrong!\n");
		printf("[->] Syntax: .\\%s <NTFuncName>\n\n", argv[0]);
		return 1;
	}

	const char* string = argv[1];

	DWORD64 hashvalue = djb2(string);

	printf("Hash Value: 0x%llX\n", hashvalue);

	return 0;
}

  1. ACG(Arbitrary Code Guard)/BlockDll 완화 정책:

    • 링크:
    • Protecting Your Malware by @xpn
    • Wraith by @winterknife
    • spawn 및 HOLLOW by @0xBoku 이미지
  2. PPID 스푸핑 탐지:

    • PPID Spoofing Detect by @spotheplanet
    • 시간이 나면 이 부분에 탐지 부분을 추가할 예정입니다! -> [나머지................................................!]
  3. Moneta 탐지 및 PESieve 탐지:\

    • Moneta:
      이미지

    • PESieve:
      이미지

  4. Capa 스캔:
    이미지

  5. 임플란트 프로세스의 스레드 스택 모양:

임플란트 프로세스정상 Cmd 프로세스
이미지이미지

"간접 시스템 콜 POC에서 ntdll.dll 메모리 내에서 반환 명령을 실행함으로써 반환 주소를 성공적으로 스푸핑하고, ntdll.dll을 호출 스택 최상단에 배치하여 EDR이 더 높은 합법성을 해석하도록 할 수 있습니다." - @VirtualAllocEx의 DirectSyscall Vs Indirect Syscall
또한 @peterwintrsmith님께 감사드립니다!

  1. 계측 콜백 우회: 이 POC - syscall-detect by winternl_t 사용

이미지

  1. 사용한 EventLogger 구성:

이미지 이미지

  1. SeDebugPrivilege 설정:
    다음에서: 이미지 다음으로: 이미지

  2. 이벤트 로그 스레드 종료:

    • rto-win-evasion by @SEKTOR7net
    • Phant0m by @hlldz
    • Goblin by @winterknife
    • disabling-windows-event-logs-by-suspending-eventlog-service-threads by @spotheplanet
      다음에서:
      이미지
      다음으로:
      이미지
    • 이 방법은 간접 시스템 콜 구현에서 오류를 일으켰습니다. 그래서 책임 있는 svchost.exe 내의 모든 스레드를 종료하기로 결정했습니다 (이유: 위로 이동).

Sophos XDR 이벤트 로깅 시나리오:

  1. 사례 1: 일반 권한으로 Darkwidow 실행 시

이미지

하나의 낮은 심각도 로그를 제외하고는 중요한 경고가 생성되지 않습니다!

  1. 사례 2: 관리자 권한으로 Darkwidow 실행 시

이미지

하나의 낮은 심각도 로그 => APC 인젝션 (이전과 같음)

이미지

SeDebugPrivilege 설정으로 발생한 또 다른 중간 심각도 로그입니다.

이미지

DarkWidow V2:

이 이벤트 로깅 탐지를 우회하기 위해 Synthetic Frame Thread Stack Spoofing 개념을 추가했습니다.

합성 프레임 스레드 스택 스푸핑을 적용한 후 스택 모양입니다.

이미지

이것은 NT API 스레드 스택입니다.

이미지

이것은 셸코드 (참고로 맞춤 제작이 아닌 Havoc 셸코드입니다 :)) 스레드 스택입니다.

셸코드 개발을 위해 Havoc과 아래 구성을 사용했습니다:

이미지

참고:

APC 인젝션 기술 내에서 APC는 이미 실행 중인 합법적인 스레드의 실행을 하이재킹하므로 새로 생성된 스레드 시작 주소 스푸핑은 이 프로젝트에서 실제로 필요하지 않았습니다. @C5pider님께 감사드립니다!

데모 실행 사진:

1708744707672

Sophos XDR에 대한 데모 비디오:

Demo Video Youtube Link

이제 이벤트 로그 상태는?

이미지

생성된 로그가 없습니다. 또한 DarkWidow V2에서 이벤트 로거 종료 부분을 제거하여 이벤트 생성을 줄였습니다!

제 BlackHat Arsenal 데모 비디오는 여기에서 볼 수 있습니다:

Demo Video Youtube Link

제 WildWestHackinFest 발표 슬라이드 및 비디오 링크는 여기에서 찾을 수 있습니다:

  1. Google Slide 링크
  2. https://www.youtube.com/watch?v=xsibDZ6BpyA&t=1295s

향후 업데이트:

  1. 이 버전을 C++ Clang 컴파일러로 포팅하여 LLVM 난독화를 수행할 수 있도록 합니다.
  2. NtCreateUserProcess()로 업그레이드하여 간접 시스템 콜 및 스택 스푸핑을 수행합니다.
  3. 이미지 로드 커널 콜백 우회를 위한 수동 로드 라이브러리 기능 적용.
  4. 모듈 스톰핑 기능 적용.
  5. 커널 트리거 메모리 스캔을 피하기 위한 암호화된 셸코드 인젝션 (Caro-Kann).

스택 스푸핑 기술 탐지 (제 워크숍/발표 중 하나에서 언급된 바와 같이):

이미지

도와주신 분들께 큰 감사드립니다 (직간접적으로 (말장난 의도 아님 :))):

  1. @SEKTOR7net
  2. @peterwintrsmith
  3. @Jean_Maes_1994
  4. @D1rkMtr
  5. @spotheplanet
  6. @0xBoku
  7. @Sh0ckFR
  8. @winterknife
  9. @monnappa22
  10. @xpn
  11. @hlldz
  12. @d_tranman
  13. @SoumyadeepBas12
  14. @jack_halon
  15. @KlezVirus
  16. @C5pider

누군가를 빼먹지 않았기를 바랍니다!

이 프로젝트는 EDR 세계에 대해 배우는 여정의 일부입니다! => Learning-EDR-and-EDR_Evasion

도구 다운로드
  • 위 링크의 코드 조각 사진으로, 오프셋을 하드코딩하지 않고 API를 동적으로 해결하는 데 사용했습니다:
    이미지

  • 적용한 API 해싱 코드: