hacktricks/windows-hardening/windows-local-privilege-escalation/privilege-escalation-abusing-tokens
2024-02-07 04:47:05 +00:00
..
abuse-seloaddriverprivilege.md Translated ['ctf-write-ups/challenge-0521.intigriti.io.md', 'ctf-write-u 2024-02-07 04:47:05 +00:00
README.md Translated ['ctf-write-ups/challenge-0521.intigriti.io.md', 'ctf-write-u 2024-02-07 04:47:05 +00:00

トークンの悪用

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

トークン

Windowsアクセストークンが何かわからない場合は、続行する前にこのページを読んでください:

{% content-ref url="../access-tokens.md" %} access-tokens.md {% endcontent-ref %}

おそらく、すでに持っているトークンを悪用して特権を昇格させることができるかもしれません

SeImpersonatePrivilege3.1.1

この特権を持つプロセスは、取得できるトークン偽装(作成はできません)できます。WindowsサービスDCOMから特権トークンを取得し、NTLM認証を使ってシステムとしてプロセスを実行できます。juicy-potatoRogueWinRMwinrmを無効にする必要ありSweetPotatoPrintSpooferで悪用できます:

{% content-ref url="../roguepotato-and-printspoofer.md" %} roguepotato-and-printspoofer.md {% endcontent-ref %}

{% content-ref url="../juicypotato.md" %} juicypotato.md {% endcontent-ref %}

SeAssignPrimaryPrivilege3.1.2

SeImpersonatePrivilegeと非常に似ており、特権トークンを取得するために同じ方法を使用します。
その後、この特権は、新しい/中断されたプロセスにプライマリトークンを割り当てることを可能にします。特権偽装トークンを使用してプライマリトークンDuplicateTokenExを派生させることができます。
トークンを使用して、'CreateProcessAsUser'で新しいプロセスを作成したり、プロセスを中断してトークンを設定したりできます(一般的に、実行中のプロセスのプライマリトークンを変更することはできません)。

SeTcbPrivilege3.1.3

このトークンを有効にしている場合、KERB_S4U_LOGONを使用して、資格情報を知らなくても他のユーザーのために偽装トークンを取得し、任意のグループ(管理者)を追加し、トークンの整合性レベルを「medium」に設定し、このトークンを現在のスレッドに割り当てることができますSetThreadToken

SeBackupPrivilege3.1.4

この特権により、システムは任意のファイルに読み取りアクセス権をすべて付与します(読み取りのみ)。
これを使用して、レジストリからローカル管理者アカウントのパスワードハッシュを読み取り、その後、ハッシュPTHを使用して「psexec」または「wmicexec」を使用できます。
この攻撃は、ローカル管理者が無効になっている場合、またはリモートで接続されている場合にローカル管理者が管理者でないように構成されている場合には機能しません。
次の方法でこの特権を悪用できます:

{% content-ref url="../../active-directory-methodology/privileged-groups-and-token-privileges.md" %} privileged-groups-and-token-privileges.md {% endcontent-ref %}

SeRestorePrivilege3.1.5

システム上の任意のファイルに書き込みアクセス権を与えます。
サービスの変更、DLLハイジャック、デバッガーの設定Image File Execution Optionsなど、昇格するための多くのオプションがあります。

SeCreateTokenPrivilege3.1.6

このトークンは、ユーザーがトークンを偽装できる場合にのみEoPメソッドとして使用できますSeImpersonatePrivilegeがなくても
可能なシナリオでは、ユーザーが同じユーザー用のトークンを偽装し、整合性レベルが現在のプロセスの整合性レベル以下である場合に、トークンに特権グループSIDを追加できます。

SeLoadDriverPrivilege3.1.7

デバイスドライバーの読み込みとアンロードができます。
ImagePathとTypeの値を持つレジストリにエントリを作成する必要があります。
HKLMに書き込み権限がないため、HKCUを使用する必要があります。ただし、HKCUはカーネルにとって意味がないため、カーネルにガイドする方法は、ドライバー構成のための期待されるパスを使用するため、パスを使用することです"\Registry\User\S-1-5-21-582075628-3447520101-2530640108-1003\System\CurrentControlSet\Services\DriverName"IDは現在のユーザーのRIDです)。
したがって、HKCU内にそのパスをすべて作成し、ImagePath実行されるバイナリのパスとTypeSERVICE_KERNEL_DRIVER 0x00000001を設定する必要があります。

{% content-ref url="abuse-seloaddriverprivilege.md" %} abuse-seloaddriverprivilege.md {% endcontent-ref %}

SeTakeOwnershipPrivilege3.1.8

この特権はSeRestorePrivilegeに非常に似ています。
WRITE_OWNERアクセス権を付与することで、「任意のオブジェクトの所有権を取得することができます。
まず、書き込むレジストリキーの所有権を取得し、書き込むことができるようにDACLを変更する必要があります。

takeown /f 'C:\some\file.txt' #Now the file is owned by you
icacls 'C:\some\file.txt' /grant <your_username>:F #Now you have full access
# Use this with files that might contain credentials such as
%WINDIR%\repair\sam
%WINDIR%\repair\system
%WINDIR%\repair\software
%WINDIR%\repair\security
%WINDIR%\system32\config\security.sav
%WINDIR%\system32\config\software.sav
%WINDIR%\system32\config\system.sav
%WINDIR%\system32\config\SecEvent.Evt
%WINDIR%\system32\config\default.sav
c:\inetpub\wwwwroot\web.config

SeDebugPrivilege (3.1.9)

これにより、他のプロセスをデバッグすることができます。これには、そのプロセスのメモリに読み書きすることが含まれます。
この特権を使用すると、AV/HIPS ソリューションの大部分を回避するために使用できるさまざまなメモリインジェクション戦略があります。

メモリのダンプ

この特権の乱用の一例として、SysInternalsからProcDumpを実行して、プロセスのメモリをダンプすることが挙げられます。たとえば、ユーザーがシステムにログオンした後にユーザーの資格情報を格納するLocal Security Authority Subsystem Service (LSASS**)**プロセスです。

その後、このダンプをmimikatzに読み込んでパスワードを取得できます

mimikatz.exe
mimikatz # log
mimikatz # sekurlsa::minidump lsass.dmp
mimikatz # sekurlsa::logonpasswords

RCE

NT SYSTEMのシェルを取得したい場合は、次の方法を使用できます:

# Get the PID of a process running as NT SYSTEM
import-module psgetsys.ps1; [MyProcess]::CreateProcessFromParent(<system_pid>,<command_to_execute>)

権限の確認

whoami /priv

無効になっているトークンは有効にできます。実際には、EnabledDisabled トークンを悪用することができます。

すべてのトークンを有効にする

EnableAllTokenPrivs.ps1 スクリプトを使用して、すべてのトークンを有効にできます。

.\EnableAllTokenPrivs.ps1
whoami /priv

または、この投稿に埋め込まれたスクリプト

テーブル

完全なトークン特権チートシートはhttps://github.com/gtworek/Priv2Adminにあり、以下の要約は管理者セッションを取得したり機密ファイルを読むための特権を悪用する直接的な方法のみをリストします。

特権 影響 ツール 実行パス 備考
SeAssignPrimaryToken Admin サードパーティーツール "ユーザーがトークンを偽装し、potato.exe、rottenpotato.exe、juicypotato.exeなどのツールを使用してntシステムに昇格することを可能にします" 更新情報を提供してくれたAurélien Chalotに感謝します。近々、もう少しレシピのような表現に言い換えてみます。
SeBackup Threat 組み込みコマンド robocopy /bで機密ファイルを読む

- %WINDIR%\MEMORY.DMPを読むことができるとさらに興味深いかもしれません

- SeBackupPrivilegeおよびrobocopyは、ファイルを開く際には役立ちません。

- Robocopyは/bパラメータを使用する際にはSeBackupとSeRestoreの両方が必要です。

SeCreateToken Admin サードパーティーツール NtCreateTokenを使用してローカル管理者権限を含む任意のトークンを作成します。
SeDebug Admin PowerShell lsass.exeトークンを複製します。 スクリプトはFuzzySecurityで見つけることができます
SeLoadDriver Admin サードパーティーツール

1. szkg64.sysなどのバグのあるカーネルドライバをロードします
2. ドライバの脆弱性を悪用します

また、ftlMC組み込みコマンドを使用してセキュリティ関連のドライバをアンロードするために特権を使用することもできます。例: fltMC sysmondrv

1. szkg64の脆弱性はCVE-2018-15732としてリストされています
2. szkg64悪用コードParvez Anwarによって作成されました

SeRestore Admin PowerShell

1. SeRestore特権が存在する状態でPowerShell/ISEを起動します。
2. Enable-SeRestorePrivilegeを使用して特権を有効にします。
3. utilman.exeをutilman.oldに名前変更します
4. cmd.exeをutilman.exeに名前変更します
5. コンソールをロックし、Win+Uを押します

一部のAVソフトウェアによって攻撃が検出される可能性があります。

代替手法は、同じ特権を使用して「Program Files」に格納されたサービスバイナリを置き換えることに依存します

SeTakeOwnership Admin 組み込みコマンド

1. takeown.exe /f "%windir%\system32"
2. icalcs.exe "%windir%\system32" /grant "%username%":F
3. cmd.exeをutilman.exeに名前変更します
4. コンソールをロックし、Win+Uを押します

一部のAVソフトウェアによって攻撃が検出される可能性があります。

代替手法は、同じ特権を使用して「Program Files」に格納されたサービスバイナリを置き換えることに依存します。

SeTcb Admin サードパーティーツール

トークンを操作してローカル管理者権限を含める。SeImpersonateが必要な場合があります。

検証する必要があります。

参考