업데이트로 돌아가기
New releaseJul 21, 2026

PrivescCheck v2026.07.15-1

Windows용 권한 상승 열거 스크립트

공유

PrivescCheck

공개 보안 표준에서 반드시 다루어지지 않는 일반적인 Windows 취약점구성 문제를 신속하게 식별하고, 익스플로잇 및 사후 침투 작업에 유용한 정보를 수집합니다.

[!IMPORTANT] 이 도구를 사용할 때 알아야 할 주요 사항은 모든 액세스 제어 검사가 현재 사용자의 컨텍스트에서 수행된다는 것입니다. 따라서 관리자 권한으로 실행하면 잘못된 결과를 생성하지 않기 위해 많은 취약점 검사가 실제로 건너뜁니다.

🚀 빠른 시작

스크립트 다운로드: PrivescCheck.ps1

[!TIP] 위 링크는 PowerShell 터미널에서 (New-Object Net.WebClient).DownloadString(...)과 함께 직접 사용할 수도 있습니다.

사용 사례 1 (펜테스트): 기본 검사만 실행

로컬에서 권한 상승을 할 수 있는 명백한 방법이 있습니까?

powershell -ep bypass -c ". .\PrivescCheck.ps1; Invoke-PrivescCheck"

사용 사례 2 (연구): 확장 검사 실행 + 사람이 읽을 수 있는 보고서 작성

사후 침투 또는 타사 소프트웨어의 취약점을 찾는 데 활용할 수 있는 추가 정보가 있습니까?

powershell -ep bypass -c ". .\PrivescCheck.ps1; Invoke-PrivescCheck -Extended -Report PrivescCheck_$($env:COMPUTERNAME) -Format TXT,HTML"

사용 사례 3 (감사): 모든 검사 실행 + 모든 보고서 작성

일반적인 보안 표준에서 다루지 않는 구성 문제가 있습니까?

powershell -ep bypass -c ". .\PrivescCheck.ps1; Invoke-PrivescCheck -Extended -Audit -Report PrivescCheck_$($env:COMPUTERNAME) -Format TXT,HTML,CSV,XML"

📖 상세 사용법

Invoke-PrivescCheck [-Extended] [-Audit] [-Experimental] [-Report <PREFIX>]
    [-Format <FORMAT>[,...]] [-Risky] [-Silent] [-Force]

    -Extended
        스캔에 모든 "확장(extended)" 검사를 포함합니다 (README 참조).

    -Audit
        스캔에 모든 "감사(audit)" 검사를 포함합니다.

    -Experimental
        스캔에 모든 "실험적(experimental)" 검사를 포함합니다. 수행 중인 작업을
        알고 있는 경우에만 사용하십시오.

    -Report <PREFIX>
        하나 이상의 보고서 파일을 생성합니다. 출력 파일 이름은 기본적으로
        "PREFIX.txt"입니다. 확장자는 보고서 형식에 따라 자동으로 추가됩니다
        ("-Format <FORMAT>[,...]" 참조).

    -Format <FORMAT>[,...]
        출력 보고서 파일의 형식을 지정합니다. 설정하지 않으면 기본값은
        "TXT"입니다. 지원되는 형식: "TXT", "HTML", "CSV", "XML".

    -Risky
        "위험(risky)"으로 표시된 검사를 포함합니다. 즉, 엔드포인트 보호 솔루션에
        의해 차단 작업이 트리거될 가능성이 있는 검사입니다. 주의해서 사용하십시오.

    -Silent
        터미널 출력을 억제합니다. 예를 들어 예약된 작업에서 배치 파일의 일부로
        스크립트를 실행하려는 경우 유용할 수 있습니다.

    -Force
        경고를 무시하고 강제로 실행합니다. 일반적으로 스크립트는 관리자 권한으로
        실행되면 중지됩니다. 이 옵션을 사용하여 실행하십시오.

보고서 형식 > TXT (-Format TXT)

원시 텍스트 보고서를 생성하려면 -Report <PREFIX> 옵션(-Format TXT 포함)을 사용하십시오. 출력은 터미널에서 볼 수 있는 것과 유사하지만, 모든 텍스트 편집기와의 더 나은 (레트로) 호환성을 위해 ASCII 문자만 포함합니다.

PrivescCheck에서 생성된 원시 텍스트 보고서의 스크린샷

보고서 형식 > HTML (-Format HTML)

HTML 보고서를 생성하려면 -Report <PREFIX> 옵션과 -Format HTML을 사용하십시오. 출력 파일은 웹 브라우저에서 열 수 있습니다. 원시 텍스트 보고서보다 데이터를 시각화하는 데 더 편리합니다. 또한 정렬필터링 기능을 제공합니다!

PrivescCheck에서 생성된 HTML 보고서의 스크린샷

보고서 형식 > CSV (-Format CSV) 및 XML (-Format XML)

CSV 또는 XML 보고서를 생성하려면 -Report <PREFIX> 옵션과 -Format CSV 또는 -Format XML을 사용하십시오. 출력 파일은 자동화된 보고 도구가 결과를 쉽게 파싱할 수 있도록 설계되었습니다.

[!NOTE] 출력 형식은 아직 문서화되지 않았지만, 이미 생성된 파일의 구조를 분석하면 쉽게 파악할 수 있습니다. 각 검사의 Id 값을 사용하여 고유하게 식별할 수 있습니다.

검사 유형 > 기본(Base)

Base 유형의 검사는 스크립트가 관리자로 실행되지 않는 한 항상 실행됩니다. 주로 권한 상승 취약점 또는 기타 중요한 문제를 식별하기 위한 것입니다.

검사 유형 > 확장(Extended) (-Extended)

Extended 유형의 검사는 명령줄에 -Extended 옵션이 지정된 경우에만 실행할 수 있습니다. 주로 익스플로잇 개발 또는 사후 침투에 유용할 수 있는 추가 정보를 제공하기 위한 것입니다.

검사 유형 > 감사(Audit) (-Audit)

Audit 유형의 검사는 명령줄에 -Audit 옵션이 지정된 경우에만 실행할 수 있습니다. 주로 구성 감사 컨텍스트에서 관련된 정보를 제공하기 위한 것입니다.

💡 팁 및 요령

PowerShell 실행 정책

기본적으로 PowerShell 실행 정책은 새 powershell.exe 프로세스가 시작될 때 클라이언트에서는 Restricted, 서버에서는 RemoteSigned로 설정됩니다. 이러한 정책은 (서명되지 않은) 스크립트의 실행을 차단하지만, 다음과 같이 현재 범위 내에서 재정의할 수 있습니다.

Set-ExecutionPolicy Bypass -Scope Process -Force
. .\PrivescCheck.ps1

그러나 이 방법은 실행 정책이 GPO를 통해 적용되는 경우에는 작동하지 않습니다. 이 경우 새 PowerShell 세션을 시작한 후 다음과 같이 스크립트를 로드할 수 있습니다.

Get-Content .\PrivescCheck.ps1 | Out-String | Invoke-Expression

PowerShell 버전 2

제한된 언어 모드(Constrained Language Mode)를 우회하는 일반적인 방법은 이 보호 기능을 구현하지 않는 PSv2를 사용하는 것입니다. 따라서 개발 노력의 상당 부분이 이 레트로 호환성 유지에 투자되고 있습니다.

[!NOTE] PowerShell 버전 2는 최신 Windows 버전에서 여전히 기본적으로 활성화되어 있지만 (Windows에서 PowerShell 2.0 제거), 수동 설치가 필요한 .Net 프레임워크 버전 2.0 없이는 실행할 수 없습니다.

Metasploit 시간 초과

Meterpreter 세션 내에서 이 스크립트를 실행하면 "timeout" 오류가 발생할 가능성이 높습니다. 이는 Metasploit이 기본 시간 초과 값을 15초로 사용하기 때문이며, 이는 일반적인 스크립트 실행이 완료되기에는 충분하지 않습니다.

meterpreter > load powershell
Loading extension powershell...Success.
meterpreter > powershell_import /local/path/to/PrivescCheck.ps1
[+] File successfully imported. No result was returned.
meterpreter > powershell_execute "Invoke-PrivescCheck"
[-] Error running command powershell_execute: Rex::TimeoutError Operation timed out.

sessions 명령의 -t 옵션을 사용하여 다른 시간 초과를 설정할 수 있습니다 (문서). 다음 예에서는 ID가 1인 세션에 대해 2분의 시간 초과가 설정되지만, 더 높은 값을 설정하는 것이 좋을 수 있습니다.

msf6 exploit(multi/handler) > sessions -t 120 -i 1
[*] Starting interaction with 1...
meterpreter > powershell_execute "Invoke-PrivescCheck"

🏗️ 빌드

데이터 업데이트

일부 검사는 온라인 데이터(예: LOL 드라이버 데이터베이스)에 의존하지만, 스크립트는 오프라인에서 작동하도록 설계되었습니다. 이 문제를 해결하기 위해 데이터가 스크립트에 포함되므로 정기적으로 업데이트해야 합니다. 이 프로세스는 공식 릴리스에서 완전히 자동화되어 있지만, 스크립트를 로컬에서 빌드하려면 수동으로 수행할 수 있습니다.

powershell -ep bypass ". .\build\Build.ps1; Update-LolDriverFile"

스크립트 빌드

스크립트 빌드는 아래 명령을 실행하는 것만큼 간단합니다. 출력 파일은 .\dist\ 폴더에 저장됩니다.

powershell -ep bypass ". .\build\Build.ps1; Invoke-Build -Name PrivescCheck"

빌드 스크립트는 각 모듈의 변수 이름을 선택하기 위해 무작위로 생성된 시드(seed) 와 함께 의사 난수 생성기를 사용합니다. 빌드 간에 재현 가능한 결과를 생성하려면 -NoNewSeed 옵션을 사용하여 이전에 생성된 시드를 재사용할 수 있습니다.

powershell -ep bypass ". .\build\Build.ps1; Invoke-Build -Name PrivescCheck -NoNewSeed"

빌드 스크립트는 각 모듈의 내용을 난독화하기 위해 무작위로 생성된 키(key) 와 함께 AES 암호화를 사용합니다. 빌드 간에 재현 가능한 결과를 생성하려면 -NoNewKey 옵션을 사용하여 이전에 생성된 를 재사용할 수 있습니다.

powershell -ep bypass ". .\build\Build.ps1; Invoke-Build -Name PrivescCheck -NoNewKey"

📑 크레딧

카테고리