・悪意あるWindowsサービスの実行
情報システム開発契約のセキュリティ仕様作成のためのガイドライン
MITRE ATT&CKに基づく詳細設定対策
戦術:悪意あるプログラムの実行 (悪意あるWindowsサービスの実行) †
- MITRE ATT&CK T1569:002System Services Service Execution
戦術:永続性、特権昇格 (不正なWindowsサービスの追加) †
概説 †
MITRE ATT&CKでは、悪意あるプログラムの実行と永続性、特権昇格を異なる戦術として定義し解説していますが、防御対策等は同じといえるため、本稿では二つの戦術を同一として扱います。 |
Windowsサービスとは、ユーザーインターフェイスを持たずにバックグラウンドで常駐して動作するプログラムで、最も高い権限で機能を実行できます。Windowsが起動した際に自動起動するように設定できるため、初期侵入後、悪意あるプログラム(マルウェア)をWindows サービスとしてインストールに成功すれば、最上位の権限での実行が可能となります。
新しいWindowsサービスをインストールするか、既存のサービスを改ざんすることでこの手法は実現されますが、Windowsサービスの操作には管理者権限が必要です。
緩和の方針 †
一般業務端末を操作するユーザーアカウントを標準ユーザーとして設定し、ローカル管理者であるビルトインAdministratorsグループのメンバーから除外し、Windowsサービスのインストールを失敗させることで緩和します。ドメインコントローラー、メンバーサーバーは検出に努めます。 CWE-428(引用符で囲まれていないプログラムパス)の脆弱性を排除します。
運用やNetworkが変更された場合の影響の有無 †
標準ユーザーアカウントを、ビルトインAdministratorsグループのメンバーにした場合、リスクが非常に高まります。
優先すべき措置 †
以下の設定を検討します。
- 一般業務は標準ユーザーアカウントで実行し、ビルトインAdministratorsグループのメンバーから除外します。
- 管理者業務を行う端末、サーバーでは [Windows ログ]-[システムログ]-[Event ID 7045] を監査し、不審なWindowsサービスのインストールを検知します。
- CWE-428(引用符で囲まれていないプログラムパス)の脆弱性を排除します。
ユーザー運用管理責任 †
リスクの受容 †
- アプリケーションのインストール権限をユーザーに委ねた場合、この手法のリスクが高くなります。対象端末の文書化と監査による検知を強化し緩和します。
業務 特権 リスク受容のための条件例 プログラム開発担当者 Local Administrator スクリプトへの署名と実行ポリシーの設定。ドメインコントローラー、メンバーサーバー、担当者端末のWindowsサービスインストールのログ監査。侵入検知システムの導入。 Help Desk 担当者 Domain/Local Administrator システム管理者 Enterprise/Domain/Local Administrator 部門管理者(OUの委任) OUのパスワードリセット、セキュリティグループ管理、ドメイン参加等 VBAを利用する業務担当者 標準ユーザー スクリプトへの署名と実行ポリシーの設定。担当者端末のスクリプト実行ログの監査。Local Administrators に含めない。 役職者、研究者、秘書 標準ユーザー Local Administrators に含めない。 上記以外の一般業務担当者 標準ユーザー Local Administrators に含めない。
啓発・教育 †
- すべての端末利用者
- 組織のアプリケーションのインストール規程(評価済みアプリケーション以外をインストールしない等)の理解と遵守を求めます。
- ローカル Administrtors メンバー
- アプリケーションをインストールできる権限を持つユーザーに対して、"初期侵入" から "悪意あるプログラムの実行" までの攻撃ベクターで攻撃を阻止しないと、情報窃取、送信、漏洩等のリスクが高まることを理解させます。
- アプリケーションのインストールや保守以外での管理者権限でのインターネット接続、メール受信などのリスクを正しく認識させます。
管理規程 †
運用規程に以下を追加することを検討します。
- ローカル管理者権限を業務ユーザーに付与した場合の文書化
- 監査による不正なWindowsサービスのインストールの検出。
情報システム設計開発部門・運用部門(ベンダー代行を含む) †
ポリシー †
- 該当しません。
モニタリング †
- 管理対象の端末、サーバー、ドメインコントローラーで以下のイベントログを監査します。
[イベントビューアー]-[Windows ログ]-[システム]
ソース: Service Control Manager
イベントID: 7045 サービスがシステムにインストールされました。 - 不審なサービスのインストールが疑われた際は、次のドキュメントを参照し、必要に応じて専門家の支援を得ます。
JPCERT/CC インシデント調査のための攻撃ツール等の実行痕跡調査に関する報告書 - Windowsサービスのインストールをイベントログで検出した際は、以下のコマンドを実行し、CWE-428の脆弱性を検知します。
- 引用符で囲まれていないWindowsサービスの検知(管理者権限のコマンドプロンプトで実行する)
wmic service get name,pathname,displayname,startmode | findstr /i auto | findstr /i /v "C:\Windows\\" | findstr /i /v """
なお、C:\Windows 以下のWindowsサービスはデフォルトで引用符で囲まれていないため除外しています。
ネットワークデザイン、アクセスコントロール、フィルタリング †
以下の設定を検討します。
- 標準ユーザー
ビルトインAdministratorsグループのメンバーに標準ユーザーアカウントを含めないようにします。 - Windowsサービスのインストールの制限
Windowsサービスはログインしているユーザーのセキュリティコンテキストとは異なるセキュリティコンテキストで実行される特徴を有します。そこで、ドメインの管理者でないユーザーにアプリケーションをインストールできる権限を与えた場合を考えてみます。
このような場合、アプリケーションがLocal Systemで動作するサービスをインストールできてしまうと、本来、特権を有しないユーザーが特権を有するアプリケーションを使って、レジストリを変更するなどして永続性の確保や、権限昇格が可能となります。
Windowsサービスのセキュリティコンテキストは以下の表の通りです。システムの特性に合わせて、アプリケーションのインストール権限を付与できるユーザーを限定し、限定されたユーザーの端末のサービスを監査する事を検討します。
セキュリティコンテキスト | 与えられる権限 |
User | システムは、サービスのインストール時に有効なユーザー名とパスワードの指定を要求し、ネットワーク上の 1 人のユーザーによって指定されたアカウントのコンテキストで実行します。 |
LocalService | ローカル コンピューター上で非特権ユーザーとして機能し、リモート サーバーに匿名の資格情報を提示するアカウントのコンテキストで実行します。 |
LocalSystem | 広範なローカル特権を提供し、リモート サーバーにコンピューターの資格情報を提示するアカウントのコンテキストで実行します。 |
NetworkService | ローカル コンピューター上で非特権ユーザーとして機能し、リモート サーバーにコンピューターの資格情報を提示するアカウントのコンテキストで実行します。 |
仮想端末運用 †
これは将来のためのプレースフォルダーです。
ゲートウェイ及びエンドポイント対策 †
Endpoint Detection and Response もしくは、侵入検知システムの導入を検討してください。
受託開発ベンダー管理責任 †
セキュアコーディング †
最小限のセキュリティコンテキストでWindowsサービスを設計し、文書化して、ユーザーと共有します。
Windowsサービスを作成する場合は、CWE-428(引用符で囲まれていないプログラムパス)の脆弱性の排除を行います。サービスはイベントログに、起動、エラー、終了等のログを出力するようにします。
開発環境管理 †
ユーザー運用管理責任、情報システム設計開発部門・運用部門責任に準じます。 例外はすべて文書化し、適切な監査を実施します。
サプライチェーン正常性維持" †
ユーザー運用管理責任、情報システム設計開発部門・運用部門責任に準じます。 例外はすべて文書化し、適切な監査を実施します。