Cisco Talos が解説するマルウェアによる Windows COM の悪用

セキュリティニュース

投稿日時: 更新日時:

Cisco Talos が解説するマルウェアによる Windows COM の悪用

Cisco Talosのセキュリティリサーチャー Vanja Svajcer は2026年6月25日、Windowsの基盤的なプロセス間通信技術「コンポーネントオブジェクトモデル(COM)」がマルウェアにどのように悪用されているかを詳述したリサーチブログを公開しました。

本稿はKuala Lumpurで開催されたAVAR 2025カンファレンスおよびInnsbruckで開催されたCARO 2026ワークショップでの発表をもとにしており、Qakbot・Gh0stRAT・Attor・WarmCookieといった実在のマルウェアファミリーを用いた分析が含まれています。COMはVBScript・PowerShell・Python・C++など言語を問わず同一のWindowsコンポーネントにアクセスできるため、攻撃者にとって静的解析を困難にしながら正規機能を転用できる有力な手段となっています。

サマリー

  • COMはWindowsの正規IPC基盤であり、マルウェアは永続化・偵察・C2通信・ダウンロードなど複数の目的でCOMを悪用する
  • COM経由の関数呼び出しはvtable(仮想関数テーブル)経由の間接呼び出しになるため、静的解析の難易度が上がり、子プロセス生成がないためEDRの一般的な検知ルールをすり抜けやすい
  • 攻撃者が特に多用するCOMインターフェースはタスクスケジューラ(永続化)・BITS(C2通信・ファイル転送)・WMI(偵察)・Shell.Application(シェル操作)
  • Qakbot(WMI)・Gh0stRAT(タスクスケジューラ)・Attor(BITS+WMI)・WarmCookie(タスクスケジューラ1.0)の実例が詳述されている
  • COMベースの攻撃はGUID(CLSID/IID)のバイトパターンを用いたYARAルールやDispatchLoggerなどのトレースツールで検出できる
項目 内容
著者 Vanja Svajcer(Cisco Talos)
公開日 2026年6月25日
ソース Cisco Talos Intelligence Blog
発表ベース AVAR 2025(クアラルンプール)・CARO 2026(インスブルック)での講演
対象技術 Windows COM / DCOM(コンポーネントオブジェクトモデル)
主要な悪用目的 永続化・偵察・C2通信・ダウンロード・横展開・EDR回避
取り上げたマルウェア Qakbot・Gh0stRAT/SimpleRemoter・Attor・WarmCookie
検知アプローチ YARAルール(CLSID/IIDバイトパターン)・OleView.NET・DispatchLogger・IDA COM Helper
ATT&CK関連 T1021.003(Remote Services: Distributed Component Object Model)

COM とはなにか——Windows の「接着剤」として機能する基盤技術

COM(Component Object Model)は、Windowsにおいて異なる言語・プロセス間で動作するコンポーネントが互いに通信・再利用するための共通バイナリインターフェース規格です。

VBScript・PowerShell・Python・C/C++のいずれからでも同一のCOMオブジェクトを操作できるため、Windowsの各サービスや機能に言語を問わずアクセスする手段として広く使われています。OLEやActiveXもCOMを基盤としており、Windowsにとって欠かせない構成要素です。

COMオブジェクトはクラスとインターフェースという2つの概念を中心に構成されます。クラスはCLSID(クラス識別子)と呼ばれる128ビットのGUIDで識別され、インターフェースはIID(インターフェース識別子)と呼ばれる同じくGUID形式の識別子を持ちます。

これらの情報はWindowsレジストリの HKEY_CLASSES_ROOT\CLSID および HKEY_CLASSES_ROOT\Interface に登録されており、一般的なWindowsインストールではCLSIDの登録数は数千件にのぼります。

プログラムは通常、CoCreateInstance などのAPIにCLSIDとIIDを渡してオブジェクトを生成し、返却されたインターフェースポインタを介してメソッドを呼び出します。重要なのはこのメソッド呼び出しがvtable(仮想関数テーブル)経由の間接呼び出しになる点で、コンパイル済みのバイナリでは call qword ptr [rax+38h] のような解読しにくい命令として現れます。CLSIDとIIDが特定できてvtableの構造を再現できて初めて、これが ITaskService.Connect のような意味のある呼び出しだとわかります。

DCOM(Distributed COM)はこのCOMモデルをネットワーク越しに拡張したもので、クライアントがプロキシを介してリモートマシン上のCOMオブジェクトを呼び出す仕組みです。MITRE ATT&CKではT1021.003(Remote Services: Distributed Component Object Model)として分類されており、横展開の手法として文書化されています。

攻撃者が COM を好む理由—EDR 回避と解析難読化の二重効果

マルウェアがCOMを悪用する主な動機は2つあります。

第一は静的解析の難易度を上げられることです。

COMを使わず直接関数を呼び出せば、逆アセンブラでその関数名がシンボルとして見えます。しかしCOMを使うと呼び出しはGUID→vtableオフセットの間接参照になるため、CLSIDとIIDが特定できなければ解析者には単なる数値の羅列にしか見えません。マルウェアの中にはスタック上でGUID構造体を動的に組み立てることで解析をさらに困難にしているものもあります。

第二はEDRの子プロセス検知を回避できることです。

たとえばタスクスケジューラでスケジュールタスクを登録する方法として、schtasks.exe をコマンドラインから実行する方法と、タスクスケジューラCOMインターフェースをプログラムから直接呼び出す方法の2つがあります。前者ではschtasks.exeの起動というプロセス生成イベントがEDRのテレメトリに残りますが、後者ではCOMの呼び出しはマルウェアプロセスの内部で完結するため、子プロセス生成イベントとして検知されません。

マルウェアが多用する主な COM インターフェースと攻撃への転用パターン

Talosnの調査で特に多くのマルウェアファミリーに共通して使われていると指摘されているCOMインターフェースを整理します。

タスクスケジューラ(ITaskService / ITaskScheduler)は永続化に最もよく使われるCOMインターフェースです。ITaskServiceはTask Scheduler 2.0のインターフェースで、CLSID {0F87369F-A4E5-4CFC-BD3E-73E6154572DD} 、IID {2FABA4C7-4DA9-4013-9697-20CC3FD40F85} で識別されます。Connect メソッドでサービスに接続し、NewTask でタスクを作成、RegisterTaskDefinition で登録するまでの一連の操作がすべてマルウェアプロセス内のCOM呼び出しとして完結します。

BITS(IBackgroundCopyJob)はWindowsのバックグラウンドインテリジェント転送サービスで、ファイルの信頼性の高い転送機能をCOM経由で提供します。正規アプリケーションやWindowsアップデートが使う仕組みと同じ経路でファイル転送を行えるため、C2通信やペイロードダウンロード、データ持ち出しにEDRの監視をすり抜けながら利用できます。

WMI(IWbemLocator / IWbemClassObject)はシステム情報の収集や管理に使われるCOM経由のインターフェースです。マルウェアはWMIを使ってインストール済みのセキュリティ製品を列挙したり、システム情報を収集したりします。WMIへの接続には CoInitializeSecurity でセキュリティコンテキストを設定した上で CoCreateInstance でWbemLocatorオブジェクトを生成し、IWbemLocator::ConnectServer でWMIに接続するパターンが典型的です。

Shell.Application(CLSID Shell.Application)とWScript.Shellは、ファイル操作・レジストリ操作・コマンド実行・ショートカット作成などシェル周りの機能を提供するCOMオブジェクトです。スクリプト言語だけでなくネイティブバイナリからも呼び出し可能で、C2からのコマンド実行やアーティファクトの配置などに使われます。

HTTPによるC2通信にはMSXML2.XMLHTTPやWinHttp.WinHttpRequest.5.1がCOM経由でよく使われます。正規のWindows機能を流用するため、カスタムネットワークライブラリを使うよりも検知が困難になる場合があります。

実マルウェアファミリーによる COM 悪用事例

Talosnが挙げる4つのマルウェアファミリーの具体的な手口を確認します。

Qakbot(別名Qbot・Pinkslipbot)は少なくとも2007年から活動が確認されているモジュラー型のバンキングトロイの木馬で、後にランサムウェア展開のローダーとしても広く使われました。

Talosが分析したQakbotのDLLサンプルでは、CoInitializeSecurity を呼び出してプロセス全体のCOMセキュリティを設定した後、WMIロケータクラス(CLSID_WbemLocatorIID_IWbemLocator)を CoCreateInstance で生成し、IWbemLocatorVtbl.ConnectServer でWMIに接続するパターンが確認されています。GUIDはバイナリ形式でコードに埋め込まれており、解析者がIDA Proなどで型情報を復元するまで間接呼び出しとしか見えません。

Gh0stRAT/SimpleRemoterは長年にわたってソースコードが公開されているRAT(Remote Access Trojan)で、多くのフォークが存在します。

COM悪用の観点でのポイントは、タスクスケジューラCOMインターフェースを使ったスケジュールタスク登録です。schtasks.exe を直接実行すれば子プロセスのイベントとしてEDRに記録されますが、COM経由でタスクを作成するとプロセス生成イベントが発生しないため、プロセス系テレメトリに依存した検知ルールには引っかかりません。

Attorは2013年から活動が確認されているWindowsベースのサイバースパイプラットフォームで、画面キャプチャ・音声録音・キーロギング・クリップボード収集・ファイル収集・Tor経由のC2通信といった機能を持つモジュール型インプラントです。TalosはAttorのプラグインにおいてBITS(IBackgroundCopyJob)を使ったC2通信を確認しています。同プラグインはさらに IWbemClassObject を使ったエンドポイントセキュリティ製品の列挙と、VBScript・PowerShellの起動もCOM経由で行っています。

WarmCookie(BadSpace)は2024年4月にマルスパムとマルバタイジングで拡散が確認されたマルウェアファミリーです。永続化ルーティンでCOMを利用しており、Task Scheduler 1.0の古いクラス(CLSID_CTaskSchedulerIID_ITaskScheduler)を CoCreateInstance で生成した後、ワークアイテムの作成・フラグ設定・トリガー生成という一連の処理を行います。2.0ではなく1.0の古いインターフェースを使うことで、シグネチャによる検知をさらに回避しようとしている可能性が考えられます。

情報システム部門・SOC チームが取るべき実務的なアプローチ

COMベースの攻撃手法が広く使われている実態を踏まえると、情報システム部門やSOCチームには以下のような視点が必要です。

まず、子プロセス生成に依存した検知ルールの限界を認識することが重要です。EDRの検知ルールに「schtasks.exeが起動されたら検知する」という形のものが多くある場合、COM経由でタスクを作成するGh0stRATやWarmCookieは見逃される可能性があります。タスクスケジューラの登録履歴(タスクの作成・変更イベント)をSIEMで監視したり、EDRのAPIフッキングやコールスタック解析でCOM呼び出し自体を捕捉する設定を確認することが有効です。

BITSの異常なジョブ監視も効果的です。Windows 10/11では bitsadmin /list /verbose コマンドでBITSキューに残っているジョブを確認できます。正規のWindows更新以外のBITSジョブが存在する場合は精査が必要です。EDRがBITSのジョブ作成を記録しているかどうかも確認しておくべきポイントです。

YARAルールによる静的ハンティングでは、CLSIDやIIDのバイトパターンを活用します。Talosnが示したように、GUIDのバイナリ表現はリトルエンディアン形式になっているため、文字列表現をそのままYARAルールに書いても一致しません。例えばタスクスケジューラのCLSID {0F87369F-A4E5-4CFC-BD3E-73E6154572DD} のバイトパターンは 9F 36 87 0F E5 A4 FC 4C BD 3E 73 E6 15 45 72 DD です。このような変換を踏まえたYARAルールでインシデント調査時や脅威ハンティング時に活用できます。ただしタスクスケジューラを使う正規ソフトウェアも多いため、単体では誤検知が多く、ファイルタイプ・インポートテーブル・提出日時・既知のマルウェアファミリー名などの文脈情報と組み合わせて絞り込む必要があります。

Qakbotの事例で示されたように、WMIへの接続を行うマルウェアは CoInitializeSecurity + CoCreateInstance(IWbemLocatorクラス)というパターンを持ちます。EDRがAPIコールレベルのテレメトリを収集している場合、この組み合わせをトリガーにしたアラートルールを検討する価値があります。

動的解析環境でCOM挙動を可視化するツールとして、Talosの David Zimmerが開発したDispatchLoggerが挙げられています。プロセスにDLLを注入することでCOM関連の呼び出しをプロキシしてログに記録するツールで、IDispatch 経由のディスパッチ呼び出しも含めて解析できます。マルウェア解析サンドボックスの整備や、疑わしいサンプルの動的解析フローにCOMトレースを組み込むことで、COMベースの悪意ある動作を可視化できるようになります。


出典