Trusted Design

T1504 - PowerShell Profile

概要

Adversaries may gain persistence and elevate privileges in certain situations by abusing PowerShell profiles. A PowerShell profile (profile.ps1) is a script that runs when PowerShell starts and can be used as a logon script to customize user environments. PowerShell supports several profiles depending on the user or host program. For example, there can be different profiles for PowerShell host programs such as the PowerShell console, PowerShell ISE or Visual Studio Code. An administrator can also configure a profile that applies to all users and host programs on the local computer. (Citation: Microsoft About Profiles)

Adversaries may modify these profiles to include arbitrary commands, functions, modules, and/or PowerShell drives to gain persistence. Every time a user opens a PowerShell session the modified script will be executed unless the -NoProfile flag is used when it is launched. (Citation: ESET Turla PowerShell May 2019)

An adversary may also be able to escalate privileges if a script in a PowerShell profile is loaded and executed by an account with higher privileges, such as a domain administrator. (Citation: Wits End and Shady PowerShell Profiles)

管理者によるコメント

T1504は「PowerShell Profile(PowerShellプロファイルの悪用)」として定義されている、Windows環境における非常に強力かつ stealth(隠蔽性)の高い自動実行・永続化手法です。

PowerShellが起動する際に自動読み込みされる設定スクリプト(プロファイル)を改ざんし、「ユーザーや管理者がPowerShellを開くたびに、裏でマルウェア(悪意あるコード)を自動実行させる」手法です。

1. 概要(攻撃者は何を実現できるのか?)

この手法で攻撃者は、「通常のスタートアップ設定を一切汚すことなく、管理者が自らトラブルシューティングなどのためにPowerShellを開いた瞬間を狙って、最高権限を伴ったバックドアを再発動させること」を実現します。

2. 攻撃の流れ

PowerShellプロファイルは、ログインユーザー専用のものからシステム全体(全ユーザー)に影響するものまで、主に4つの種類(スクリプトファイル)が存在します。攻撃者は自身の権限に応じてターゲットを選びます。

  1. 初期侵入:
    フィッシングメールなどを経由してWindows端末に侵入します。一般ユーザー権限の段階であれば「現在のユーザー用プロファイル」、管理者権限(Administrator)を確保していれば「全ユーザー用プロファイル」を狙います。

  2. プロファイルファイルの特定・改ざん:
    PowerShell上で $PROFILE 変数を叩くと、その環境のプロファイルパスが確認できます。攻撃者は、以下のいずれかのパスに存在する .ps1 ファイルを直接編集するか、ファイル自体がなければ新しく作成します。

    • 全ユーザー共通(要管理者権限): C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1
    • 現在のユーザー専用(一般権限で可能): C:\Users\[ユーザー名]\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
  3. 悪意あるコードの埋め込み:
    プロファイルファイルの末尾に、難読化されたPowerShellコマンド(例: C2サーバーからビーコン用のペイロードをメモリ上に直接読み込んで実行するコード)を追記します。

  4. 自動実行の発動(トリガー):
    仕込み完了後、攻撃者はその場を去ります。その後、ユーザーが業務のためにPowerShellを開く、あるいはシステムが定期タスクでPowerShellスクリプトを実行した瞬間に、画面には何も表示されない裏側で、プロファイルに書かれた悪意あるコードが自動的に読み込まれて実行されます。

3. 防御・対策

プロファイルスクリプトの整合性と、PowerShellの実行ポリシーの厳格化が有効です。

4. 重要ポイント

5. 関連する主なCWE

6. 関連する代表的なCVE

T1504(PowerShell Profile)は、WindowsのPowerShellが仕様として提供している「正規のスタートアップスクリプト機能」をそのまま悪用する攻撃であるため、特定のバグ(CVE番号を持つ脆弱性)を突くものではありません。

しかし、ハッカーがシステム全体(All Users)のプロファイルを書き換えて「一般権限からSYSTEM権限への便乗型特権昇格」を狙う際や、最初の侵入経路として、以下のような脆弱性が一連の攻撃キャンペーンで組み合わされます。

実務上のアドバイス

Windows端末のインシデント調査を行う際は、不用意に powershell.exe をダブルクリックして起動してはいけません(マルウェアが再発動するリスクがあるため)。

まずは管理用端末などからリモートで対象端末の C:\Users\...\Documents\WindowsPowerShell\ フォルダを覗くか、テキストエディタで直接プロファイルの中身(.ps1)を静的に開き、身に覚えのない長い文字列(特に Base64 でエンコードされた怪しいコマンドなど)が埋め込まれていないかを確認するのがフォレンジックの鉄則です。

分析

この攻撃手法を利用する脅威アクター

関連する CVE

攻撃手法 – 脅威アクター Graph


← Technique一覧に戻る ← Tactics一覧に戻る