Access Token Manipulation
アクセストークンの操作

Windowsはアクセストークンを使用して、実行中のプロセスの所有権を判断します。ユーザーはアクセストークンを操作して、実行中のプロセスを、プロセスを開始したユーザー以外のユーザーに属しているように見せることができます。これが発生すると、プロセスは新しいトークンに関連付けられたセキュリティコンテキストも引き継ぎます。たとえば、Microsoftはセキュリティのベストプラクティスとしてアクセストークンの使用を推奨しています。管理者は標準ユーザーとしてログインする必要がありますが、組み込みのアクセストークン操作コマンドrunasを使用することで管理者権限でツールを実行することができます。[1]

攻撃者は、アクセストークンを使用して、異なるユーザーまたはシステムのセキュリティコンテキストで動作し、アクションを実行して検出を回避する可能性があります。攻撃者は、組み込みのWindows API関数を使用して、既存のプロセスからアクセストークンをコピーできます。これはトークンスティーリングとして知られています。トークンを盗むには、攻撃者がすでに特権ユーザーコンテキスト(管理者)である必要があります。ただし、攻撃者は通常、トークンスティーリングを使用して、セキュリティコンテキストを管理者レベルからシステムレベルに引き上げます。アカウントにリモートシステムに対する適切な権限がある場合、リモートシステムに対してそのトークンのアカウントとして認証するために、攻撃者はトークンを使用します。[2]

アクセストークンは、次の3つの方法で攻撃者に利用されます。:[3]

トークンのなりすまし/盗難 - 攻撃者は、DuplicateToken(Ex)を使用して既存のトークンを複製した新しいアクセストークンを作成します。次に、そのトークンをImpersonateLoggedOnUserと共に使用して、呼び出し側のスレッドがログオンしたユーザーのセキュリティコンテキストを偽装できるようにするか、SetThreadTokenを使用して偽装されたトークンをスレッドに割り当てることができます。これは、ターゲットユーザーがシステムにネットワーク以外のログオンセッションを持っている場合に役立ちます。

トークンを使用したプロセス作成 - 攻撃者は、DuplicateToken(Ex)で新しいアクセストークンを作成し、偽装されたユーザーのセキュリティコンテキストで実行される新しいプロセスを作成するために、CreateProcessWithTokenWします。これは、別のユーザーのセキュリティコンテキストで新しいプロセスを作成する場合に役立ちます。

トークンの作成と偽装 - 攻撃者はユーザー名とパスワードを持っていますが、ユーザーはシステムにログオンしていません。攻撃者は、LogonUser関数を使用して、ユーザーのログオンセッションを作成できます。関数は新しいセッションのアクセストークンのコピーを返し、攻撃者はSetThreadTokenを使用してトークンをスレッドに割り当てることができます。

すべての標準ユーザーは、runasコマンドとWindows API関数を使用して、偽装トークンを作成できます。管理者アカウントへのアクセスは必要ありません。

MetasploitのMeterpreterペイロードは、任意のトークン操作を可能にし、トークンの偽装を使用して特権を昇格させます。[4]Cobalt Strikeのビーコンペイロードは、任意のトークンの偽装を許可し、トークンを作成することもできます。[5]

ID: T1134
Tactic: Defense Evasion, Privilege Escalation
Platform: Windows
Permissions Required: User, Administrator
Effective Permissions: SYSTEM
Data Sources: API monitoring, Access tokens, Process monitoring, Process command-line parameters
CAPEC ID: CAPEC-633
Contributors: Tom Ueltschi @c_APT_ure; Travis Smith, Tripwire; Robby Winchester, @robwinchester3; Jared Atkinson, @jaredcatkinson
Version: 1.0
Created: 14 December 2017
Last Modified: 14 October 2019

Procedure Examples

Name Description
APT28

APT28 は、CVE-2015-1701を使用してSYSTEMトークンにアクセスし、それを権限昇格の一部として現在のプロセスにコピーします。[24]

Azorult

Azorult は、ローカルシステム権限で新しいプロセスを開始するために、WTSQueryUserTokenおよびCreateProcessAsUserを呼び出すことができます。[19]

Bankshot

Bankshot は、WTSQueryUserTokenを使用してユーザートークンを取得し、ログオンしたユーザーを偽装してプロセスを作成します。[17]

Cobalt Strike

Cobalt Strike は、既存のプロセスからアクセストークンを盗み、既知の資格情報からトークンを作成できます。[9]

Duqu

Duquは、特定のシステム権限を持つトークンの実行中のシステムプロセスを検査します。 見つかった場合は、トークンをコピーし、後で使用できるように保存します。最終的には、保存したトークンがアタッチされた状態で新しいプロセスを開始します。また、トークンを盗んで管理者権限を取得することもできます。[14]

Empire

Empire は、アクセストークンを操作するためにPowerSploitInvoke-TokenManipulationと同じように、 Invoke-RunAs を使うことができます。[12]

FinFisher

FinFisher は、UACバイパスの一部としてNtFilterTokenを用いてトークン操作を行います。[15][16]

Hydraq

Hydraq は、リモートの攻撃者がトークンの権限を調整できるバックドアを作成します。[18]

Lazarus Group

Lazarus Group が使用するキーロガーKiloAlfaはそのユーザーのコンテキストで、CreateProcessAsUserAAPI呼び出しを使用して自身を実行するために、インタラクティブセッションからユーザートークンを取得します。[22][23]

PoshC2

PoshC2 は、 トークン操作のためにInvoke-RunAsInvoke-TokenManipulationのようなモジュールを含みます。[13]

PowerSploit

PowerSploitInvoke-TokenManipulation 抽出モジュールは、ユーザーのログオントークンの位置を特定したり、なりすましたりするために使用することができます。[10][11]

Pupy

Pupy は、SIDのリストを取得し、なりすますプロセストークンを選択するオプションを提供することができます。[8]

SslMM

SslMM には、プロセスの権限とトークンを操作する機能が含まれています。[20]

Turla

TurlaRPCバックドアは、コマンドを実行する前にプロセストークンを偽装または盗むことができます。 [25]

ZxShell

ZxShell には、別のユーザーまたはプロセスコンテキストとして新しいプロセスを作成するRunAsというコマンドがあります。[21]

Mitigations

Mitigation Description
Privileged Account Management
特権アカウントの管理

ユーザーとユーザーグループがトークンを作成できないように、アクセス許可を制限します。この設定は、ローカルシステムアカウントに対してのみ定義する必要があります。GPO(グループポリシーオブジェクト): コンピューター構成 > [Policies] > Windows Settings > Security Settings > Local Policies > User Rights Assignment: Create a token object. また、GPOを介してローカルサービスとネットワークサービスのみにプロセスレベルトークンを作成できるユーザーを定義します。: コンピューター構成 > [Policies] > Windows Settings > Security Settings > Local Policies > User Rights Assignment: Replace a process level token.[6][7]

User Account Management
ユーザアカウント管理

このテクニックを最大限に活用するには、攻撃者がローカルシステムで管理者レベルのアクセス権を持っている必要があります。ユーザーとアカウントを必要最小限の権限に制限するようにしてください。

Detection

攻撃者が標準のコマンドラインシェルを使用している場合、アナリストはコマンドラインアクティビティを監査することでトークンの操作を検出できます。具体的には、アナリストはrunasコマンドの使用を探す必要があります。 Windowsでは、詳細なコマンドラインログはデフォルトでは有効になっていません。

攻撃者がトークンに関するWindowsAPIを直接呼び出すペイロードを使用している場合、アナリストは、ユーザーネットワークアクティビティの慎重な分析、実行中のプロセスの調査、および他のエンドポイントとネットワークの動作との相関関係を通してのみ、トークンの操作を検出できます。

ペイロードがアクセストークンを操作するために利用できる多くのWindows API呼び出しがあります。 (例えば, LogonUser [27], DuplicateTokenEx[28], ImpersonateLoggedOnUser[29]). 詳細については、関連するWindows APIページを参照してください。

プロセスとスレッドトークン情報についてシステムにクエリを実行し、ユーザーが所有するプロセスがローカルのSYSTEMアカウントを偽装している、と言った不整合を探します。[3]

References

  1. Allievi, A.,Flori, E. (2018, March 01). FinFisher exposed: A researcher’s tale of defeating traps, tricks, and complex virtual machines. Retrieved July 9, 2018.
  2. Sherstobitoff, R. (2018, March 08). Hidden Cobra Targets Turkish Financial Sector With New Bankshot Implant. Retrieved May 18, 2018.
  3. Lelli, A. (2010, January 11). Trojan.Hydraq. Retrieved February 20, 2018.
  4. Yan, T., et al. (2018, November 21). New Wine in Old Bottle: New Azorult Variant Found in FindMyName Campaign using Fallout Exploit Kit. Retrieved November 29, 2018.
  5. Baumgartner, K., Golovkin, M.. (2015, May). The MsnMM Campaigns: The Earliest Naikon APT Campaigns. Retrieved April 10, 2019.
  6. Allievi, A., et al. (2014, October 28). Threat Spotlight: Group 72, Opening the ZxShell. Retrieved September 24, 2019.
  7. Novetta Threat Research Group. (2016, February 24). Operation Blockbuster: Unraveling the Long Thread of the Sony Attack. Retrieved February 25, 2016.
  8. Novetta Threat Research Group. (2016, February 24). Operation Blockbuster: Tools Report. Retrieved March 10, 2016.
  9. FireEye Labs. (2015, April 18). Operation RussianDoll: Adobe & Windows Zero-Day Exploits Likely Leveraged by Russia’s APT28 in Highly-Targeted Attack. Retrieved April 24, 2017.
  10. Faou, M. and Dumont R.. (2019, May 29). A dive into Turla PowerShell usage. Retrieved June 14, 2019.
  11. Mathers, B. (2017, March 7). Command line process auditing. Retrieved April 21, 2017.
  12. Microsoft TechNet. (n.d.). Retrieved April 25, 2017.
  13. Microsoft TechNet. (n.d.). Retrieved April 25, 2017.
  14. Microsoft TechNet. (n.d.). Retrieved April 25, 2017.