InstallUtil is a command-line utility that allows for installation and uninstallation of resources by executing specific installer components specified in .NET binaries. (Citation: MSDN InstallUtil) InstallUtil is located in the .NET directories on a Windows system: C:\Windows\Microsoft.NET\Framework\v and C:\Windows\Microsoft.NET\Framework64\v. InstallUtil.exe is digitally signed by Microsoft.
Adversaries may use InstallUtil to proxy execution of code through a trusted Windows utility. InstallUtil may also be used to bypass process whitelisting through use of attributes within the binary that execute the class decorated with the attribute [System.ComponentModel.RunInstaller(true)]. (Citation: LOLBAS Installutil)
T1118は「InstallUtil」として定義されていた、Windows環境における非常に強力な「防御回避(Defense Evasion)」および「実行(Execution)」のテクニックです。
.NET Frameworkに標準で付属しているインストーラーツール InstallUtil.exe を悪用し、「セキュリティソフトの監視やアプリケーションの実行制限をすり抜けながら、悪意ある.NET製バイナリ(DLLやEXE)をプロキシ(身代わり)実行させる」手法を指します。
この手法で攻撃者は、「信頼されたマイクロソフト製の正規ツールの中にマルウェアのコードを隠し、セキュリティ制御を完全にバイパスして実行すること」を実現します。
アプリケーションホワイトリスト(AppLocker等)の突破:
多くの企業では、出所のわからない野良プログラムの実行を制限する「AppLocker」や「WDAC」などのホワイトリスト制御を導入しています。しかし、Windowsのシステムディレクトリにある InstallUtil.exe は通常、「信頼された安全なプログラム」として無条件で実行が許可されています。T1118はこの信頼を悪用し、制限を無傷で突破します。
エンドポイント検知(EDR/AV)の隠蔽:
マルウェアのコード本体を InstallUtil.exe の内部プロセス(メモリ上)で展開させるため、セキュリティ製品のログには「正規のインストーラーが正常に動作した」としか記録されず、攻撃の検知を著しく困難にします。
InstallUtil.exe は本来、開発者が作成した.NETアプリケーション(特にWindowsサービスなど)をシステムにインストール・アンインストールするためのコマンドラインツールです。
このツールは、指定された.NETアセンブリ(DLLやEXE)の内部にある Installer クラスを探し、その中の Install メソッドや Uninstall メソッドを自動的に実行する仕様を持っています。攻撃者はこの仕様を悪用し、「アンインストール処理のなかに、マルウェアのメインコード(C2接続など)を埋め込む」というトリックを用います。
初期侵入と足がかりの確立:
攻撃者はマクロや脆弱性などを利用し、ターゲットのWindows端末でコマンドを実行できる権限を得ます。
悪意ある.NETアセンブリの準備:
攻撃者はC#などの言語を使用し、特殊な構造を持った.NET用のDLL(例: payload.dll)を作成します。このDLL内には「アンインストール(Uninstall)が指示されたら、裏でバックドア(Cobalt Strikeなど)をメモリ上で起動する」というコードが仕込まれています。
InstallUtilの悪用実行(トリガー):
ターゲットの端末で、以下の引数を組み合わせたコマンドを実行します。
コマンドの例:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe /logfile= /LogToConsole=false /u C:\Windows\Temp\payload.dll
/u:アンインストール(Uninstall)モードで実行することを明示します。
/logfile= および /LogToConsole=false:実行時のログ出力や画面への表示を一切抑制し、無音で処理を行うための隠蔽オプションです。コードの身代わり実行:
InstallUtil.exe は、指定された payload.dll のアンインストールロジックを読み込みます。この瞬間、InstallUtil.exe のプロセス内部で攻撃コードが実行されます。
バックドアの確立(目的達成):
システム側は「正規ツールがDLLの削除(アンインストール)処理を行った」と認識しますが、実際にはメモリ上でC2サーバーへの常時接続が確立され、端末が完全に支配されます。
「信頼された.NET管理ツール」が本来行うべきではない不審な挙動(通信や引数)を厳格にフィルタリングする必要があります。
InstallUtilによる外部ネットワーク通信の遮断(最重要):
通常のシステム運用において、InstallUtil.exe がインターネット(外部の不審なC2 IPなど)へ直接アウトバウンド通信を行うことは原則としてありません。EDRやスマートファイアウォールを用いて、「InstallUtil.exe プロセスによる外部ネットワークへの通信」を検知し、自動的にブロックするルールを定義します。
プロセスの起動引数(コマンドライン)の監視:
SIEMやEDRを用いて、InstallUtil.exe が実行された際の引数を監視します。特に、実行ログを隠蔽する /logfile= オプションや、アンインストールを意味する /u オプションが、一般ユーザーの権限や不審なディレクトリ(\Temp\ や \AppData\)のファイルに対して指定されている場合は、即座にアラートを発報します。
WDAC(Windows Defender Application Control)による強力な制御:
マイクロソフトが推奨する「推奨ブロック規則(Recommended Block Rules)」をWDACに適用します。これにより、InstallUtil.exe のような悪用リスクの極めて高い環境寄生バイナリ(Lolbins)について、管理者以外の一般ユーザーによる実行自体をあらかじめ一律で禁止・ロックすることが可能になります。
「アンインストール(/u)」を逆手に取る盲点:
防衛側の裏をかくため、あえて「インストール」ではなく「アンインストール」のフラグ(/u)を使用する点が非常に巧妙です。これにより、システムへの登録処理を行わずにコードだけを実行させることができ、調査時の痕跡(アーティファクト)を大幅に減らすことができます。
Lolbinsの代表格:
先述の Regsvr32(T1117)などと並び、.NET環境が標準搭載されている現代のWindowsにおいて、ホワイトリストをバイパスするための「最強の環境寄生ツール」としてハッカーの間で広く認知されています。
InstallUtil.exe の引数に任意のDLLを渡すことで、そのDLL内の特定のクラス・メソッド(Uninstallなど)をOSの高度な信頼を得た状態で自動実行させることができてしまう設計上の仕様・弱点。高度な持続的標的型攻撃(APT)から、ランサムウェアを送り込むサイバー犯罪グループまで、セキュリティ製品の「目」を盗むための決定打として広く使われています。
APT41(動機がスパイ活動および金銭目的の高度なハッカー集団)の事例:
アジアや欧米のハイテク企業、政府機関を狙うこのグループは、標的のネットワークに侵入した後、メインのマルウェア(Cobalt Strike Beaconなど)をストレートに実行するのではなく、この InstallUtil(旧T1118 / 現T1218.004) を使ってカモフラージュ実行しました。企業のAppLocker設定によって未知のプログラムが制限されている環境であっても、この手法を用いることでセキュリティソフトをすり抜け、メモリ上に無音でC2の通信モジュールを展開し、長期間のデータ窃取に成功しました。
FIN7(金融機関を狙うサイバー犯罪組織)の事例:
彼らが使用するマルウェアのローダー(次のステージのコードを読み込むためのプログラム)のバリエーションとして、.NETで書かれた不審なDLLを InstallUtil.exe /u 経由でキックする手法が観測されています。これにより、従来のファイルベースのウイルススキャンによる「水際での検知」を完全に無効化していました。
SOCのログ分析やフォレンジック調査において、InstallUtil.exe の挙動を追う際は「プロセスの親子関係」を必ず確認してください。
開発者がシステム構築のために使用している場合、InstallUtil.exe の親プロセスはVisual Studioや正規のインストーラー、あるいは管理者が手動で叩く cmd.exe になるのが普通です。しかし、これが powershell.exe や、Word・Excelなどのオフィスアプリ、あるいはWebブラウザのプロセス から呼び出されている場合、100%の確率で本手法(T1118)を用いたインジェクション攻撃が行われています。
即座に対象端末のメモリを保護し、指定されていたDLLファイルを確保して解析に回すことが、被害の全体像を特定するための最大のブレイクスルーとなります。
この攻撃手法を利用する脅威アクターは登録されていません。