Windows Local Privilege Escalation
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Best tool to look for Windows local privilege escalation vectors: WinPEAS
Initial Windows Theory
Access Tokens
Windowsのアクセス トークンが何であるか知らない場合は、続行する前に次のページをお読みください:
Access TokensACLs - DACLs/SACLs/ACEs
ACLs - DACLs/SACLs/ACEsに関する詳細情報は、次のページを確認してください:
ACLs - DACLs/SACLs/ACEsIntegrity Levels
Windowsの整合性レベルが何であるか知らない場合は、続行する前に次のページをお読みください:
Integrity LevelsWindows Security Controls
Windowsには、システムの列挙を妨げる、実行可能ファイルを実行する、またはあなたの活動を検出することさえできるさまざまな要素があります。特権昇格の列挙を開始する前に、次のページを読み、これらの防御****メカニズムをすべて列挙する必要があります:
Windows Security ControlsSystem Info
Version info enumeration
Windowsのバージョンに既知の脆弱性があるかどうかを確認してください(適用されたパッチも確認してください)。
Version Exploits
このサイトは、Microsoftのセキュリティ脆弱性に関する詳細情報を検索するのに便利です。このデータベースには4,700以上のセキュリティ脆弱性があり、Windows環境が提供する大規模な攻撃面を示しています。
システム上で
post/windows/gather/enum_patches
post/multi/recon/local_exploit_suggester
winpeas (Winpeasにはwatsonが組み込まれています)
システム情報を使用してローカルに
エクスプロイトのGithubリポジトリ:
環境
環境変数に保存された資格情報/重要な情報はありますか?
PowerShellの履歴
PowerShell トランスクリプトファイル
これをオンにする方法は、https://sid-500.com/2017/11/07/powershell-enabling-transcription-logging-by-using-group-policy/で学ぶことができます。
PowerShell モジュール ロギング
PowerShell パイプラインの実行の詳細が記録され、実行されたコマンド、コマンドの呼び出し、およびスクリプトの一部が含まれます。ただし、完全な実行の詳細と出力結果はキャプチャされない場合があります。
これを有効にするには、ドキュメントの「トランスクリプトファイル」セクションの指示に従い、**「モジュール ロギング」を選択してください。「Powershell トランスクリプション」**の代わりに。
PowersShellログから最後の15イベントを表示するには、次のコマンドを実行できます:
PowerShell スクリプトブロックロギング
スクリプトの実行の完全な活動と全内容の記録がキャプチャされ、実行されるコードの各ブロックが文書化されることを保証します。このプロセスは、各活動の包括的な監査証跡を保持し、フォレンジックや悪意のある行動の分析にとって貴重です。実行時にすべての活動を文書化することにより、プロセスに関する詳細な洞察が提供されます。
スクリプトブロックのログイベントは、Windowsイベントビューアのパス Application and Services Logs > Microsoft > Windows > PowerShell > Operational にあります。 最後の20件のイベントを表示するには、次のコマンドを使用できます:
インターネット設定
ドライブ
WSUS
更新がhttpではなくhttpSを使用してリクエストされていない場合、システムを侵害することができます。
次のコマンドを実行して、ネットワークが非SSL WSUS更新を使用しているかどうかを確認します:
もし次のような返信があった場合:
そして、HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate\AU /v UseWUServer
が 1
に等しい場合。
その場合、悪用可能です。 最後のレジストリが 0 に等しい場合、WSUS エントリは無視されます。
この脆弱性を悪用するには、次のようなツールを使用できます: Wsuxploit、pyWSUS - これらは、非SSL WSUSトラフィックに「偽」の更新を注入するためのMiTM武器化されたエクスプロイトスクリプトです。
ここで研究を読む:
WSUS CVE-2020-1013
完全なレポートをこちらで読む。 基本的に、これはこのバグが悪用する欠陥です:
ローカルユーザープロキシを変更する権限があり、Windows UpdateがInternet Explorerの設定で構成されたプロキシを使用する場合、私たちはPyWSUSをローカルで実行して自分のトラフィックを傍受し、資産上で昇格されたユーザーとしてコードを実行する権限を持っています。
さらに、WSUSサービスは現在のユーザーの設定を使用するため、その証明書ストアも使用します。WSUSホスト名の自己署名証明書を生成し、この証明書を現在のユーザーの証明書ストアに追加すれば、HTTPおよびHTTPS WSUSトラフィックの両方を傍受できるようになります。WSUSは、証明書に対して信頼の初回使用タイプの検証を実装するためのHSTSのようなメカニズムを使用していません。提示された証明書がユーザーによって信頼され、正しいホスト名を持っている場合、サービスによって受け入れられます。
この脆弱性を利用するには、ツールWSUSpiciousを使用できます(解放された場合)。
KrbRelayUp
ローカル特権昇格の脆弱性は、特定の条件下でWindows ドメイン環境に存在します。これらの条件には、LDAP署名が強制されていない環境、ユーザーがリソースベースの制約付き委任(RBCD)を構成する権利を持っていること、ユーザーがドメイン内でコンピュータを作成する能力が含まれます。これらの要件は、デフォルト設定を使用して満たされることに注意が必要です。
エクスプロイトを見つけるには、https://github.com/Dec0ne/KrbRelayUpを参照してください。
攻撃の流れについての詳細は、https://research.nccgroup.com/2019/08/20/kerberos-resource-based-constrained-delegation-when-an-image-change-leads-to-a-privilege-escalation/を確認してください。
AlwaysInstallElevated
これらの2つのレジスタが 有効(値が0x1)である場合、あらゆる特権のユーザーがNT AUTHORITY\SYSTEMとして*.msi
ファイルをインストール(実行)できます。
Metasploit ペイロード
もしmeterpreterセッションがある場合、モジュール**exploit/windows/local/always_install_elevated
**を使用してこの技術を自動化できます。
PowerUP
Write-UserAddMSI
コマンドをpower-upから使用して、現在のディレクトリ内に特権を昇格させるためのWindows MSIバイナリを作成します。このスクリプトは、ユーザー/グループの追加を促す事前コンパイルされたMSIインストーラーを書き出します(そのため、GIUアクセスが必要です):
Just execute the created binary to escalate privileges.
MSI Wrapper
このチュートリアルを読んで、このツールを使用してMSIラッパーを作成する方法を学んでください。コマンドラインを実行したいだけの場合は、".bat"ファイルをラップできます。
MSI WrapperCreate MSI with WIX
Create MSI with WIXCreate MSI with Visual Studio
Cobalt StrikeまたはMetasploitを使用して、
C:\privesc\beacon.exe
に新しいWindows EXE TCPペイロードを生成します。Visual Studioを開き、新しいプロジェクトを作成を選択し、検索ボックスに「installer」と入力します。Setup Wizardプロジェクトを選択し、次へをクリックします。
プロジェクトにAlwaysPrivescのような名前を付け、場所に**
C:\privesc
**を使用し、ソリューションとプロジェクトを同じディレクトリに配置を選択し、作成をクリックします。次へをクリックし続け、4つのステップの3に到達します(含めるファイルを選択)。追加をクリックし、先ほど生成したBeaconペイロードを選択します。次に、完了をクリックします。
ソリューションエクスプローラーでAlwaysPrivescプロジェクトを強調表示し、プロパティでTargetPlatformをx86からx64に変更します。
AuthorやManufacturerなど、インストールされたアプリをより正当なものに見せるために変更できる他のプロパティもあります。
プロジェクトを右クリックし、表示 > カスタムアクションを選択します。
Installを右クリックし、カスタムアクションの追加を選択します。
Application Folderをダブルクリックし、beacon.exeファイルを選択してOKをクリックします。これにより、インストーラーが実行されるとすぐにビークンペイロードが実行されることが保証されます。
カスタムアクションプロパティの下で、Run64BitをTrueに変更します。
最後に、ビルドします。
警告
File 'beacon-tcp.exe' targeting 'x64' is not compatible with the project's target platform 'x86'
が表示された場合は、プラットフォームをx64に設定していることを確認してください。
MSI Installation
悪意のある.msi
ファイルのインストールをバックグラウンドで実行するには:
この脆弱性を悪用するには、次を使用できます: exploit/windows/local/always_install_elevated
アンチウイルスと検出器
監査設定
これらの設定は何がログされるかを決定するため、注意を払うべきです。
WEF
Windows Event Forwardingは、ログがどこに送信されるかを知ることが興味深いです。
LAPS
LAPSは、ローカル管理者パスワードの管理を目的としており、ドメインに参加しているコンピュータ上で各パスワードが一意でランダム化され、定期的に更新されることを保証します。これらのパスワードはActive Directory内に安全に保存され、ACLを通じて十分な権限が付与されたユーザーのみがアクセスでき、承認されている場合にローカル管理者パスワードを表示できます。
LAPSWDigest
アクティブな場合、平文のパスワードはLSASS(ローカルセキュリティ権限サブシステムサービス)に保存されます。 このページのWDigestに関する詳細。
LSA保護
Windows 8.1以降、Microsoftはローカルセキュリティ機関(LSA)の強化された保護を導入し、信頼されていないプロセスによるメモリの読み取りやコードの注入をブロックすることで、システムのセキュリティをさらに強化しました。 LSA保護に関する詳細はこちら.
Credentials Guard
Credential Guard は Windows 10 で導入されました。その目的は、デバイスに保存された資格情報をパス・ザ・ハッシュ攻撃のような脅威から保護することです。| Credentials Guard に関する詳細はこちら。
キャッシュされた資格情報
ドメイン資格情報は、ローカルセキュリティ機関(LSA)によって認証され、オペレーティングシステムのコンポーネントによって利用されます。ユーザーのログオンデータが登録されたセキュリティパッケージによって認証されると、通常、ユーザーのドメイン資格情報が確立されます。 キャッシュされた資格情報の詳細はこちら.
ユーザーとグループ
ユーザーとグループの列挙
自分が所属するグループに興味深い権限があるかどうかを確認する必要があります。
特権グループ
もしあなたが特権グループに属している場合、特権を昇格させることができるかもしれません。特権グループについて学び、特権を昇格させるためにそれらを悪用する方法についてはこちらをご覧ください:
Privileged Groupsトークン操作
このページでトークンとは何かについて詳しく学んでください:Windows トークン。 次のページをチェックして興味深いトークンについて学び、それらを悪用する方法を確認してください:
Abusing Tokensログインユーザー / セッション
ホームフォルダ
パスワードポリシー
クリップボードの内容を取得する
実行中のプロセス
ファイルとフォルダーの権限
まず、プロセスをリストアップしてプロセスのコマンドライン内のパスワードを確認します。 実行中のバイナリを上書きできるか、またはバイナリフォルダーの書き込み権限があるかを確認して、可能なDLLハイジャック攻撃を利用します:
常に実行中の可能性のある electron/cef/chromiumデバッガー を確認してください。これを悪用して特権を昇格させることができます。
プロセスバイナリの権限を確認する
プロセスバイナリのフォルダの権限を確認する (DLL Hijacking)
メモリパスワードマイニング
procdumpを使用して、実行中のプロセスのメモリダンプを作成できます。FTPのようなサービスはメモリ内に平文の資格情報を持っていますので、メモリをダンプして資格情報を読み取ってみてください。
不安全なGUIアプリ
SYSTEMとして実行されているアプリケーションは、ユーザーがCMDを起動したり、ディレクトリをブラウズしたりすることを許可する場合があります。
例: "Windowsヘルプとサポート" (Windows + F1)、"コマンドプロンプト"を検索し、"コマンドプロンプトを開くをクリック"をクリック
サービス
サービスのリストを取得:
パーミッション
scを使用してサービスの情報を取得できます。
accesschk バイナリを Sysinternals から取得し、各サービスの必要な特権レベルを確認することをお勧めします。
"Authenticated Users"がサービスを変更できるかどうかを確認することをお勧めします:
こちらからXP用のaccesschk.exeをダウンロードできます
サービスを有効にする
このエラーが発生している場合(例えばSSDPSRVの場合):
システムエラー1058が発生しました。 サービスは無効になっているか、関連付けられた有効なデバイスがないため、開始できません。
次のようにして有効にできます。
この問題の別の回避策は、次のコマンドを実行することです:
サービスバイナリパスの変更
「認証されたユーザー」グループがサービスに対してSERVICE_ALL_ACCESSを持つシナリオでは、サービスの実行可能バイナリを変更することが可能です。scを変更して実行するには:
サービスの再起動
特権はさまざまな権限を通じて昇格できます:
SERVICE_CHANGE_CONFIG: サービスバイナリの再構成を許可します。
WRITE_DAC: 権限の再構成を可能にし、サービス設定の変更ができるようになります。
WRITE_OWNER: 所有権の取得と権限の再構成を許可します。
GENERIC_WRITE: サービス設定を変更する能力を継承します。
GENERIC_ALL: サービス設定を変更する能力も継承します。
この脆弱性の検出と悪用には、exploit/windows/local/service_permissions を利用できます。
サービスバイナリの弱い権限
サービスによって実行されるバイナリを変更できるかどうか、またはバイナリが存在するフォルダーに対する書き込み権限があるかどうかを確認してください(DLL Hijacking)。 wmic(system32ではない)を使用してサービスによって実行されるすべてのバイナリを取得し、icaclsを使用して権限を確認できます:
sc と icacls も使用できます:
サービスレジストリの変更権限
サービスレジストリを変更できるか確認する必要があります。 サービスレジストリに対する権限を確認するには、次のようにします:
Authenticated Users または NT AUTHORITY\INTERACTIVE が FullControl
権限を持っているかどうかを確認する必要があります。もしそうであれば、サービスによって実行されるバイナリを変更できます。
実行されるバイナリのパスを変更するには:
サービスレジストリのAppendData/AddSubdirectory権限
この権限を持っている場合、このレジストリからサブレジストリを作成できることを意味します。Windowsサービスの場合、これは任意のコードを実行するのに十分です:
AppendData/AddSubdirectory permission over service registry引用されていないサービスパス
実行可能ファイルへのパスが引用符で囲まれていない場合、Windowsはスペースの前にあるすべての部分を実行しようとします。
例えば、パス C:\Program Files\Some Folder\Service.exe の場合、Windowsは次のように実行しようとします:
すべての引用されていないサービスパスをリストし、組み込みのWindowsサービスに属するものは除外します:
この脆弱性を検出し、悪用することができます metasploitを使用して: exploit/windows/local/trusted\_service\_path
metasploitを使用してサービスバイナリを手動で作成できます:
Recovery Actions
Windowsは、サービスが失敗した場合に実行されるアクションを指定することをユーザーに許可します。この機能は、バイナリを指すように構成できます。このバイナリが置き換え可能であれば、特権昇格が可能かもしれません。詳細は公式ドキュメントで確認できます。
Applications
Installed Applications
バイナリの権限(上書きして特権を昇格できるかもしれません)とフォルダーの権限を確認してください(DLL Hijacking)。
書き込み権限
特定のファイルを読み取るために設定ファイルを変更できるか、または管理者アカウント(schedtasks)によって実行されるバイナリを変更できるかを確認します。
システム内の弱いフォルダー/ファイルの権限を見つける方法は次のとおりです:
スタートアップ時に実行
異なるユーザーによって実行されるレジストリまたはバイナリを上書きできるか確認してください。 以下のページを読んで、特権を昇格させるための興味深い autorunsの場所 について学んでください:
Privilege Escalation with Autorunsドライバー
可能なサードパーティの奇妙/脆弱なドライバーを探してください。
PATH DLL Hijacking
もしPATH内のフォルダーに書き込み権限がある場合、プロセスによって読み込まれるDLLをハイジャックし、権限を昇格させることができるかもしれません。
PATH内のすべてのフォルダーの権限を確認してください:
このチェックを悪用する方法の詳細については、次を参照してください:
Writable Sys Path +Dll Hijacking Privescネットワーク
共有
hosts file
hostsファイルにハードコーディングされた他の既知のコンピュータを確認します
ネットワークインターフェースとDNS
Open Ports
外部からの制限されたサービスを確認します
ルーティングテーブル
ARPテーブル
ファイアウォールルール
ファイアウォール関連のコマンドについてはこのページを確認してください (ルールのリスト、ルールの作成、オフにする、オフにする...)
Windows Subsystem for Linux (wsl)
バイナリ bash.exe
は C:\Windows\WinSxS\amd64_microsoft-windows-lxssbash_[...]\bash.exe
にも見つけることができます。
ルートユーザーを取得すると、任意のポートでリスニングできます(最初に nc.exe
を使用してポートでリスニングすると、GUIを介して nc
がファイアウォールによって許可されるべきかどうかを尋ねられます)。
bashを簡単にrootとして起動するには、--default-user root
を試すことができます。
WSL
ファイルシステムは、フォルダーC:\Users\%USERNAME%\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\
で探索できます。
Windowsの資格情報
Winlogonの資格情報
Credentials manager / Windows vault
From https://www.neowin.net/news/windows-7-exploring-credential-manager-and-windows-vault Windows Vaultは、Windowsがユーザーを自動的にログインさせることができるサーバー、ウェブサイト、その他のプログラムのユーザー資格情報を保存します。一見すると、ユーザーがFacebookの資格情報、Twitterの資格情報、Gmailの資格情報などを保存し、ブラウザを通じて自動的にログインできるように見えるかもしれません。しかし、そうではありません。
Windows Vaultは、Windowsがユーザーを自動的にログインさせることができる資格情報を保存します。これは、リソースにアクセスするために資格情報が必要な任意のWindowsアプリケーションがこのCredential Manager & Windows Vaultを利用し、ユーザーが常にユーザー名とパスワードを入力する代わりに提供された資格情報を使用できることを意味します。
アプリケーションがCredential Managerと相互作用しない限り、特定のリソースの資格情報を使用することは不可能だと思います。したがって、アプリケーションがボールトを利用したい場合は、何らかの方法で資格情報マネージャーと通信し、そのリソースの資格情報をデフォルトのストレージボールトから要求する必要があります。
cmdkey
を使用して、マシン上に保存された資格情報をリストします。
次に、保存された資格情報を使用するためにrunas
を/savecred
オプションと共に使用できます。次の例は、SMB共有を介してリモートバイナリを呼び出しています。
runas
を提供された資格情報で使用する。
注意してください、mimikatz、lazagne、credentialfileview、VaultPasswordView、またはEmpire Powershells moduleから。
DPAPI
データ保護API (DPAPI) は、データの対称暗号化の方法を提供し、主にWindowsオペレーティングシステム内で非対称秘密鍵の対称暗号化に使用されます。この暗号化は、ユーザーまたはシステムの秘密を利用してエントロピーに大きく寄与します。
DPAPIは、ユーザーのログイン秘密から導出された対称鍵を通じて鍵の暗号化を可能にします。システム暗号化が関与するシナリオでは、システムのドメイン認証秘密を利用します。
DPAPIを使用して暗号化されたユーザーRSA鍵は、%APPDATA%\Microsoft\Protect\{SID}
ディレクトリに保存され、ここで{SID}
はユーザーのセキュリティ識別子を表します。DPAPIキーは、ユーザーの秘密鍵を保護するマスターキーと同じファイルに共存しており、通常は64バイトのランダムデータで構成されています。(このディレクトリへのアクセスは制限されており、CMDのdir
コマンドでその内容をリストすることはできませんが、PowerShellを通じてリストすることは可能です)。
mimikatzモジュール dpapi::masterkey
を適切な引数(/pvk
または /rpc
)で使用して、それを復号化できます。
マスターパスワードで保護された資格情報ファイル は通常、次の場所にあります:
mimikatzモジュール dpapi::cred
を適切な /masterkey
と共に使用して復号化できます。
メモリ から 多くのDPAPI マスタキー を sekurlsa::dpapi
モジュールを使って抽出できます(あなたがルートの場合)。
PowerShell資格情報
PowerShell資格情報 は、スクリプト作成や自動化タスクのために、暗号化された資格情報を便利に保存する方法としてよく使用されます。資格情報は DPAPI を使用して保護されており、通常はそれが作成された同じコンピュータ上の同じユーザーによってのみ復号化できます。
資格情報を含むファイルからPS資格情報を復号化するには、次のようにします:
Wifi
保存されたRDP接続
それらは HKEY_USERS\<SID>\Software\Microsoft\Terminal Server Client\Servers\
および HKCU\Software\Microsoft\Terminal Server Client\Servers\
にあります。
最近実行されたコマンド
リモートデスクトップ資格情報マネージャー
Use the Mimikatz dpapi::rdg
module with appropriate /masterkey
to decrypt any .rdg files
You can extract many DPAPI masterkeys from memory with the Mimikatz sekurlsa::dpapi
module
Sticky Notes
人々はしばしばWindowsワークステーションでStickyNotesアプリを使用してパスワードやその他の情報を保存しますが、それがデータベースファイルであることに気づいていません。このファイルはC:\Users\<user>\AppData\Local\Packages\Microsoft.MicrosoftStickyNotes_8wekyb3d8bbwe\LocalState\plum.sqlite
にあり、常に検索して調査する価値があります。
AppCmd.exe
AppCmd.exeからパスワードを回復するには、管理者であり、高い整合性レベルで実行する必要があります。
AppCmd.exeは%systemroot%\system32\inetsrv\
ディレクトリにあります。
このファイルが存在する場合、いくつかの資格情報が構成されており、回復できる可能性があります。
This code was extracted from PowerUP:
SCClient / SCCM
C:\Windows\CCM\SCClient.exe
が存在するか確認します。
インストーラーは SYSTEM 権限で実行され、多くは DLL サイドローディングに脆弱です (情報元: ** https://github.com/enjoiz/Privesc)。**
ファイルとレジストリ (資格情報)
Puttyの資格情報
Putty SSH ホストキー
SSHキーのレジストリ
SSHプライベートキーはレジストリキーHKCU\Software\OpenSSH\Agent\Keys
内に保存されるため、そこに興味深いものがないか確認する必要があります:
そのパス内にエントリが見つかった場合、それはおそらく保存されたSSHキーです。これは暗号化されて保存されていますが、https://github.com/ropnop/windows_sshagent_extractを使用して簡単に復号化できます。 この技術に関する詳細はこちら: https://blog.ropnop.com/extracting-ssh-private-keys-from-windows-10-ssh-agent/
ssh-agent
サービスが実行されていない場合、自動的に起動するようにするには、次のコマンドを実行します:
この技術はもはや有効ではないようです。いくつかのsshキーを作成し、ssh-add
で追加し、sshを介してマシンにログインしようとしました。レジストリ HKCU\Software\OpenSSH\Agent\Keys は存在せず、procmonは非対称キー認証中にdpapi.dll
の使用を特定しませんでした。
無人ファイル
あなたはmetasploitを使用してこれらのファイルを検索することもできます: post/windows/gather/enum_unattend
Example content:
SAM & SYSTEM バックアップ
クラウド認証情報
McAfee SiteList.xml
SiteList.xmlというファイルを探します。
Cached GPP Pasword
以前は、グループポリシーの設定(GPP)を介して、複数のマシンにカスタムローカル管理者アカウントを展開する機能がありました。しかし、この方法には重大なセキュリティ上の欠陥がありました。まず、SYSVOLにXMLファイルとして保存されているグループポリシーオブジェクト(GPO)は、任意のドメインユーザーによってアクセス可能でした。次に、これらのGPP内のパスワードは、公開されたデフォルトキーを使用してAES256で暗号化されており、認証されたユーザーによって復号化可能でした。これは、ユーザーが特権を昇格させる可能性があるため、深刻なリスクをもたらしました。
このリスクを軽減するために、「cpassword」フィールドが空でないローカルキャッシュされたGPPファイルをスキャンする機能が開発されました。このようなファイルが見つかると、関数はパスワードを復号化し、カスタムPowerShellオブジェクトを返します。このオブジェクトには、GPPに関する詳細とファイルの場所が含まれており、このセキュリティ脆弱性の特定と修正に役立ちます。
これらのファイルを探すには、C:\ProgramData\Microsoft\Group Policy\history
または_C:\Documents and Settings\All Users\Application Data\Microsoft\Group Policy\history(W Vista以前)_を参照してください:
Groups.xml
Services.xml
Scheduledtasks.xml
DataSources.xml
Printers.xml
Drives.xml
cPasswordを復号化するには:
Using crackmapexec to get the passwords: パスワードを取得するための crackmapexec の使用:
IIS Web Config
OpenVPNの資格情報
ログ
Ask for credentials
You can always ask the user to enter his credentials of even the credentials of a different user if you think he can know them (notice that asking the client directly for the credentials is really risky):
資格情報を含む可能性のあるファイル名
以前に平文またはBase64でパスワードを含んでいた既知のファイル
すべての提案されたファイルを検索します:
RecycleBin内の資格情報
資格情報が含まれているかどうかを確認するために、Binもチェックする必要があります。
複数のプログラムによって保存されたパスワードを回復するには、次のツールを使用できます: http://www.nirsoft.net/password_recovery_tools.html
レジストリ内
資格情報を含む他の可能性のあるレジストリキー
ブラウザの履歴
ChromeまたはFirefoxからパスワードが保存されているdbを確認する必要があります。 また、ブラウザの履歴、ブックマーク、お気に入りも確認してください。そこにパスワードが保存されているかもしれません。
ブラウザからパスワードを抽出するためのツール:
Mimikatz:
dpapi::chrome
COM DLLの上書き
コンポーネントオブジェクトモデル (COM) は、異なる言語のソフトウェアコンポーネント間の相互通信を可能にするWindowsオペレーティングシステム内に構築された技術です。各COMコンポーネントは**クラスID (CLSID)**によって識別され、各コンポーネントはインターフェースID (IIDs)によって識別される1つ以上のインターフェースを介して機能を公開します。
COMクラスとインターフェースは、それぞれHKEY_CLASSES_ROOT\CLSIDおよびHKEY_CLASSES_ROOT\Interfaceのレジストリに定義されています。このレジストリは、HKEY_LOCAL_MACHINE\Software\Classes + HKEY_CURRENT_USER\Software\Classes = HKEY_CLASSES_ROOTをマージすることによって作成されます。
このレジストリのCLSID内には、DLLを指すデフォルト値を含む子レジストリInProcServer32があり、ThreadingModelという値がApartment(シングルスレッド)、Free(マルチスレッド)、Both(シングルまたはマルチ)、またはNeutral(スレッド中立)である可能性があります。
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F4226785378-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FpWAf1y9UWEMh8PEO1vPV%252Fuploads%252Fgit-blob-2b1d4ac66778ec1cf22fe35ba7602b784f62bc77%252Fimage%2520%28729%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=7169b565&sv=1)
基本的に、実行されるDLLのいずれかを上書きすることができれば、そのDLLが異なるユーザーによって実行される場合、特権を昇格させることができます。
攻撃者がCOMハイジャッキングを永続性メカニズムとしてどのように使用するかを学ぶには、次を確認してください:
COM Hijackingファイルとレジストリ内の一般的なパスワード検索
ファイルの内容を検索
特定のファイル名を持つファイルを検索する
レジストリでキー名とパスワードを検索する
パスワードを検索するツール
MSF-Credentials Plugin はmsfの プラグインで、被害者の内部で資格情報を検索するすべてのmetasploit POSTモジュールを自動的に実行するために作成しました。 Winpeas は、このページに記載されているパスワードを含むすべてのファイルを自動的に検索します。 Lazagne は、システムからパスワードを抽出するためのもう一つの優れたツールです。
ツール SessionGopher は、セッション、ユーザー名、およびパスワードを検索します。これらは、クリアテキストでデータを保存するいくつかのツール(PuTTY、WinSCP、FileZilla、SuperPuTTY、RDP)によって保存されます。
漏洩ハンドラ
SYSTEMとして実行されているプロセスが新しいプロセスを開く (OpenProcess()
) フルアクセスで。同じプロセスが低特権で新しいプロセスを作成する (CreateProcess()
) が、メインプロセスのすべてのオープンハンドルを継承する。
その後、低特権プロセスにフルアクセスがある場合、OpenProcess()
で作成された特権プロセスへのオープンハンドルを取得し、シェルコードを注入できます。
この例を読んで、この脆弱性を検出し、悪用する方法についての詳細情報を得てください。
異なる権限レベル(フルアクセスだけでなく)で継承されたプロセスとスレッドのオープンハンドルをテストし、悪用する方法についてのより完全な説明を得るために、こちらの別の投稿を読んでください。
名前付きパイプクライアントの偽装
共有メモリセグメント、すなわちパイプは、プロセス間の通信とデータ転送を可能にします。
Windowsは名前付きパイプと呼ばれる機能を提供しており、無関係なプロセスが異なるネットワークを介してもデータを共有できます。これは、名前付きパイプサーバーと名前付きパイプクライアントとして定義された役割を持つクライアント/サーバーアーキテクチャに似ています。
クライアントによってパイプを通じてデータが送信されると、パイプを設定したサーバーは、必要なSeImpersonate権限を持っている場合、クライアントのアイデンティティを引き受けることができます。パイプを介して通信する特権プロセスを特定し、そのプロセスのアイデンティティを模倣することで、あなたが確立したパイプと相互作用する際にそのプロセスのアイデンティティを採用することによってより高い特権を得る機会が提供されます。このような攻撃を実行するための指示は、こちらとこちらで見つけることができます。
また、次のツールは、burpのようなツールで名前付きパイプ通信を傍受することを可能にします:https://github.com/gabriel-sztejnworcel/pipe-intercept このツールは、特権昇格を見つけるためにすべてのパイプをリストし、表示することを可能にします https://github.com/cyberark/PipeViewer
その他
パスワードのためのコマンドラインの監視
ユーザーとしてシェルを取得すると、コマンドラインで資格情報を渡すスケジュールされたタスクや他のプロセスが実行されている可能性があります。以下のスクリプトは、プロセスのコマンドラインを2秒ごとにキャプチャし、現在の状態と前の状態を比較して、違いを出力します。
パスワードをプロセスから盗む
低特権ユーザーから NT\AUTHORITY SYSTEM へ (CVE-2019-1388) / UAC バイパス
グラフィカルインターフェース(コンソールまたは RDP 経由)にアクセスでき、UAC が有効になっている場合、Microsoft Windows の一部のバージョンでは、特権のないユーザーから「NT\AUTHORITY SYSTEM」などのターミナルや他のプロセスを実行することが可能です。
これにより、特権を昇格させ、同じ脆弱性を使用して同時に UAC をバイパスすることができます。さらに、何もインストールする必要がなく、プロセス中に使用されるバイナリは Microsoft によって署名され、発行されています。
影響を受けるシステムの一部は以下の通りです:
この脆弱性を悪用するには、次の手順を実行する必要があります:
あなたは以下のGitHubリポジトリに必要なすべてのファイルと情報を持っています:
https://github.com/jas502n/CVE-2019-1388
管理者の中程度から高い整合性レベルへ / UACバイパス
整合性レベルについて学ぶためにこれを読んでください:
Integrity Levels次に、UACとUACバイパスについて学ぶためにこれを読んでください:
UAC - User Account Control高い整合性からシステムへ
新しいサービス
すでに高い整合性プロセスで実行している場合、SYSTEMにパスするのは、新しいサービスを作成して実行するだけで簡単です:
AlwaysInstallElevated
高い整合性プロセスから、AlwaysInstallElevatedレジストリエントリを有効にし、_.msi_ラッパーを使用してリバースシェルをインストールしようとすることができます。 関与するレジストリキーと_.msi_パッケージのインストール方法についての詳細はこちら。
High + SeImpersonate privilege to System
コードは こちらで見つけることができます。
From SeDebug + SeImpersonate to Full Token privileges
これらのトークン特権を持っている場合(おそらくすでに高い整合性プロセスで見つけるでしょう)、ほぼすべてのプロセス(保護されたプロセスではない)をSeDebug特権で開くことができ、プロセスのトークンをコピーし、そのトークンを使用して任意のプロセスを作成することができます。 この技術を使用する際は、通常、すべてのトークン特権を持つSYSTEMとして実行されている任意のプロセスを選択します(はい、すべてのトークン特権を持たないSYSTEMプロセスを見つけることができます)。 提案された技術を実行するコードの 例はこちらで見つけることができます。
Named Pipes
この技術は、meterpreterがgetsystem
で昇格するために使用されます。この技術は、パイプを作成し、そのパイプに書き込むサービスを作成/悪用することから成ります。次に、SeImpersonate
特権を使用してパイプを作成したサーバーは、パイプクライアント(サービス)のトークンを偽装し、SYSTEM特権を取得することができます。
名前付きパイプについてもっと学びたい場合はこれを読むべきです。
高い整合性からSYSTEMに名前付きパイプを使用して移行する方法の例を読みたい場合はこれを読むべきです。
Dll Hijacking
SYSTEMとして実行されているプロセスによってロードされるdllをハイジャックすることができれば、その権限で任意のコードを実行することができます。したがって、Dll Hijackingはこの種の特権昇格にも役立ち、さらに、高い整合性プロセスからははるかに簡単に達成できます。なぜなら、dllをロードするために使用されるフォルダーに書き込み権限を持っているからです。 Dllハイジャックについて こちらで詳しく学ぶことができます。
From Administrator or Network Service to System
From LOCAL SERVICE or NETWORK SERVICE to full privs
読む: https://github.com/itm4n/FullPowers
More help
Useful tools
Windowsローカル特権昇格ベクトルを探すための最良のツール: WinPEAS
PS
PrivescCheck
PowerSploit-Privesc(PowerUP) -- 誤設定や機密ファイルをチェックします(こちらを確認)。検出されました。
JAWS -- 一部の誤設定をチェックし、情報を収集します(こちらを確認)。
privesc -- 誤設定をチェックします
SessionGopher -- PuTTY、WinSCP、SuperPuTTY、FileZilla、およびRDPの保存されたセッション情報を抽出します。ローカルで-Thoroughを使用します。
Invoke-WCMDump -- 資格情報マネージャーから資格情報を抽出します。検出されました。
DomainPasswordSpray -- 収集したパスワードをドメイン全体にスプレーします
Inveigh -- InveighはPowerShell ADIDNS/LLMNR/mDNS/NBNSスプーフィングおよび中間者ツールです。
WindowsEnum -- 基本的な特権昇格Windows列挙
Sherlock ~~~~ -- 既知の特権昇格脆弱性を検索します(Watsonのために非推奨)
WINspect -- ローカルチェック (管理者権限が必要)
Exe
Watson -- 既知の特権昇格脆弱性を検索します(VisualStudioを使用してコンパイルする必要があります)(事前コンパイル済み)
SeatBelt -- 誤設定を探してホストを列挙します(特権昇格よりも情報収集ツール)(コンパイルが必要) (事前コンパイル済み)
LaZagne -- 多くのソフトウェアから資格情報を抽出します(GitHubに事前コンパイル済みexeあり)
SharpUP -- PowerUpのC#への移植
Beroot ~~~~ -- 誤設定をチェックします(GitHubに事前コンパイル済みの実行可能ファイル)。推奨されません。Win10ではうまく機能しません。
Windows-Privesc-Check -- 可能な誤設定をチェックします(Pythonからのexe)。推奨されません。Win10ではうまく機能しません。
Bat
winPEASbat -- この投稿に基づいて作成されたツール(正しく動作するためにaccesschkは必要ありませんが、使用することができます)。
Local
Windows-Exploit-Suggester -- systeminfoの出力を読み取り、動作するエクスプロイトを推奨します(ローカルPython) Windows Exploit Suggester Next Generation -- systeminfoの出力を読み取り、動作するエクスプロイトを推奨します(ローカルPython)
Meterpreter
multi/recon/local_exploit_suggestor
プロジェクトを正しいバージョンの.NETを使用してコンパイルする必要があります(これを参照)。被害者ホストにインストールされている.NETのバージョンを確認するには、次のようにします:
Bibliography
AWSハッキングを学び、練習する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、練習する:
HackTricks Training GCP Red Team Expert (GRTE)
Last updated