Adversaries may implement hidden windows to conceal malicious activity from the plain sight of users. In some cases, windows that would typically be displayed when an application carries out an operation can be hidden. This may be utilized by system administrators to avoid disrupting user work environments when carrying out administrative tasks. Adversaries may abuse operating system functionality to hide otherwise visible windows from users so as not to alert the user to adversary activity on the system.
There are a variety of features in scripting languages in Windows, such as PowerShell, Jscript, and VBScript to make windows hidden. One example of this is powershell.exe -WindowStyle Hidden. (Citation: PowerShell About 2019)
The configurations for how applications run on macOS are listed in property list (plist) files. One of the tags in these files can be apple.awt.UIElement, which allows for Java applications to prevent the application's icon from appearing in the Dock. A common use for this is when applications run in the system tray, but don't also want to show up in the Dock. However, adversaries can abuse this feature and hide their running window.(Citation: Antiquated Mac Malware)
MITRE ATT&CKにおいて、T1143は「Hidden Window(非表示ウィンドウ)」として定義されている「防御回避(Defense Evasion)」のテクニックです。
攻撃者がプログラムやスクリプト(cmd.exe、powershell.exe、VBScriptなど)を実行する際、GUIウィンドウ(黒いコマンドプロンプト画面など)を意図的に非表示(非可視)にした状態でバックグラウンド実行させる手法です。
この手法で攻撃者は、「ユーザーに画面上の異常(一瞬の黒い画面のチラつき等)を悟られることなく、裏で悪意ある操作を完結させること」を実現します。
ソーシャルエンジニアリング成功率の向上:
マルウェアが仕込まれたWord/Excel文書を開いた際や、ショートカットファイル(.lnk)をクリックした際、黒いコマンド画面が一瞬でも立ち上がるとユーザーは不審に思います。T1143を使うことで、ユーザーの画面には一切の変化を出さずにスクリプトを実行できます。
画面操作による即時発覚の回避:
タスクバーや画面上にウィンドウを表示させないため、PCを直接操作しているユーザー(対話型ユーザー)の視覚的な気づきを完全に防ぎます。
Windowsの構造上、プロセス起動時のパラメータやAPI呼び出しオプションで簡単にウィンドウを非表示にできます。
初期侵入 / トリガーの起動:
悪意あるマクロ付きOffice文書(VBA)、 malicious LNK ファイル、または既存のスケジュールタスク経由でコードがキックされます。
非表示フラグを伴うプロセス起動(T1143の発動):
攻撃者は以下のような手法で非表示属性を指定してプロセスを起動します。
powershell.exe -WindowStyle Hidden -ExecutionPolicy Bypass -File C:\Windows\Temp\script.ps1-WindowStyle Hidden(または -w h)フラグを指定することで、PowerShell画面を立ち上げずに実行します。
Set objShell = CreateObject("WScript.Shell") objShell.Run "cmd.exe /c C:\Windows\Temp\payload.bat", 0, False第二引数の 0 が SW_HIDE(ウィンドウ非表示)を意味します。
CreateProcess APIを呼び出す際、STARTUPINFO 構造体の wShowWindow メンバーに SW_HIDE(0)を設定します。バックグラウンド処理の完結(目的達成):
ユーザーの画面には何の変化も現れないまま、裏でC2サーバーとの通信や永続化メカニズムの書き込みが完了します。
画面上で見えない場合でも、OSのカーネルレベルではプロセスが確実に生成・実行されているため、プロセスコマンドラインログの監視が最大の防御策になります。
プロセスコマンドライン引数の監視(最重要):
EDRやSIEMを用いて、プロセス生成ログ(WindowsイベントID 4688 / Sysmon イベントID 1)を監視します。特に powershell.exe や pwsh.exe の引数に -WindowStyle Hidden、-w hidden、-w 1(1はHidden相当)が含まれる挙動をアラート化します。
Sysmonによる親プロセス・子プロセス関係の監視:
winword.exe(Word)や excel.exe(Excel)を親プロセスとして、-WindowStyle Hidden オプションを持つ powershell.exe や cmd.exe が生成される挙動を一律で自動遮断(Block)します。
PowerShell スクリプトブロックログの有効化:
WindowsイベントID 4104(PowerShell Script Block Logging)を有効化することで、ウィンドウが隠されていても、実行されたスクリプトコード全体の生のテキストをログに記録・解析できます。
「GUIの隠蔽」であり「プロセスの隠蔽」ではない:
本手法はあくまで「画面上の表示(Window)」を消すだけであり、タスクマネージャーや EDR、Get-Process コマンド等からはプロセス自体がはっきりと視認できます(プロセスレベルの完全な隠蔽は T1014 Rootkit など別のカテゴリになります)。
極めて高い汎用性:
スクリプト型マルウェア(Emotet, Qakbot, AsyncRAT等)から高度APTのドロッパーまで、初期段階のコード実行においてはほぼ100%と言ってよい頻度で併用される標準的な隠蔽手段です。
Emotet(モジュール型マルウェア):
メール添付のWord/ExcelマクロやVBScriptからPowerShellを呼び出す際、必ず -WindowStyle Hidden オプションを付与してバックグラウンドでペイロード(DLL)をダウンロード・実行させました。
Qakbot(Qbot / 情報窃取・ランサムウェアローダー):
ショートカットファイル(.lnk)を悪用した感染フローにおいて、LNKファイルのターゲットパス内に cmd.exe /c start /min ... や PowerShell の非表示オプションを仕込むことで、ユーザーに違和感を与えずに感染を広げました。
実務上のアドバイス:
SOCやセキュリティ運用のルール作成において、「powershell.exe + -WindowStyle Hidden(または -w h などの短縮形)」 を含むコマンドラインは、正規の管理スクリプトでも稀に使われますが、初期侵入(Word/Excel/LNK/ブラウザ等からの起動)と組み合わさった場合はほぼ確実に攻撃(Malicious)です。
親プロセスが Explorer.exe 以外(特に Office系、PDF閲覧ソフト、Webブラウザ)である場合に限定して検知ロジック(SIEM / EDRアラート)を組むことで、False Positive(誤検知)を劇的に減らしつつ、高精度で本手法(旧T1143 / 現T1564.003)を捉えることができます。
この攻撃手法を利用する脅威アクターは登録されていません。