Windows stores local service configuration information in the Registry under HKLM\SYSTEM\CurrentControlSet\Services. The information stored under a service's Registry keys can be manipulated to modify a service's execution parameters through tools such as the service controller, sc.exe, PowerShell, or Reg. Access to Registry keys is controlled through Access Control Lists and permissions. (Citation: MSDN Registry Key Security)
If the permissions for users and groups are not properly set and allow access to the Registry keys for a service, then adversaries can change the service binPath/ImagePath to point to a different executable under their control. When the service starts or is restarted, then the adversary-controlled program will execute, allowing the adversary to gain persistence and/or privilege escalation to the account context the service is set to execute under (local/domain account, SYSTEM, LocalService, or NetworkService).
Adversaries may also alter Registry keys associated with service failure parameters (such as FailureCommand) that may be executed in an elevated context anytime the service fails or is intentionally corrupted.(Citation: TrustedSignal Service Failure)(Citation: Twitter Service Recovery Nov 2017)
T1058は、セキュリティ設定が甘く(一般ユーザーでも変更可能になっており)、Windowsサービスの情報を管理する「レジストリキー」を直接書き換えることで、「永続化(Persistence)」や「特権昇格(Privilege Escalation)」を狙うものです。
この手法で攻撃者は、「本来なら管理者しか変更できないはずのシステムサービスを、一般ユーザー権限のまま乗っ取ること」を実現します。
特権昇格:
攻撃者が現在持っているのが低い権限(一般ユーザー)であっても、設定が不適切なサービス(SYSTEM権限で動くものなど)のレジストリを書き換えることで、次回サービス起動時に自動的に最高権限(SYSTEM権限)を奪取できます。
永続化:
システム起動時に自動実行されるサービスの呼び出し先をマルウェアに変更することで、OSが立ち上がるたびに自身のコードを自動実行させる環境を作ります。
この手法の最大の特徴は、「管理者権限がなくても、設定ミスを突いて管理者(SYSTEM)以上の権限へ這い上がれる」点にあります。
脆弱なレジストリの探索:
攻撃者は、サービスの設定が保存されている以下のレジストリキーの中から、一般ユーザー(Authenticated Users 等)に「書き込み権限」が与えられてしまっているものを探します。
HKLM\SYSTEM\CurrentControlSet\Services\<サービス名>レジストリの書き換え:
対象のサービス(例: SYSTEM権限で自動起動するサードパーティ製アプリのサービス)を見つけたら、その中にある実行ファイルのパス(ImagePath 値)を、マルウェアのパスに書き換えます。
トリガーの待機:
システムの再起動、またはサービスの手動起動(一般ユーザーでも再起動可能なサービスの場合)を待ちます。
最高権限での実行:
Windowsは書き換えられたレジストリに従ってサービスを起動します。この結果、マルウェアが SYSTEM権限 でバックグラウンド実行されます。
「レジストリのアクセス権管理」が最も直接的な防御策です。
レジストリのアクセス制御リスト(ACL)の厳格化:
HKLM\SYSTEM\CurrentControlSet\Services\ 配下のレジストリキーに対して、一般ユーザーや不要なグループに「フルコントロール」や「書き込み(Set Value)」権限が与えられていないか監査し、適切に制限します。
Sysmon等のログ監視:
低い権限(Medium インテグリティレベル)のプロセスが、サービスのレジストリ値(特に ImagePath、ServiceDLL、FailureCommand)を変更しようとする挙動を検知します。
特権昇格チェックツールの実行:
PowerUp (PowerShellスクリプト) や WinPEAS などのツールを定期的に実行し、自社環境のサービスレジストリに権限の設定不備(Weakness)がないか事前に棚卸しします。
設定ミスへの依存:
OS自体のバグではなく、ソフトウェアのインストール時に開発元がレジストリのアクセス権設定を甘くしてしまったという「設定ミス(脆弱性)」に依存します。
ファイル自体の改ざんは不要:
サービスの実行ファイル(.exe)そのものを置き換える権限がなくても、レジストリの「パスの文字」を書き換えるだけでよいため、ファイルの整合性チェック(FIM)をかいくぐりやすい性質があります。
CWE-276: Incorrect Default Permissions:
ソフトウェアのデフォルトの権限設定が不適切(甘すぎる)であるために発生する問題。
CWE-732: Incorrect Permission Assignment for Critical Resource:
重要なリソース(この場合はシステムサービスを管理するレジストリ)に対するアクセス権の割り当てミス。
サードパーティ製のアプリケーション(セキュリティソフト、VPNクライアント、各種管理ツールなど)がWindowsに独自サービスを追加する際、この不備を作り込んでしまい、特権昇格のCVEとして報告されるケースが後を絶ちません。
CVE-2019-15745:
Realtekの特定のオーディオサービスにおいて、レジストリキーのアクセス権が適切に制限されていなかったため、ローカルの一般ユーザーがSYSTEM権限へ昇格可能だった脆弱性。
PowerUp / Cobalt Strike:
侵入テストや実際の攻撃において、環境内の設定ミスを自動探索してこのT1058の攻撃(レジストリの書き換えと特権昇格)をワンクリックで実行するモジュールが含まれています。
エンドポイントセキュリティの観点では、「一般ユーザー(非管理者)が Services 以下のレジストリを触る」行為自体が極めて異常です。EDRやSIEMで、管理者権限を持たない一般ユーザープロセスのレジストリ変更ログを監視することが、この攻撃を未然に防ぐ最も確実な方法となります。