Windowsの「TrustedInstaller」アカウントとは?その特権を奪取する方法を徹底解説
- 2024-12-31
Windowsの「TrustedInstaller」アカウントとは?その特権を奪取する方法を徹底解説
Windowsを使用していると、システムファイルの削除や変更ができない場合に「TrustedInstaller」というアカウント名に遭遇したことがあるかもしれません。 このアカウントは、Windowsシステムのインストールとメンテナンスを担当する強力な特権を持つアカウントで、通常の管理者権限ではアクセスや操作が制限されています。 本記事では、この「TrustedInstaller」アカウントの正体と、その特権をどのようにして取得し、システムファイルへのアクセスを可能にするかについて、詳細に解説します。
なぜ「TrustedInstaller」は強力な権限を持つのか?
Windowsシステムの安定性とセキュリティを維持するため、重要なシステムファイルやレジストリキーは厳重に保護されています。 「TrustedInstaller」アカウントはこの保護機構の中核を担っており、以下の理由で高い権限を与えられています。
- システムファイルの完全制御: Windowsのインストールファイル、更新ファイル、システム設定ファイルなど、重要なシステムリソースの完全な読み取り、書き込み、削除権限を有します。
- 管理者権限の超越: 通常の管理者アカウント、それも
whoami /groups
で確認できるローカル管理者グループに属するアカウントでさえ、「TrustedInstaller」によってアクセスが拒否される場合があります。 - セキュリティ上の考慮: 意図しない変更によるシステムの破損を防ぎ、マルウェアからの攻撃を抑制するために、アクセス制限が設けられています。
しかし、この強力な権限は、システム管理者やセキュリティ研究者にとって、時に障害となる場合があります。 例えば、不要なシステムコンポーネントを削除したい場合でも、「TrustedInstaller」の許可を得ることができないと、削除操作は失敗します。
「TrustedInstaller」へのアクセスに関するRedditのスレッドとJames Forshawのブログ
「TrustedInstaller」の権限を取得する方法を探しているユーザーは多く、インターネット上では様々な議論が交わされています。 Redditなどでは、「TrustedInstaller」になりきる方法に関するスレッドを見つけることができます。 しかし、これらのスレッドには、誤った情報や危険な操作が含まれている可能性があるため、注意が必要です。
一方で、Google Project ZeroのJames Forshaw氏が2017年に公開したブログ記事は、この問題に対する深い洞察を提供しています。 このブログ記事は、Windows Vista以降のシステムにおける「TrustedInstaller」の動作メカニズムを詳しく説明し、その特権を制御する方法について具体的な技術的な解説を提供しています。 本記事では、Forshaw氏のブログ記事を基に、その内容を分かりやすく解説します。
「TrustedInstaller」の正体:NTサービスとSID
Forshaw氏のブログ記事によると、「TrustedInstaller」は、単なるユーザーアカウントやグループではなく、NTサービスとして動作しています。 NTサービスとは、Windowsオペレーティングシステムのコア機能の一部であり、C:\Windows\System32\TrustedInstaller.exe
によって実行されます。 このサービスには、独自の**セキュリティ識別子(SID)**が割り当てられており、このSIDがアクセス制御リスト(ACL)によってシステムリソースへのアクセスを制御しています。
このSIDは、サービス名の大文字バージョンSHA1ハッシュによって動的に生成されます。 Powershellを用いて、このSIDを計算することも可能です。 ただし、本記事では詳細なPowershellスクリプトは省略し、James Forshaw氏のブログ記事を参照することを推奨します。
# 具体的なPowershellスクリプトは省略。
# James Forshaw氏のブログ記事を参照ください。
「TrustedInstaller」権限の一時的な取得:サービスの構成変更
「TrustedInstaller」の権限を一時的に取得する、一つの方法として、サービスの構成を変更する方法があります。 sc.exe
コマンド(サービス制御コマンド)を使用して、「TrustedInstaller」サービスの実行ファイルパスを任意のコマンド(例えば、cmd.exe /c
)に変更することで、そのコマンドを実行する権限を一時的に取得できます。
sc.exe config TrustedInstaller binPath= "cmd.exe /c del C:\Windows\System32\notepad.exe"
sc.exe start TrustedInstaller
上記の例では、notepad.exe
を削除するコマンドを実行します。 ただし、この方法は、システムの安定性を損なう可能性があるため、極めて危険な操作です。 実行する際は、十分に注意し、元に戻せるようにバックアップを取っておく必要があります。
さらに、この方法ではGUIアプリケーション(Notepadなど)を実行することはできません。コマンドプロンプトなどのコマンドラインツールしか実行できません。
Powershellを用いたより高度な制御
より高度な制御を行うには、PowershellとNT Object Managerモジュールを使用する方法があります。 このモジュールは、Google Project Zeroによって提供されており、Windowsオブジェクトの操作を簡素化します。 このモジュールをインストール後、以下のようなコマンドを実行することで、「TrustedInstaller」のトークンを取得し、新たなプロセスとして実行できます。
# NT Object Managerモジュールをインストール後、以下を実行
Import-Module .\NTObjectManager.psm1
$p = Get-NtProcess -Name TrustedInstaller
$th = Get-NtThread -Process $p -First
$current = Get-NtThread -Process (Get-NtProcess)
$current | Set-NtThread -ImpersonationToken $th.ImpersonationToken
この手法によって、現在のPowershellセッションで「TrustedInstaller」の権限を得ることができます。 これにより、システムファイルの削除や変更が自由にできるようになります。
「TrustedInstaller」権限の永続的な取得は困難
「TrustedInstaller」の権限を永続的に取得することは、非常に困難です。 sc.exe
による方法では、システムの再起動や更新によって元の状態に戻ってしまいます。 PowershellとNT Object Managerモジュールによる方法も、システムの再起動によって効果が失われます。
さらに、WindowsはProtected Process Light (PPL)と呼ばれる保護されたプロセスを持っています。「TrustedInstaller」はPPLではないものの、その権限を不正に利用することは、システムのセキュリティに大きなリスクをもたらします。
セキュリティ研究と倫理的な考慮
本記事で紹介した方法は、セキュリティ研究やペンテストなどの限定された状況でのみ使用されるべきです。 これらの手法を不正な目的で使用することは、違法行為であり、厳しく罰せられます。 常に倫理的な観点から、許可を得た上でこれらの技術を扱うようにしてください。
まとめ:強力な権限を持つ「TrustedInstaller」と安全な利用
「TrustedInstaller」アカウントはWindowsシステムの保護に不可欠な役割を担っていますが、その強力な権限を正しく理解し、安全に扱うことが重要です。 本記事では、その権限を一時的に取得する方法を紹介しましたが、これらの方法は非常に危険であり、システムの安定性やセキュリティを損なう可能性があります。 これらの手法を扱う際には、十分な知識と経験、そして倫理的な配慮が求められます。 決して不正な目的で使用しないよう注意してください。
本記事は、あくまで技術的な解説を目的としています。 システムの操作を行う際には、自己責任で行ってください。 不適切な操作による損害について、筆者は一切の責任を負いません。