The Component Object Model (COM) is a system within Windows to enable interaction between software components through the operating system. (Citation: Microsoft Component Object Model) Adversaries can use this system to insert malicious code that can be executed in place of legitimate software through hijacking the COM references and relationships as a means for persistence. Hijacking a COM object requires a change in the Windows Registry to replace a reference to a legitimate system component which may cause that component to not work when executed. When that system component is executed through normal system operation the adversary's code will be executed instead. (Citation: GDATA COM Hijacking) An adversary is likely to hijack objects that are used frequently enough to maintain a consistent level of persistence, but are unlikely to break noticeable functionality within the system as to avoid system instability that could lead to detection.
MITRE ATT&CKにおいて、T1122は「Component Object Model Sign-In Script」として定義されている、Windows環境における「永続化(Persistence)」および「防御回避(Defense Evasion)」のテクニックです。
Windowsの環境変数やコンポーネント管理システムである COM(Component Object Model)のレジストリ設定を悪用し、ユーザーがログインした際や特定のイベントが発生した際に、悪意のあるスクリプトやDLLを自動的に身代わり実行させる手法です。
この手法で攻撃者は、「ユーザーに気づかれることなく、ログイン時に管理者権限を必要としない方法で持続的な自動実行(永続化)を確立すること」を実現します。
管理者権限(Admin)を必要としない永続化:
通常のスタートアップ登録(HKLM 領域への書き込みなど)には管理者権限が必要です。しかし、T1122ではユーザー固有のレジストリ領域(HKCU)を書き換えるため、一般ユーザー権限のままシステムの再起動・ログインを跨いで生存するバックドアを仕込むことができます。
通常のスタートアップ監視の回避:
セキュリティツールやシステム管理者がよく監視する「スタートアップフォルダ」や「Runレジストリキー」を一切使用しません。Windows内部の標準的なCOMコンポーネントの呼び出し構造を歪めるため、表面上の調査では発見されにくいという特徴があります。
Windowsでは、コンポーネントが呼び出される際に、まずユーザー固有のレジストリ領域(HKCU\Software\Classes\CLSID)を確認し、そこに定義がなければシステム全体の領域(HKLM\Software\Classes\CLSID)を参照するという優先順位(COM検索順序)があります。攻撃者はこの仕様を悪用します。
初期侵入:
フィッシングメールなどで標的のWindows端末に一般ユーザー権限で侵入します。
COMオブジェクトの特定とレジストリ改ざん:
ログイン時やシステムイベント時に自動的に呼び出される正常なCOMオブジェクトの識別子(CLSID)を特定します。
ユーザー領域(HKCU)内にそのCLSIDキーを勝手に作成し、実行されるコードの参照先(InprocServer32 や ScriptletURL など)を、自前の悪意あるスクリプト(.sct ファイルなど)やDLLのパスに書き換えます。
ユーザーのログイン(トリガー):
ユーザーがPCにログイン、または特定の標準アプリケーションを起動します。
横取り実行(COMハイジャック):
Windowsは正規のCOMコンポーネントをロードしようとしますが、優先される HKCU 領域のレジストリを参照した結果、攻撃者が仕込んだスクリプト/DLLを読み込みます。
バックドアの自動復活(目的達成):
ユーザーに違和感を与えることなく、裏でC2サーバーとの通信が自動的に再開され、永続的なアクセス権が維持されます。
ユーザー領域における不審なレジストリ書き込みの監視が最も効果的な防御策となります。
HKCU\Software\Classes\CLSID への書き込み監視(最重要):
一般的に、通常のユーザーアプリケーションが HKCU\Software\Classes\CLSID 配下に新しく InprocServer32 などのキーを作成することは極めて稀です。EDRやSIEMを用いて、このレジストリ領域への書き込み・変更イベント(WindowsイベントID 4657など)を監視し、アラート化します。
AppLocker / WDAC によるスクリプト・DLLの実行制限:
COMコンポーネント経由で読み込まれるDLLやスクリプトレット(.sct)であっても、信頼されたデジタル署名がないファイルや、\AppData\・\Temp\ などの書き込み権限が緩いフォルダからのロードを強制的に禁止します。
定期的なレジストリ整合性スキャン:
HKCU 内のCLSID設定と HKLM 内の本来の設定との相違(オーバーライド状況)を自動検出するセキュリティスクリプトを定期実行します。
「権限昇格なし」で成立する持続性:
攻撃者にとって「管理者権限をとる」ことは高いハードルですが、本手口は一般ユーザー権限(Low/Medium Integrity)のままで永続化を完成させられる点が非常に強力です。
COM Hijackingの派生型:
本手法は、現在MITRE ATT&CKで「COM Hijacking(T1546.015)」として分類されているテクニックの代表的な応用例です。
HKCU)の設定を、安全なシステム領域(HKLM)よりも優先して参照してしまうという構造上の検索順序の脆弱性。COMオブジェクトの読み込みロジックやレジストリ検索のバイパスに関連する脆弱性として、以下のようなCVEが存在します。
CVE-2017-0147(Windows COM の脆弱性):
WindowsのCOMコンポーネントが不適切にメモリを処理し、権限バイパスや不正なオブジェクト読み込みを許してしまう脆弱性。本手法のようなCOM改ざんと組み合わせて権限昇格や永続化に悪用されました。
CVE-2019-0859(Windows Shell の権限昇格の脆弱性):
Windows ShellがCOMオブジェクトを扱う際の処理不備に起因する脆弱性。攻撃者が作成した不正なCOMオブジェクトをシステムプロセスに読み込ませることで、最終的にSYSTEM権限で任意のコードを実行させることが可能でした。
実務上のアドバイス:
フォレンジック調査やEDRログの解析において、「マルウェアの永続化(スタートアップ)が発見できないが、再起動のたびに確実に再感染する」というケースに遭遇した場合は、必ず HKCU\Software\Classes\CLSID 配下を確認してください。
特定のCLSID配下に .dll や .sct(スクリプトレット)、あるいは不審な scrobj.dll への参照が残っている場合、本手法(旧T1122 / 現T1546.015)によるCOMハイジャックが行われている決定的な証拠となります。