Adversaries may modify access tokens to operate under a different user or system security context to perform actions and bypass access controls. Windows uses access tokens to determine the ownership of a running process. A user can manipulate access tokens to make a running process appear as though it is the child of a different process or belongs to someone other than the user that started the process. When this occurs, the process also takes on the security context associated with the new token.
An adversary can use built-in Windows API functions to copy access tokens from existing processes; this is known as token stealing. These token can then be applied to an existing process (i.e. Token Impersonation/Theft) or used to spawn a new process (i.e. Create Process with Token). An adversary must already be in a privileged user context (i.e. administrator) to steal a token. However, adversaries commonly use token stealing to elevate their security context from the administrator level to the SYSTEM level. An adversary can then use a token to authenticate to a remote system as the account for that token if the account has appropriate permissions on the remote system.(Citation: Pentestlab Token Manipulation)
Any standard user can use the runas command, and the Windows API functions, to create impersonation tokens; it does not require access to an administrator account. There are also other mechanisms, such as Active Directory fields, that can be used to modify access tokens.
MITRE ATT&CKにおいて、T1134は「Access Token Manipulation(アクセストークンの操作)」として定義されている、Windows環境における「特権昇格(Privilege Escalation)」および「防御回避(Defense Evasion)」の非常に重要なテクニックです。
Windowsの認証メカニズムである「アクセストークン(ユーザーの権限や所有グループ情報を保持したデータ構造)」を複製・偽装・生成・横取りすることで、自身のプロセスに他のユーザー(SYSTEM権限やドメイン管理者権限など)のアクセス権利を付与・無効化する手法を指します。
現在は、攻撃の具体的なアプローチに応じて以下のサブテクニック(.001〜.005)に細分化されています。
この手法で攻撃者は、「パスワードをクラックしたり再度再認証を行ったりすることなく、他者(上位権限者)の権限をそのまま横取りして実行すること」を実現します。
ローカル最高権限(SYSTEM)への昇格:
ローカル管理者(Administrator)権限を獲得した状態から、OSの最高権限である NT AUTHORITY\SYSTEM のトークンを奪うことで、完全なシステム制御権を手に入れます。
ドメイン管理者権限の奪取(Impersonation):
管理者がリモートデスクトップ(RDP)やPowerShell(PSRemoting)等で該当端末にログインした際に残されたトークンを横取り(窃盗)し、ドメイン全体の管理者として別端末へアクセスします。
セキュリティ製品の追跡・検知の撹乱:
親プロセスID(PPID)を偽装することで、「どのプロセスが何を実行したか」という親子関係を偽り、EDRやSOCアナリストの調査ラインを混乱させます。
Windowsでは、プロセスが起動する際に「主トークン(Primary Token)」が割り当てられ、スレッド単位で動作する際に「なりすましトークン(Impersonation Token)」が使用されます。攻撃者はWindows APIを直接呼び出してこれを操作します。
初期侵入とローカル権限確保:
マクロや脆弱性などを経由して端末に侵入し、一般ユーザー権限(またはローカル管理者権限)を確保します。
権限昇格に必要な特権(Privilege)の確認/有効化:
攻撃者は SeDebugPrivilege(他プロセスのメモリを参照・操作できる特権)や SeImpersonatePrivilege / SeAssignPrimaryTokenPrivilege を有効化します。
他プロセスのトークン取得(T1134の発動):
上位権限(例: lsass.exe や winlogon.exe)で動作しているプロセスのハンドルを取得し、Windows APIの OpenProcessToken や DuplicateTokenEx を呼び出して、ターゲットプロセスのアクセストークンをメモリ上で複製(コピー)します。
トークンの割り当て・プロセス起動:
複製した高権限トークンを使い、ImpersonateLoggedOnUser を実行するか、CreateProcessWithTokenW / CreateProcessAsUserW を呼び出して、SYSTEM権限や別ユーザー権限で新しい悪意あるプロセス(cmd.exe や Cobalt Strike Beacon 等)を起動します。
上位権限での目的達成:
再認証(パスワード入力)を経ることなく、SYSTEM権限またはドメイン管理者権限のコンテキストで任意の操作を行います。
アクセストークンの操作はWindowsのOS標準機能(API)の呼び出しによって行われるため、特権の厳格管理とAPI呼び出しの挙動監視が中心となります。
強力な特権(Privileges)の付与制限(最重要):
グループポリシー(GPO)の「ユーザー権利の割り当て」において、一般ユーザーやサービスアカウントに対して SeImpersonatePrivilege(認証後のクライアントのなりすまし)や SeDebugPrivilege(プログラムのデバッグ)を付与しないよう厳しく制限します。
EDRによる敏感なWindows API呼び出しのフック・監視:
OpenProcessToken、DuplicateTokenEx、ImpersonateLoggedOnUser、CreateProcessWithTokenW などのAPIが、cmd.exe や powershell.exe、不審なプロセスから頻繁に呼び出される挙動を監視・検出(フック)します。
Privileged Access Management(PAM)とLSASSの保護:
Windowsの LSA Protection(RunAsPPL) や Credential Guard を有効化し、lsass.exe などの機密プロセスへのメモリ直接アクセス(SeDebugPrivilege によるハンドル取得)を強力に防御します。
「パスワード不要」の権限横取り:
クレデンシャル(パスワードハッシュやチケット)を解読・抽出する必要がなく、メモリ上に存在する「認証済みの権利(トークン)」をそのままコピーして利用する点が強力かつ危険です。
Potato攻撃系(Juicy Potato, Sweet Potato等)の核:
Windowsのサービスアカウント権限からSYSTEM権限へ昇格する有名な概念実証(PoC)ツール群(いわゆる Potato 系ツール)は、ほぼ例外なく本テクニック(SeImpersonatePrivilege を悪用したトークン操作)に依存しています。
CWE-270: Incorrect Authorization(不適切な認可)
プロセスが自身に割り当てられた権限のスコープを超えて、上位権限を持つ別コンテキストのアクセス権利(トークン)を誤って取得・昇格できてしまう認可設計の不備。
CWE-269: Improper Privilege Management(不適切な特権管理)
サービスアカウントや低特権ユーザーに対して、トークンのなりすましを可能にする強力な特権(SeImpersonatePrivilege 等)があらかじめ過剰に付与されている問題。
本手口はWindows APIの本来の仕様・機能を悪用することが多いですが、トークンの境界をバイパスして権限昇格を可能にする脆弱性も存在します。
CVE-2020-1066 / CVE-2021-31956(Windows 権限昇格の脆弱性):
WindowsのカーネルやEPIC / サービスにおけるメモリ破損脆弱性。攻撃者はカーネルメモリ構造を書き換えて、自身のプロセスのアクセストークン(Token Structure)を書き換え、直接SYSTEM権限(0x3e7 LUID)を付与する特権昇格攻撃に悪用されました。
CVE-2022-26923(Active Directory 権限昇格の脆弱性):
コンピューターアカウントの dNSHostName 属性の処理不備を突く脆弱性。本手法のサブテクニックである SID-History Injection やトークン偽装と組み合わせることで、ドメインの一般ユーザーから一気にドメイン管理者権限を獲得する攻撃フローで利用されました。
実務上のアドバイス:
SOCやEDRの監視において、「サービスアカウント(LOCAL SERVICE や NETWORK SERVICE)として動作していたプロセス(例: IISやSQL Server)が、突如 NT AUTHORITY\SYSTEM 権限で cmd.exe や powershell.exe を子プロセスとして生成した」というログを検出した場合、ほぼ間違いなく Potato 系のツールによる T1134(アクセストークン操作)を用いた権限昇格攻撃が行われています。
該当プロセスのメモリダンプを取得して隔離するとともに、サービスアカウントの特権割り当て(特に SeImpersonatePrivilege)を速やかに見直すことが推奨されます。