
PrivKitは、Windows OSの設定ミスによって引き起こされる特権昇格の脆弱性を検出するシンプルなビーコンオブジェクトファイルです。
Windowsローカル特権昇格チェックのためのBeacon Object Files(BOF)のコレクションです。

PrivKitは、レッドチームやペネトレーションテスターが、Cobalt StrikeのBeacon Object Files(BOF)を使用して、一般的なWindowsローカル特権昇格ベクトルを迅速に特定できるようにするオープンソースツールです。
コマンドラインの使用法と例については、使用法のセクションを参照してください。
バグを見つけた場合は、遠慮なく報告してください。皆様のフィードバックは、このプロジェクトの品質向上に役立ちます。
このプロジェクトの著者および貢献者は、ツールの不正使用について一切の責任を負いません。このツールは教育目的および許可されたセキュリティテスト目的のみを意図しています。ユーザーは合法的な使用を確保する責任があります。
友人 @nickvourd 氏のすべての貢献に特に感謝します。
TrustedSec チームの優れた CS-Situational-Awareness-BOF プロジェクトにも特に感謝します。このツールのインスピレーションとなりました。
Cobalt Strike チームの包括的なBOFドキュメントとサンプルに感謝します。
PrivKitは @merterpreter によって ❤️ を込めて作成されました。
PrivKitは、以下を含む包括的な特権昇格チェックスイートを提供します。
PrivKitはCで記述され、Beacon Object Filesとしてコンパイルされているため、Windowsターゲット上のCobalt Strike 4.xと互換性があります。
⚠️ MinGW-w64がシステムにインストールされていることを確認してください。
ℹ️ Linuxプラットフォーム(Ubuntu/Debian)の場合、次のパッケージをインストールします。
sudo apt update && sudo apt install mingw-w64 -y
ℹ️ MacOSプラットフォームの場合、次のパッケージをインストールします。
brew install mingw-w64
git clone https://github.com/mertdas/PrivKit.git
cd PrivKit
make_all.shスクリプトを使用して、すべてのBOFをx64とx86の両方のアーキテクチャ向けにコンパイルします。./make_all.sh
Cobalt Strike -> Script Manager -> Load -> PrivCheck.cna
beacon> help
すべての特権昇格チェックを一度に実行します。
beacon> PrivCheck
必要に応じて特定のチェックを実行します。
beacon> AlwaysInstallElevatedCheck
beacon> AutologonCheck
beacon> CredentialManagerCheck
beacon> HijackablePathCheck
beacon> ModifiableAutorunCheck
beacon> ModifiableSVCCheck
beacon> TokenPrivilegesCheck
beacon> UnquotedSVCPathCheck
beacon> PowerShellHistoryCheck
beacon> UACStatusCheck
beacon> AlwaysInstallElevatedCheck
[*] BOF by @merterpreter && @nickvourd
[*] Checking AlwaysInstallElevated privilege escalation vulnerability...
=== AlwaysInstallElevated Check ===
[*] HKCU\...\Installer\AlwaysInstallElevated = 1
[*] HKLM\...\Installer\AlwaysInstallElevated = 1
[+] VULNERABLE: AlwaysInstallElevated is set in both HKCU and HKLM
beacon> UACStatusCheck
[*] BOF by @merterpreter && @nickvourd
[*] Checking UAC status, integrity level, and admin membership...
=== UAC Status Check ===
[11/27 15:08:08] [+] received output:
[*] UAC Enabled (EnableLUA): Yes
[11/27 15:08:08] [+] received output:
[*] ConsentPromptBehaviorAdmin: 5
[11/27 15:08:08] [+] received output:
(Prompt for consent for non-Windows binaries)
[11/27 15:08:08] [+] received output:
[*] PromptOnSecureDesktop: Yes
[11/27 15:08:08] [+] received output:
[11/27 15:08:08] [+] received output:
[*] Integrity Level:
[11/27 15:08:08] [+] received output:
Medium
[11/27 15:08:08] [+] received output:
[*] Local Admin Group Member: Yes
[11/27 15:08:08] [+] received output:
[*] Summary:
[11/27 15:08:08] [+] received output:
[+] User is local admin but NOT elevated (UAC filtered token)
[11/27 15:08:08] [+] received output:
[+] UAC bypass may be possible
| チェック | 説明 |
|---|
| AlwaysInstallElevatedCheck | HKCUおよびHKLMのAlwaysInstallElevatedの誤設定を確認します |
| AutologonCheck | Winlogonレジストリに保存された自動ログイン資格情報を列挙します |
| CredentialManagerCheck | Windows資格情報マネージャーから資格情報をダンプします |
| HijackablePathCheck | システムPATH内の書き込み可能なディレクトリを特定します |
| ModifiableAutorunCheck | Run/RunOnceキー内の書き込み可能な自動実行実行可能ファイルを見つけます |
| ModifiableSVCCheck | 変更可能な権限(DACL)を持つサービスを見つけます |
| TokenPrivilegesCheck | 現在のプロセストークンの特権を列挙します |
| UnquotedSVCPathCheck | スペースを含む引用符で囲まれていないサービスパスを検出します |
| PowerShellHistoryCheck | PowerShellのPSReadLine履歴ファイルを確認します |
| UACStatusCheck | UACステータス、整合性レベル、管理者グループのメンバーシップを確認します |