Назад к обновлениям
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 -Report TXT,HTML"

Сценарий 2: Расширенная оценка

powershell -ep bypass -c ". .\PrivescCheck.ps1; Invoke-PrivescCheck -Extended -Report TXT,HTML"

Сценарий 3: Комплексная оценка

powershell -ep bypass -c ". .\PrivescCheck.ps1; Invoke-PrivescCheck -Extended -Audit -Report ALL"

Подробное использование

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

    -Extended
        Include all "extended" checks in the scan.

    -Audit
        Include all "audit" checks in the scan.

    -Risky
        Include all "risky" checks in the scan. Those are checks that are
        likely to trigger active EDR counter measures due to their behavior.

    -Report <FORMAT>[,...]
        Specify output report file formats (TXT, HTML, CSV, XML). Use alias
        'ALL' to generate all report files. By default, the output filename
        is automatically generated. Use option '-FilePath' to specify one
        explicitly.

    -FilePath <PREFIX>
        Specify the output report file name or directory. The file extension
        is automatically appended. If a directory path is supplied, the
        filename is automatically generated at runtime.

    -Silent
        Suppress terminal output. This can be useful if you want to run the
        script as part of a batch file, in a scheduled task for instance.

    -Force
        Force execution and ignore warnings. Typically, the script stops if
        it is executed with administrator privileges. Use this option to
        execute it anyway.

Форматы файлов отчётов

Формат файла отчёта > TXT

Используйте опцию -Report TXT для создания отчёта в виде необработанного текста. Вывод аналогичен выводу в терминале, за исключением того, что он содержит только символы ASCII для лучшей совместимости с текстовыми редакторами.

Скриншот отчёта в виде необработанного текста, созданного PrivescCheck

Формат файла отчёта > HTML

Используйте опцию -Report HTML для создания HTML-отчёта. Выходной файл можно открыть в веб-браузере. Подключение к Интернету не требуется, так как он не имеет внешних зависимостей. Он более удобен для визуализации данных, чем отчёт в виде необработанного текста. Кроме того, он предоставляет возможности сортировки и фильтрации!

Скриншот HTML-отчёта, созданного PrivescCheck

Формат файла отчёта > CSV или XML

Используйте опцию -Report CSV или -Report XML для создания отчёта в формате CSV или XML. Выходной файл предназначен для облегчения разбора результатов автоматизированными инструментами отчётности.

[!NOTE] Хотя формат вывода (пока) не документирован, вы можете легко разобраться в нём, проанализировав структуру уже созданного файла. Вы можете использовать значение Id каждой проверки в качестве уникального идентификатора.

Типы проверок

Тип проверки > Base

Проверки типа Base всегда выполняются, если только скрипт не запущен с правами администратора. Они в основном предназначены для выявления уязвимостей повышения привилегий или других важных проблем.

Тип проверки > Extended

Проверки типа Extended могут выполняться только в том случае, если в командной строке указана опция -Extended. Они в основном предназначены для предоставления дополнительной информации, которая может быть полезна для разработки эксплойтов или постэксплуатации.

Тип проверки > Audit

Проверки типа Audit могут выполняться только в том случае, если в командной строке указана опция -Audit. Они в основном предназначены для предоставления информации, актуальной в контексте аудита конфигурации.

Советы и приёмы

Политика выполнения PowerShell

По умолчанию политика выполнения PowerShell установлена в значение Restricted на клиентах и RemoteSigned на серверах при запуске нового процесса powershell.exe. Эти политики блокируют выполнение (неподписанных) скриптов, но их можно переопределить в текущей области следующим образом.

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 (Удаление PowerShell 2.0 из Windows), он не может работать без .Net framework версии 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.

Можно задать другой тайм-аут с помощью опции -t команды sessions (документация). В следующем примере для сеанса с ID 1 устанавливается тайм-аут 2 минуты, но, возможно, вы захотите задать ещё большее значение.

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

Сборка

Обновление данных

Некоторые проверки полагаются на онлайн-данные (например, база данных драйверов LOL), но скрипт предназначен для работы в автономном режиме. Чтобы решить эту проблему, данные встраиваются в скрипт и, следовательно, нуждаются в регулярном обновлении. Этот процесс полностью автоматизирован в официальном релизе, но если вы хотите собрать скрипт локально, вы можете при желании сделать это вручную.

Категории