
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 для лучшей совместимости с текстовыми редакторами.

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

Формат файла отчёта > 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), но скрипт предназначен для работы в автономном режиме. Чтобы решить эту проблему, данные встраиваются в скрипт и, следовательно, нуждаются в регулярном обновлении. Этот процесс полностью автоматизирован в официальном релизе, но если вы хотите собрать скрипт локально, вы можете при желании сделать это вручную.