正規機能を悪用した持続化(パーシステンス)の技術的仕組みと対策
はじめに
デジタル詐欺やサイバー攻撃は、侵入の手口だけでなく、一度システムへのアクセスに成功した後、その状態を維持するための手法も巧妙化しています。特に近年注目されているのが、OSや正規のソフトウェアが持つ機能を悪用して、自身の存在を持続させる「持続化(Persistence)」と呼ばれる技術です。
これは単なるマルウェアの常駐とは異なり、正規のメカニズムを利用するため、従来のセキュリティ対策では見逃されやすいという特徴があります。デジタル技術に精通し、セキュリティ基礎知識をお持ちの皆様にとっても、こうした手口とその技術的背景を理解することは、自分自身や周囲を守る上で不可欠となっています。
本記事では、正規機能を悪用した持続化の手法について、その技術的仕組みを掘り下げて解説し、具体的な対策についてもご紹介いたします。
正規機能を悪用した持続化の主な手口
攻撃者がシステムへのアクセスを持続させるために悪用する正規機能は多岐にわたります。代表的なものをいくつかご紹介します。
1. タスクスケジューラへの登録
Windowsのタスクスケジューラは、特定のタイミングやイベントをトリガーとしてプログラムを自動実行するための正規機能です。攻撃者はこの機能を悪用し、マルウェアやスクリプトを定期的に、あるいはユーザーのログイン時などに実行するように設定します。
- 技術的仕組み:
schtasks.exe
コマンドやPowerShell、COMインターフェースなどを使用して、攻撃対象のプログラムを起動する新しいタスクを作成します。タスク名を目立たないものにしたり、システム関連のタスクに見せかけたりすることで、発見を困難にします。トリガーとしてよく使われるのは、「ユーザーログオン時」「システム起動時」「特定時間」などです。
2. レジストリのRunキー/スタートアップフォルダの悪用
Windowsレジストリの Run
キーや、ユーザーまたはシステム全体のスタートアップフォルダ (Startup
フォルダ) にプログラムのパスを登録することで、OS起動時やユーザーログオン時に自動的に実行させることができます。
- 技術的仕組み:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
やHKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
などのレジストリキーに、実行したいプログラムのパスを値として書き込みます。スタートアップフォルダに実行ファイルやショートカットを配置する手口も依然として使われます。これらは非常に古典的な手法ですが、巧妙に隠蔽されると発見が難しい場合があります。
3. サービスへの登録
Windowsサービスは、システム起動時にバックグラウンドで動作するプログラムを実行するための機能です。正規のシステムプロセスとして動作するため、高い権限を持ち、ユーザーインターフェースを持たないことが一般的です。
- 技術的仕組み:
sc.exe
コマンドやAPIを使用して、悪意のあるプログラムをサービスとして登録します。サービスの実行ファイルパスを指定し、スタートアップの種類を「自動」に設定することで、システム起動と同時にマルウェアなどを実行させることが可能になります。正規サービス名に似せた名前をつけたり、既存サービスを置き換えたりする手口もあります。
4. WMI (Windows Management Instrumentation) の悪用
WMIはWindowsシステムの管理情報にアクセスするための強力なフレームワークです。攻撃者はWMIのイベントサブスクリプション機能を利用して、特定のシステムイベント(例: プロセス作成、ファイル変更)が発生した際にスクリプトやプログラムを自動実行させることができます。
- 技術的仕組み: WMI永続イベントサブスクリプションは、以下の3つのコンポーネントで構成されます。
- Event Filter: 監視するイベントを定義(例:
SELECT * FROM __InstanceCreationEvent WITHIN 5 WHERE TargetInstance isa 'Win32_Process'
でプロセス作成イベントを監視)。 - Event Consumer: イベント発生時に実行するアクションを定義(例: コマンド実行)。
- Binding: FilterとConsumerを結びつける。 攻撃者はこれらの要素をWMIリポジトリに登録することで、検出されにくい方法でコードを実行させることが可能です。
- Event Filter: 監視するイベントを定義(例:
5. グループポリシーの悪用 (主にActive Directory環境)
Active Directory環境下では、グループポリシーオブジェクト (GPO) を利用して、コンピュータの起動時やユーザーのログオン時にスクリプトを実行したり、ソフトウェアをインストールしたりすることが可能です。攻撃者がドメイン管理者権限などを奪取した場合、この機能を悪用してネットワーク内の多数のコンピュータにマルウェアを展開・持続させることがあります。
- 技術的仕組み: 攻撃者はGPOを作成または変更し、コンピュータ構成またはユーザー構成の「スクリプト(スタートアップ/シャットダウン、ログオン/ログオフ)」や「ソフトウェアの展開」などの設定を利用して、悪意のあるプログラムを実行させます。これは組織全体に影響を与えるため、非常に危険な手法です。
なぜこれらの手口が有効なのか
これらの正規機能を悪用した手口が有効である主な理由は以下の通りです。
- 「正規」であること: 利用している機能そのものはOSや正規ソフトウェアの一部です。そのため、ファイルベースの検出を行うウイルス対策ソフトでは見逃されやすく、システムの正常な動作と区別がつきにくい場合があります。
- 管理者の盲点: これらの機能はシステムの管理や自動化のために日常的に使用されるため、悪用されていることに気づきにくい場合があります。特にタスクスケジューラやWMIなどは、設定が複雑で詳細なログを確認しないと異常を検知しづらい傾向があります。
- 高い権限での実行: サービスの登録やWMI、グループポリシーの悪用は、多くの場合システム権限や管理者権限で行われます。これにより、セキュリティ製品の制御を回避したり、より深いシステム設定を変更したりすることが可能になります。
- ファイルレスマルウェアとの組み合わせ: プログラム本体をディスクに保存せず、スクリプト(PowerShell, Pythonなど)やインメモリで実行されるマルウェアと組み合わせることで、ファイルベースの検出をさらに回避できます。タスクスケジューラやWMIから直接スクリプトを実行する手法はこの典型です。
具体的な対策と予防策
正規機能を悪用した持続化の手口に対抗するためには、従来の対策に加え、よりシステム内部の挙動に注目した多層的なアプローチが必要です。
1. システム内部の自動実行ポイントを定期的にチェックする
- Sysinternals Suiteの活用: Microsoftが提供するSysinternals Suiteに含まれる
Autoruns
ツールは、システム起動時に自動実行されるほぼ全ての場所(レジストリ、スタートアップフォルダ、タスクスケジューラ、サービス、WMIなど)を一覧表示できます。これにより、見慣れないエントリや不審な設定を効率的に発見できます。定期的なチェックを推奨します。 - 手動での確認:
- タスクスケジューラ (
taskschd.msc
): 不審なタスクがないか、実行されているコマンドが正規のものか確認します。 - サービス (
services.msc
): 見慣れないサービスや、名前が類似しているが説明が不自然なサービスがないか確認します。 - レジストリエディタ (
regedit
):HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
やHKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
などのRunキーに不審なエントリがないか確認します。
- タスクスケジューラ (
2. EDR (Endpoint Detection and Response) の導入・活用
EDRソリューションは、エンドポイント(PCやサーバー)でのプロセス実行、ファイルアクセス、レジストリ変更、ネットワーク通信などの詳細なアクティビティを監視・記録し、不審な挙動や攻撃パターンを検知する機能を提供します。正規機能の悪用は、その「挙動」に異常が現れることが多いため、EDRによる振る舞い検知が有効です。
- WMIイベントサブスクリプションの作成、サービス登録、タスクスケジューラへの登録といった操作自体を攻撃の兆候として検知・通知するように設定します。
3. Windowsイベントログの監視強化
セキュリティイベントログやシステムログには、タスクスケジューラやサービスの作成・変更に関する情報が記録されます。
- Event IDの例:
- タスクスケジューラ関連: Event ID 4698 (タスクの作成)、4702 (タスクの更新) など (セキュリティログ)
- サービス関連: Event ID 7036 (サービスが開始または停止しました), 7045 (サービスがサービス コントローラーにインストールされました) など (システムログ)
- これらのイベントログをSIEM (Security Information and Event Management) などで集中的に収集・分析することで、異常な変更を早期に発見できる可能性があります。
4. システム設定の制限と強化
- ユーザーアカウント制御 (UAC) の有効化: 不正なプログラムがシステム変更(レジストリ書き込み、サービス登録など)を行う際にユーザーの許可を求めるように設定します。
- グループポリシーやMDM (Mobile Device Management) による制限: 組織環境では、不要なサービスの作成を禁止したり、特定のレジストリキーへの書き込みを制限したりするポリシーを適用することを検討します。
- PowerShellのログ記録と制約付き言語モード: PowerShellは攻撃によく利用されるため、スクリプトブロックログ記録やトランスクリプトログ記録を有効にし、実行を制限する制約付き言語モードの使用を検討します。
5. アプリケーションコントロール/ホワイトリスティング
許可された正規のアプリケーション以外は実行できないように制限することで、不正なプログラムがこれらの持続化メカニズムを利用することを根本的に防ぎます。これは強力な対策ですが、運用の手間がかかる場合があります。
6. 最新のセキュリティ情報の収集と共有
新しい攻撃手法は日々生まれています。セキュリティベンダーや公的機関(例: JPCERT/CC, IPA)、信頼できるセキュリティ研究者の発信する最新情報を継続的に収集し、組織内や関係者と共有することが重要です。
まとめ
OSや正規ソフトウェアの機能を悪用した持続化(パーシステンス)の手口は、攻撃者がシステム内に潜伏し、長期的な活動を行うための基盤となります。これらの手口は、従来の静的なマルウェア検出では見逃されやすく、システムの管理機能自体を悪用するため発見が困難です。
こうした脅威に対抗するためには、単に不審なファイルを検出するだけでなく、システム内部の動的な挙動や設定変更を監視・分析する能力が不可欠です。本記事でご紹介したタスクスケジューラ、レジストリRunキー、サービス、WMI、グループポリシーなどの悪用手法を理解し、Autoruns
のようなツールによる定期的なチェック、EDRソリューションの活用、Windowsイベントログの監視強化、そしてシステム設定の制限といった多層的な対策を講じることが極めて重要です。
最新の脅威動向に常に注意を払い、これらの技術的な対策を継続的に実施することで、デジタル詐欺やサイバー攻撃からの防御力を高めることができるでしょう。