Regsvcs and Regasm are Windows command-line utilities that are used to register .NET Component Object Model (COM) assemblies. Both are digitally signed by Microsoft. (Citation: MSDN Regsvcs) (Citation: MSDN Regasm)
Adversaries can use Regsvcs and Regasm to proxy execution of code through a trusted Windows utility. Both utilities may be used to bypass process whitelisting through use of attributes within the binary to specify code that should be run before registration or unregistration: [ComRegisterFunction] or [ComUnregisterFunction] respectively. The code with the registration and unregistration attributes will be executed even if the process is run under insufficient privileges and fails to execute. (Citation: LOLBAS Regsvcs)(Citation: LOLBAS Regasm)
MITRE ATT&CKにおいて、T1121は「Regsvcs/Regasm」として定義されている、Windowsの.NET環境における代表的な「防御回避(Defense Evasion)」および「実行(Execution)」のテクニックです。
.NET Frameworkに標準で搭載されているアセンブリ登録用ユーティリティ Regsvcs.exe(.NET Services Installation Tool)および Regasm.exe(.NET Assembly Registration Tool)を悪用し、「セキュリティ製品やアプリケーション実行制限を回避しながら、悪意ある.NETコード(DLL)を正規プロセスのコンテキスト内で身代わり実行させる」手法です。
この手法で攻撃者は、「マイクロソフトのデジタル署名がついた正規プロセスになりすますことで、セキュリティ監視を潜り抜けて不正なコードを実行すること」を実現します。
アプリケーションホワイトリスト(AppLocker/WDAC)の回避:
組織のセキュリティポリシーにより未承認のプログラム(.exe)の実行が禁止されていても、OSのシステムフォルダに存在する Regsvcs.exe や Regasm.exe は「信頼された安全なバイナリ」として実行が許可されています。攻撃者はこれらをプロキシ(プロキシ実行)として利用することで制限を突破します。
EDR/アンチウイルスの振る舞い検知の隠蔽:
プロセス一覧やセキュリティログ上では「Microsoftの正規ツールが正常動作している」ように見えます。悪意ある処理(C2サーバーへの通信など)が正規ツールのプロセス空間(メモリ)内で発生するため、ファイルベースのスキャンや単純なプロセス監視を無効化できます。
Regsvcs.exe や Regasm.exe は本来、.NETで作成されたコード(アセンブリ)をWindowsのCOMコンポーネントとして登録・公開するためのツールです。
これらのツールは、読み込んだ.NETアセンブリ内にある特定属性(ComRegisterFunction など)が付与されたメソッドを自動的に呼び出して実行する仕様を持っています。攻撃者はこの仕様を悪用します。
初期侵入と足がかり:
マクロや脆弱性攻撃などを介して、ターゲットのWindows端末でコマンドが実行できる状態を確保します。
悪意ある.NETアセンブリの準備:
C#などで作成した.NET DLLファイル内に、COM登録時に自動実行される属性([ComRegisterFunction] など)を設定し、その中にバックドア(Cobalt Strike Beaconなど)の起動コードを書き込みます。
Regsvcs / Regasm の悪用実行(トリガー):
ターゲット端末上で、以下のコマンドラインを実行して悪意あるDLLを呼び出します。
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Regsvcs.exe C:\Windows\Temp\payload.dll
または
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Regasm.exe /U C:\Windows\Temp\payload.dll
コードの身代わり実行:
ツールがDLLを読み込むと同時に、埋め込まれていた登録関数が呼び出され、Regsvcs.exe / Regasm.exe のプロセス空間内で攻撃コードが直接メモリ展開されます。
C2通信の確立(目的達成):
システム側からは正規のツールが動作しているようにしか見えない状態で、裏ではC2サーバーとの通信が確立され、端末が掌握されます。
信頼された.NETツールの不自然な起動スタイルや通信を監視・制御することが有効です。
Regsvcs / Regasm による外部ネットワーク通信のブロック(最重要):
通常のシステム運用で、Regsvcs.exe や Regasm.exe が外部のインターネット(特に未知のIPアドレス)へHTTP/HTTPS接続を行うことはほぼありません。EDRやファイアウォールで「両プロセスからの外部ネットワーク通信」を検知・遮断します。
WDAC(Windows Defender Application Control)での実行抑制:
Microsoftが提供する「WDAC推奨ブロック規則」を適用し、管理者以外の一般ユーザー権限において Regsvcs.exe および Regasm.exe の起動自体をポリシーで制限します。
不審な親プロセス・パスの監視:
Regsvcs.exe や Regasm.exe が、cmd.exe、powershell.exe、またはOfficeアプリケーション(winword.exe等)から起動されていないか、あるいは呼び出されているDLLが \Temp\ や \AppData\ などの書き込み権限のゆるいフォルダに存在しないかを監視・アラート化します。
Lolbins(環境寄生バイナリ)の代表格:
マルウェア対策をかいくぐるための手法として、Windowsに標準搭載されている正規ツールを悪用する「Lolbins (Living off the Land Binaries)」の中で、InstallUtil(旧T1118)やRegsvr32(旧T1117)と並び極めて知名度が高い手口です。
ComRegisterFunction 属性の悪用:
アセンブリ登録時に実行される特殊な属性フックを利用するため、通常のメイン処理(Main関数など)を記述しなくてもコードをキックできる点が大きな特徴です。
CWE-88: Improper Neutralization of Argument Delimiters in a Command (Argument Injection)
コマンドライン引数経由で外部の任意のDLLを渡すことで、高度な実行権限や信頼を持つプロセスの内部実行フローを攻撃者が外部から制御できてしまう点。
CWE-284: Improper Access Control(不適切なアクセス制御)
システム側が正規バイナリに対するアクセス制御・実行チェックを行う際、呼び出す対象のコンテンツ(外部DLL)に対する厳格な署名検証を行わずに実行を許してしまう構造上の問題。
APT37(北朝鮮系とされるハッカー集団)の事例:
官公庁や特定業界を狙ったサイバーイスピオナージ(スパイ活動)において、初期侵入後に検知を回避しながら追加モジュールを読み込ませる手段として、Regasm.exe や Regsvcs.exe を使用したプロキシ実行を悪用した事例が観測されています。
FinFisher / FinSpy(監視用ソフトウェア)の事例:
高度な潜伏機能を持つスパイウェアのコンポーネント展開において、セキュリティソフトのホワイトリスト機能をバイパスしてメモリ上に常駐させるためのローダーとして本手法が利用されました。
実務上のアドバイス:
インシデント調査で Regsvcs.exe や Regasm.exe のプロセスが検出された場合、単にプロセス名を見るだけでなく、「コマンドライン引数で渡されているDLLファイルのパス」と「そのプロセスが外部通信を行っているか」の2点を即座に確認してください。
ユーザー環境の Temp フォルダ等に置かれた不審なDLLが指定され、かつネットワーク通信が発生している場合は、旧 T1121(現 T1218.009)によるプロキシ実行が行われている典型的な兆候です。
この攻撃手法を利用する脅威アクターは登録されていません。