Image File Execution Options (IFEO) enable a developer to attach a debugger to an application. When a process is created, a debugger present in an application’s IFEO will be prepended to the application’s name, effectively launching the new process under the debugger (e.g., “C:\dbg\ntsd.exe -g notepad.exe”). (Citation: Microsoft Dev Blog IFEO Mar 2010)
IFEOs can be set directly via the Registry or in Global Flags via the GFlags tool. (Citation: Microsoft GFlags Mar 2017) IFEOs are represented as Debugger values in the Registry under HKLM\SOFTWARE{\Wow6432Node}\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\ where is the binary on which the debugger is attached. (Citation: Microsoft Dev Blog IFEO Mar 2010)
IFEOs can also enable an arbitrary monitor program to be launched when a specified program silently exits (i.e. is prematurely terminated by itself or a second, non kernel-mode process). (Citation: Microsoft Silent Process Exit NOV 2017) (Citation: Oddvar Moe IFEO APR 2018) Similar to debuggers, silent exit monitoring can be enabled through GFlags and/or by directly modifying IEFO and silent process exit Registry values in HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\. (Citation: Microsoft Silent Process Exit NOV 2017) (Citation: Oddvar Moe IFEO APR 2018)
An example where the evil.exe process is started when notepad.exe exits: (Citation: Oddvar Moe IFEO APR 2018)
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe" /v GlobalFlag /t REG_DWORD /d 512reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe" /v ReportingMode /t REG_DWORD /d 1reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe" /v MonitorProcess /d "C:\temp\evil.exe"Similar to Process Injection, these values may be abused to obtain persistence and privilege escalation by causing a malicious executable to be loaded and run in the context of separate processes on the computer. (Citation: Elastic Process Injection July 2017) Installing IFEO mechanisms may also provide Persistence via continuous invocation.
Malware may also use IFEO for Defense Evasion by registering invalid debuggers that redirect and effectively disable various system and security applications. (Citation: FSecure Hupigon) (Citation: Symantec Ushedix June 2008)
T1183は「Image File Execution Options Injection(IFEOインジェクション)」として定義されていた、Windows環境を標的にした非常に強力かつ極めてステルス性の高い「永続化(Persistence)」、「特権昇格(Privilege Escalation)」、および「防御回避(Defense Evasion)」のテクニックです。
Windowsが標準で持っている開発者向けのデバッグ機能「IFEO(イメージファイル実行オプション)」のレジストリ設定を悪用し、「ユーザーやOSが特定の正規プログラム(例: メモ帳や拡大鏡など)を起動した瞬間に、それを横取りしてマルウェアを身代わりとして自動実行させる」手法です。
この手法で攻撃者は、「スタートアップ設定やサービス一覧などの目立つ場所に痕跡を一切残さずに、ユーザーの日常操作に便乗してバックドアを自動起動させること」を実現します。
足がつかない永続化:
従来の Run レジストリ(T1547.001)やタスクスケジューラ(T1053.005)は、セキュリティツールや管理者による調査で真っ先にチェックされる「目立つ場所」です。しかし、IFEOインジェクションは「普段からよく使うアプリが起動した時だけ裏で連動する」ため、自動起動の調査用ツールを巧妙にすり抜けることができます。
ログイン前(画面ロック状態)での最高権限の強奪:
Windowsのサインイン画面(パスワード入力画面)から呼び出せるアクセシビリティツール(例: 拡大鏡 magnify.exe や ナレーター Narrator.exe)のIFEOを書き換えることで、まだ誰もログインしていない状態(画面がロックされた状態)から、パスワードを入力することなく最高権限(SYSTEM)のコマンドプロンプトを強引に起動させることができます。
IFEOは本来、ソフトウェア開発者が「特定のアプリ(例:notepad.exe)が起動したときに、自動的にデバッガ(開発用ツール)をアタッチしてバグを調査したい」という目的のためにMicrosoftが用意した正規のレジストリ機能です。
IFEOレジストリ内に Debugger という名前の値(値データ:デバッガのパス)を作成すると、Windowsシステムは対象のアプリが起動される直前に、その Debugger で指定されたプログラムを「親」として最優先で立ち上げる仕様になっています。
攻撃者はこの仕様を悪用し、デバッガのパスとしてマルウェアのパス(または cmd.exe)を指定します。これにより、Windowsはデバッガが起動したと思い込み、正規アプリの代わりにマルウェアを起動してしまいます。
この手法はシステムのレジストリ構成を書き換える必要があるため、通常はローカル管理者権限(Administrator)を確保した後の「永続化(足場固め)」として実行されます。
初期侵入と管理者権限の確保:
脆弱性などを突いてシステムに侵入し、ローカル管理者権限を奪取します。
標的アプリの選定:
ユーザーが頻繁に使う、あるいはログイン画面から起動できる正規アプリ(例: メモ帳 notepad.exe や ユーティリティマネージャー utilman.exe)を標定します。
レジストリの改ざん(トリガー):
コマンド(reg add)を悪用し、WindowsのIFEOレジストリ領域に標的アプリのキーを作成し、Debugger 値にマルウェアのパスを埋め込みます。
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe" /v Debugger /t REG_SZ /d "C:\Windows\Temp\backdoor.exe" /fトラップの発動:
仕込み完了後、ユーザーが日常業務の中で「テキストファイルを開こう」とメモ帳(notepad.exe)をダブルクリックします。
コード実行(目的達成):
Windowsシステムはメモ帳を起動するのを止め、IFEOの設定に従って C:\Windows\Temp\backdoor.exe(マルウェア)をバックグラウンドで自動起動させます。ユーザー側には何も表示されないか、あるいは攻撃者が用意したダミーのメモ帳画面が表示されるため、異変に気づくことは困難です。
「IFEOレジストリキーに対する不審な書き込み行為」を完全にロック・監視することが決定的な防衛策です。
IFEOレジストリ領域の監視・保護(FIM / 最重要):
EDRやファイル・レジストリ整合性監視(FIM)ツールを用いて、以下のレジストリパスに対する新規キーの追加や Debugger 値の書き込み・変更をリアルタイムで監視・ブロックします。
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\Sysinternals「Autoruns」による監査:
Microsoft公式の無料調査ツール Autoruns を使用すると、「Image Hijacks」という専用のタブで、このIFEO(Debugger値)が悪用されて実行フローが歪められている不審なアプリ一覧を瞬時に一列挙し、検知することができます。
プロセスの親子関係の不審なパターンの検知:
「本来デバッガではないはずのプログラム(例: Temp フォルダ内の野良バイナリや cmd.exe)」が親プロセスとなり、その子プロセスとして notepad.exe や各種システムアプリが不自然にスポーン(発生)しているプロセスツリーをEDRで検知・遮断します。
CWE-15: External Control of System or Configuration Setting(システムまたは構成設定の外部制御)
Windowsのプロセス起動フローを司る重要なレジストリ構成(IFEO)に対して、昇格した攻撃者による外部からの自由な書き込み・制御を許してしまう構造上の弱点。
CWE-732: Incorrect Permission Assignment for Critical Resource(重要なリソースに対する不適切なアクセス権限の割り当て)
ローカル管理者権限を持つアクターに対して、システム全体のデバッグ設定を制限なしに変更できてしまう、OSの権限モデルにおける仕様上のリスク。
特定のバグ(CVE)によるハッキングではなく、Windowsの「仕様」を逆手に取ったポストエクスプロイト(侵入後)の工作ですが、標的型攻撃(APT)やランサムウェアの事前の隠蔽フェーズで非常に好まれる手口です。
av_solution.exe)に対して、Debugger 値に cmd.exe /c exit(起動してすぐ終了するコマンド)を登録する嫌がらせのような工作も行います。これにより、セキュリティソフトが起動しようとするたびにOSが勝手にそれを消し去る(無効化する)という、最凶の防御回避を成立させていました。Windows端末のフォレンジック調査において、「デスクトップのメモ帳をクリックしても一瞬砂時計が出るだけで画面が開かない」、あるいは「PCのロック画面で Shift鍵を5回連打 して固定キー機能を呼び出そうとしたら、なぜか画面の裏で黒いコマンドプロンプト(SYSTEM権限)が一瞬見えた」といった怪奇現象に遭遇した場合、本手法(T1183)が完全に仕込まれています。
即座にレジストリの Image File Execution Options を確認し、そこに本来あるはずのない不審な Debugger 値が刺さっていないかをチェックすることが、隠蔽されたバックドアの心臓部を掴み取るブレイクスルーとなります。