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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
PrintSpoofer-ReflectiveDLL — Windows Print Spooler 권한 상승 취약점(CVE-2019-1040/CVE-2019-1019)이 침투 테스트를 위해 Reflective DLL로 구현되었습니다. | Kitploit
도구/GitHubGitHub/jonyfilc/printspoofer-reflectivedll
Privilege EscalationExploitationLateral MovementPost-ExploitationPenetration TestingRed TeamingPayload Development
GitHubjonyfilc/printspoofer-reflectivedll

PrintSpoofer-ReflectiveDLL

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Windows Print Spooler 권한 상승 취약점(CVE-2019-1040/CVE-2019-1019)이 침투 테스트를 위해 Reflective DLL로 구현되었습니다.

저장소 보기
235일 전아직 검토되지 않음

PrintSpoofer 상세 정보

License Platform C++

PrintSpoofer는 Windows Print Spooler 서비스의 취약점(CVE-2019-1040 / CVE-2019-1019)을 악용하여 로컬 권한 상승을 수행하는 도구입니다. 이 프로젝트는 PrintSpoofer 익스플로잇을 Reflective DLL 형식으로 구현하여, Cobalt Strike와 같은 침투 테스트 프레임워크에서 사용하기에 적합합니다.

목차

  • 개요
  • 작동 원리
  • 기술적 세부 사항
  • 요구 사항
  • 빌드
  • 사용법
  • 프로젝트 구조
  • 보안 고지
  • 참고 자료

개요

PrintSpoofer는 Windows Print Spooler 서비스의 취약점을 악용하여 낮은 권한의 사용자가 SYSTEM 수준의 권한을 획득할 수 있게 합니다. 이 익스플로잇은 Print Spooler 서비스가 명명된 파이프(named pipe)를 처리하는 방식을 남용합니다.

특징

  • Reflective DLL 형식 — 디스크에 기록하지 않고 메모리에서 완전히 로드 가능
  • SE_IMPERSONATE_NAME 권한과 함께 동작
  • RPC 프로토콜을 사용하여 Print Spooler 서비스와 통신
  • 명명된 파이프(Named Pipe) 메커니즘을 사용하여 토큰 가장(impersonation) 수행

작동 원리

PrintSpoofer는 다음 단계를 수행하여 동작합니다:

1. 권한 확인

익스플로잇은 먼저 현재 토큰에 SE_IMPERSONATE_NAME 권한이 있는지 확인합니다. 이 권한은 다른 사용자의 토큰을 가장하는 데 필요합니다.

2. 명명된 파이프 생성

임의의 UUID를 사용하여 명명된 파이프가 생성됩니다. 파이프 경로는 다음과 같습니다:

root@kitploit:~
\\.\pipe\<UUID>\pipe\spoolss

3. 파이프 연결 대기

생성된 명명된 파이프에 대한 비동기 연결이 대기됩니다. 이벤트가 생성되고, 파이프는 들어오는 연결을 수락할 준비를 합니다.

4. Print Spooler 연결 트리거

별도의 스레드에서 Print Spooler 서비스에 RPC 호출이 이루어집니다. RpcRemoteFindFirstPrinterChangeNotificationEx를 호출함으로써, 서비스는 우리가 만든 파이프에 연결을 시도합니다.

5. 토큰 가장

Print Spooler 서비스(SYSTEM 권한으로 실행)가 명명된 파이프에 연결되면, 익스플로잇은 ImpersonateNamedPipeClient를 사용하여 서비스의 토큰을 가장합니다. 이로 인해 SYSTEM 권한을 획득하게 됩니다.

6. 권한 있는 작업 수행

SYSTEM 토큰을 사용하여 높은 권한이 필요한 작업을 실행할 수 있습니다.

기술적 세부 사항

Print Spooler 취약점

Windows Print Spooler 서비스는 명명된 파이프를 통해 프린터 알림을 처리합니다. 서비스가 파이프 연결을 제대로 검증하지 않기 때문에, 공격자는 서비스가 악성 파이프에 연결하도록 강제한 뒤 SYSTEM 토큰을 가장할 수 있습니다.

RPC 통신

이 프로젝트는 MS-RPRN(Print System Remote Protocol)을 사용하여 Print Spooler 서비스와 통신합니다. 이 프로토콜은 IDL(Interface Definition Language) 파일로 정의되며 RPC 호출을 가능하게 합니다.

Reflective DLL 인젝션

Reflective DLL은 표준 DLL과 다르게 동작합니다:

  • 디스크에 기록하지 않고 메모리에 직접 로드할 수 있음
  • LoadLibrary API가 필요 없음
  • PE(Portable Executable) 형식을 수동으로 파싱하고 로드함

요구 사항

빌드용

  • Visual Studio 2022 (C++ 데스크톱 개발 워크로드)
  • Windows 10/11

실행용

  • Windows 10/11
  • 실행 중인 Print Spooler 서비스
  • SE_IMPERSONATE_NAME 권한 (대부분의 일반 사용자에게 기본적으로 부여됨)
  • Cobalt Strike 또는 유사한 프레임워크 (선택 사항)

빌드

Visual Studio로 빌드하기

  1. Visual Studio에서 PrintSpoofer.sln 파일을 엽니다.

  2. 솔루션 플랫폼과 구성을 선택합니다:

    • 플랫폼: x64 또는 Win32 (대상 아키텍처에 따라)
    • 구성: Release (배포용) 또는 Debug (개발용)
  3. 빌드 솔루션(Ctrl+Shift+B)을 통해 솔루션을 빌드합니다.

  4. 컴파일된 DLL은 다음 위치에 생성됩니다:

    root@kitploit:~
    PrintSpoofer\x64\Release\PrintSpoofer.dll   (for x64)
    PrintSpoofer\Win32\Release\PrintSpoofer.dll (for x86)
    

빌드 옵션

이 프로젝트는 다음 전처리기 정의를 사용합니다:

  • REFLECTIVE_DLL_EXPORTS: Reflective DLL 내보내기 활성화
  • REFLECTIVEDLLINJECTION_CUSTOM_DLLMAIN: 사용자 정의 DllMain 사용
  • REFLECTIVEDLLINJECTION_VIA_LOADREMOTELIBRARYR: LoadRemoteLibraryR 활성화 (Release 모드에서)

사용법

Cobalt Strike와 함께 사용하기

PrintSpoofer는 Cobalt Strike의 elevate 명령과 함께 사용할 수 있습니다:

root@kitploit:~
elevate PrintSpoofer LISTENER_NAME

여기서:

  • PrintSpoofer: elevate 모듈 이름
  • LISTENER_NAME: 상승된 셸을 수신할 리스너

수동 사용법

DLL은 Reflective DLL 인젝션 기법을 사용하여 수동으로 로드할 수 있습니다.

예상 출력

익스플로잇이 성공적으로 실행되면 다음과 같이 표시됩니다:

root@kitploit:~
[+] Found privilege: SeImpersonatePrivilege
[+] Named pipe listening...
[+] ImpersonateNamedPipeClient OK
[+] Exploit successfully, enjoy your shell

파일 설명

dllmain.cpp

  • DLL 진입점 (DllMain)
  • 익스플로잇 로직 제어
  • Reflective DLL 관련 기능 처리

PrintSpoofer.cpp

  • CheckAndEnablePrivilege: 토큰 권한 확인 및 활성화
  • GenerateRandomPipeName: 임의의 UUID를 사용하여 파이프 이름 생성
  • CreateSpoolNamedPipe: 명명된 파이프 생성 및 보안 구성
  • ConnectSpoolNamedPipe: 비동기 연결을 위한 파이프 준비
  • TriggerNamedPipeConnection: Print Spooler 연결을 트리거하는 스레드 생성
  • TriggerNamedPipeConnectionThread: RPC 호출 수행
  • GetSystem: 토큰 가장 수행

ms-rprn.idl

  • Microsoft MS-RPRN 프로토콜의 IDL 정의
  • MIDL 컴파일러에 의해 처리되어 RPC 스텁을 생성

ReflectiveLoader.cpp

  • Reflective DLL 인젝션을 위한 PE 파싱 및 메모리 로딩 구현

고지 사항

이 도구는 교육 목적 및 승인된 침투 테스트 용도로만 사용해야 합니다.

참고 자료

  • https://www.itm4n.fr/printspoofer-abusing-impersonate-privileges/
  • https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation

라이선스

이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 LICENSE 파일을 참조하십시오.

도구 다운로드