23 KiB
トークンの悪用
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- サイバーセキュリティ企業で働いていますか? HackTricksで会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたいですか?または、HackTricksをPDFでダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
- The PEASS Familyを見つけてください。独占的なNFTのコレクションです。
- 公式のPEASS&HackTricksのグッズを手に入れましょう。
- 💬 Discordグループまたはtelegramグループに参加するか、Twitterで🐦@carlospolopmをフォローしてください。
- ハッキングのトリックを共有するには、hacktricksリポジトリとhacktricks-cloudリポジトリにPRを提出してください。
トークン
Windowsアクセストークンが何かわからない場合は、続ける前にこのページを読んでください:
{% content-ref url="../access-tokens.md" %} access-tokens.md {% endcontent-ref %}
既に持っているトークンを悪用して特権をエスカレーションすることができるかもしれません
SeImpersonatePrivilege(3.1.1)
この特権を持つプロセスは、取得できるトークンをなりすますことができます(ただし、作成することはできません)。Windowsサービス(DCOM)から特権のあるトークンを取得することができます。これにより、エクスプロイトに対してNTLM認証を実行し、その後SYSTEMとしてプロセスを実行できます。juicy-potato、RogueWinRM(winrmを無効にする必要があります)、SweetPotato、PrintSpooferでエクスプロイトします:
{% content-ref url="../roguepotato-and-printspoofer.md" %} roguepotato-and-printspoofer.md {% endcontent-ref %}
{% content-ref url="../juicypotato.md" %} juicypotato.md {% endcontent-ref %}
SeAssignPrimaryPrivilege(3.1.2)
これはSeImpersonatePrivilegeと非常に似ており、特権のあるトークンを取得するために同じ方法を使用します。
その後、この特権は、新しい/中断されたプロセスにプライマリトークンを割り当てることができます。特権のあるなりすましトークンを使用して、プライマリトークン(DuplicateTokenEx)を派生させることができます。
トークンを使用して、'CreateProcessAsUser'で新しいプロセスを作成するか、プロセスを中断してトークンを設定できます(一般的に、実行中のプロセスのプライマリトークンを変更することはできません)。
SeTcbPrivilege(3.1.3)
このトークンを有効にしている場合、KERB_S4U_LOGONを使用して、資格情報を知らなくても他のユーザーのなりすましトークンを取得し、任意のグループ(admins)をトークンに追加し、トークンの整合性レベルを「medium」に設定し、このトークンを現在のスレッドに割り当てることができます(SetThreadToken)。
SeBackupPrivilege(3.1.4)
この特権により、システムは任意のファイルに対してすべての読み取りアクセス制御を許可します(読み取りのみ)。
これを使用して、レジストリからローカル管理者アカウントのパスワードハッシュを読み取り、その後ハッシュ(PTH)を使用して「psexec」または「wmicexec」を使用します。
この攻撃は、ローカル管理者が無効になっている場合、またはリモート接続された場合にローカル管理者が管理者でないように構成されている場合は機能しません。
次の方法でこの特権を悪用できます:
- https://github.com/Hackplayers/PsCabesha-tools/blob/master/Privesc/Acl-FullControl.ps1
- https://github.com/giuliano108/SeBackupPrivilege/tree/master/SeBackupPrivilegeCmdLets/bin/Debug
- https://www.youtube.com/watch?v=IfCysW0Od8w&t=2610&ab_channel=IppSecでIppSecに従う
- または、https://github.com/carlospolop/hacktricks/blob/master/windows/active-directory-methodology/privileged-groups-and-token-privileges.mdのバックアップオペレーターを使用した特権のエスカレーションセクションで説明されている方法で
SeRestorePrivilege (3.1.5)
システム上の任意のファイルに対して書き込みアクセス制御が可能です。ファイルのACLに関係なく、サービスの変更、DLLハイジャッキング、デバッガの設定(Image File Execution Options)など、エスカレーションのための多くのオプションがあります。
SeCreateTokenPrivilege (3.1.6)
このトークンは、ユーザーがトークンを偽装できる場合にのみEoPメソッドとして使用できます(SeImpersonatePrivilegeなしでも可能)。
可能なシナリオでは、ユーザーは、トークンが同じユーザーのものであり、整合性レベルが現在のプロセスの整合性レベル以下である場合にトークンを偽装できます。
この場合、ユーザーは偽装トークンを作成し、特権のあるグループSIDを追加することができます。
SeLoadDriverPrivilege (3.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(実行されるバイナリのパス)とType(SERVICE_KERNEL_DRIVER 0x00000001)を設定する必要があります。
{% content-ref url="abuse-seloaddriverprivilege.md" %} abuse-seloaddriverprivilege.md {% endcontent-ref %}
SeTakeOwnershipPrivilege (3.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>)
権限の確認
To check the privileges of the current user, you can use the whoami /priv
command. This will display a list of privileges assigned to the user.
現在のユーザーの権限を確認するには、whoami /priv
コマンドを使用します。これにより、ユーザーに割り当てられた権限のリストが表示されます。
C:\> whoami /priv
PRIVILEGES INFORMATION
----------------------
Privilege Name Description State
=============================== ========================================= ========
SeShutdownPrivilege Shut down the system Disabled
SeChangeNotifyPrivilege Bypass traverse checking Enabled
SeUndockPrivilege Remove computer from docking station Disabled
SeIncreaseWorkingSetPrivilege Increase a process working set Disabled
...
The output will show the name, description, and state (enabled or disabled) of each privilege.
出力には、各権限の名前、説明、および状態(有効または無効)が表示されます。
whoami /priv
無効になっているトークンは有効にすることができ、実際には_有効_と_無効_のトークンを悪用することができます。
すべてのトークンを有効にする
EnableAllTokenPrivs.ps1スクリプトを使用して、すべてのトークンを有効にすることができます。
.\EnableAllTokenPrivs.ps1
whoami /priv
または、この投稿に埋め込まれたスクリプト。
テーブル
完全なトークン特権のチートシートはhttps://github.com/gtworek/Priv2Adminにありますが、以下の要約では、管理者セッションを取得したり、機密ファイルを読み取るために特権を悪用する直接的な方法のみをリストアップします。
特権 | 影響 | ツール | 実行経路 | 備考 |
---|---|---|---|---|
SeAssignPrimaryToken |
Admin | サードパーティツール | "potato.exe、rottenpotato.exe、juicypotato.exeなどのツールを使用して、ユーザーがトークンをなりすまし、ntシステムに特権昇格することができます" | 更新情報を提供してくれたAurélien Chalotに感謝します。近々、よりレシピのような表現に言い換える予定です。 |
SeBackup |
脅威 | 組み込みコマンド | robocopy /b で機密ファイルを読み取る |
- %WINDIR%\MEMORY.DMPを読み取ることができる場合はさらに興味深いかもしれません |
SeCreateToken |
Admin | サードパーティツール | NtCreateToken を使用して、ローカル管理者権限を含む任意のトークンを作成します。 |
|
SeDebug |
Admin | PowerShell | lsass.exe のトークンを複製します。 |
スクリプトはFuzzySecurityで見つけることができます。 |
SeLoadDriver |
Admin | サードパーティツール | 1. |
1. |
SeRestore |
Admin | PowerShell | 1. SeRestore特権が存在する状態でPowerShell/ISEを起動します。 |
一部のAVソフトウェアによって攻撃が検出される可能性があります。 代替手法は、同じ特権を使用して「Program Files」に格納されたサービスバイナリを置き換えることに依存しています |
SeTakeOwnership |
Admin | 組み込みコマンド | 1. |
一部のAVソフトウェアによって攻撃が検出される可能性があります。 代替手法は、同じ特権を使用して「Program Files」に格納されたサービスバイナリを置き換えることに依存しています。 |
SeTcb |
Admin | サードパーティツール | トークンを操作してローカル管理者権限を含める。SeImpersonateが必要な場合があります。 検証が必要です。 |
参考
- Windowsトークンを定義するこの表を参照してください:https://github.com/gtworek/Priv2Admin
- トークンを使用した特権昇格についてのこの論文を参照してください。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- サイバーセキュリティ企業で働いていますか? HackTricksで会社を宣伝したいですか?または、PEASSの最新バージョンやHackTricksのPDFをダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
- The PEASS Family、私たちの独占的なNFTコレクションをご覧ください。
- 公式PEASS&HackTricksグッズを手に入れましょう。
- 💬 DiscordグループまたはTelegramグループに参加するか、Twitter 🐦@carlospolopmをフォローしてください。
- ハッキングのトリックを共有するには、hacktricksリポジトリとhacktricks-cloudリポジトリにPRを提出してください。