.. | ||
abuse-seloaddriverprivilege.md | ||
README.md |
トークンの悪用
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- サイバーセキュリティ企業で働いていますか? HackTricksで会社を宣伝したいですか?または、最新バージョンのPEASSにアクセスしたいですか、またはHackTricksをPDFでダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
- The PEASS Familyを発見しましょう、独占的なNFTsのコレクション
- 公式PEASS&HackTricksのグッズを手に入れましょう
- 💬 Discordグループに参加するか、telegramグループに参加するか、Twitter 🐦@carlospolopmをフォローしてください。
- ハッキングトリックを共有するには、hacktricksリポジトリとhacktricks-cloudリポジトリにPRを提出してください。
トークン
Windowsアクセストークンが何かわからない場合は、続行する前にこのページを読んでください:
{% content-ref url="../access-tokens.md" %} access-tokens.md {% endcontent-ref %}
おそらく、すでに持っているトークンを悪用して特権を昇格させることができるかもしれません
SeImpersonatePrivilege
これは、任意のプロセスが任意のトークンをインパーソネーション(作成ではなく)できる特権であり、それにハンドルを取得できれば、そのトークンを取得できます。特権のあるトークンは、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
SeImpersonatePrivilegeと非常に似ており、特権を取得するために同じ方法を使用します。
その後、この特権を使用して、新しい/中断されたプロセスにプライマリトークンを割り当てることができます。特権のあるインパーソネーショントークンを使用してプライマリトークン(DuplicateTokenEx)を派生させることができます。
トークンを使用して、'CreateProcessAsUser'で新しいプロセスを作成したり、プロセスを中断してトークンを設定したりできます(一般的に、実行中のプロセスのプライマリトークンを変更することはできません)。
SeTcbPrivilege
このトークンを有効にしている場合、KERB_S4U_LOGONを使用して、他のユーザーのインパーソネーショントークンを取得し、資格情報を知らなくても任意のグループ(管理者)をトークンに追加し、トークンの整合性レベルを「medium」に設定し、このトークンを現在のスレッド(SetThreadToken)に割り当てることができます。
SeBackupPrivilege
この特権により、システムはこの特権により、任意のファイルにすべての読み取りアクセス制御を付与します(読み取り操作に制限されます)。これは、レジストリからローカル管理者アカウントのパスワードハッシュを読み取るために使用され、その後、ツール「psexec」または「wmicexec」をハッシュと共に使用できます(Pass-the-Hash技術)。ただし、この技術は、ローカル管理者アカウントが無効になっている場合や、リモートで接続するローカル管理者から管理権限を削除するポリシーがある場合に失敗します。
これを悪用することができます:
- 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に従う
- または、以下のBackup Operatorsで特権を昇格する方法について説明されている:
{% content-ref url="../../active-directory-methodology/privileged-groups-and-token-privileges.md" %} privileged-groups-and-token-privileges.md {% endcontent-ref %}
SeRestorePrivilege
この特権により、ファイルのアクセス制御リスト(ACL)に関係なく、システムファイルに対する書き込みアクセスが許可されます。これにより、サービスの変更、DLLハイジャック、およびImage File Execution Optionsを介したデバッガーの設定など、さまざまなテクニックを使用して昇格する可能性が開かれます。
SeCreateTokenPrivilege
SeCreateTokenPrivilegeは、ユーザーがトークンをインパーソネートできる能力を持っている場合に特に有用な強力な権限ですが、SeImpersonatePrivilegeがない場合でも有用です。この機能は、同じユーザーを表すトークンをインパーソネートし、その整合性レベルが現在のプロセスの整合性レベルを上回らない場合にのみ、SeCreateTokenPrivilegeを利用して特定の条件下でトークンをインパーソネートすることが可能です。
主なポイント:
- SeImpersonatePrivilegeなしでのインパーソネーション: 特定の条件下でSeCreateTokenPrivilegeを利用してEoPを行うことが可能です。
- トークンインパーソネーションの条件: インパーソネーションが成功するためには、対象のトークンが同じユーザーに属し、インパーソネーションを試みるプロセスの整合性レベル以下である必要があります。
- インパーソネーショントークンの作成と変更: ユーザーはインパーソネーショントークンを作成し、特権グループのSID(セキュリティ識別子)を追加して強化することができます。
SeLoadDriverPrivilege
この特権を使用すると、ImagePath
とType
の特定の値を持つレジストリエントリを作成して、デバイスドライバをロードおよびアンロードできます。HKLM
(HKEY_LOCAL_MACHINE)への直接書き込みアクセスが制限されているため、代わりにHKCU
(HKEY_CURRENT_USER)を使用する必要があります。ただし、ドライバの構成のためにHKCU
をカーネルで認識可能にするには、特定のパスをたどる必要があります。
このパスは、\Registry\User\<RID>\System\CurrentControlSet\Services\DriverName
であり、ここで<RID>
は現在のユーザーのRelative Identifierを表します。HKCU
内で、このパス全体を作成し、2つの値を設定する必要があります:
- 実行されるバイナリのパスである
ImagePath
SERVICE_KERNEL_DRIVER
(0x00000001
)の値を持つType
手順:
- 書き込みアクセスが制限されているため、
HKLM
の代わりにHKCU
にアクセスします。 HKCU
内に、<RID>
が現在のユーザーのRelative Identifierを表すパス\Registry\User\<RID>\System\CurrentControlSet\Services\DriverName
を作成します。ImagePath
を実行パスに設定します。Type
をSERVICE_KERNEL_DRIVER
(0x00000001
)に設定します。
# Example Python code to set the registry values
import winreg as reg
# Define the path and values
path = r'Software\YourPath\System\CurrentControlSet\Services\DriverName' # Adjust 'YourPath' as needed
key = reg.OpenKey(reg.HKEY_CURRENT_USER, path, 0, reg.KEY_WRITE)
reg.SetValueEx(key, "ImagePath", 0, reg.REG_SZ, "path_to_binary")
reg.SetValueEx(key, "Type", 0, reg.REG_DWORD, 0x00000001)
reg.CloseKey(key)
https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges#seloaddriverprivilegeでこの特権を悪用する別の方法があります。
SeTakeOwnershipPrivilege
これは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
この特権は、他のプロセスをデバッグすることを許可し、メモリ内の読み書きを含むさまざまなメモリインジェクション戦略を使用できます。これにより、ほとんどのアンチウイルスおよびホスト侵入防止ソリューションを回避できます。
メモリのダンプ
SysInternals Suiteから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
無効になっているトークンは有効にできます。実際には、Enabled と Disabled トークンを悪用することができます。
すべてのトークンを有効にする
無効になっているトークンがある場合、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
- トークンを使用した昇格についてのこの論文をご覧ください。