PowerShellスクリプトブロックログを有効化しエクスポートする方法

PowerShellスクリプトブロックログを有効化しエクスポートする方法

SOC Prime Team
SOC Prime Team linkedin icon フォローする

PowerShell スクリプト ブロック ログは、次の場所にあります アプリケーションとサービスのログ → Microsoft → Windows → PowerShell → Operationalイベント 4104 として。スクリプト ブロック ログが有効でないと完全に記録されません。エクスポートするには:

wevtutil epl “Microsoft-Windows-PowerShell/Operational” C:logspowershell.evtx

PowerShell 7 は別の製品であり、PowerShellCore/Operational として別のチャネルを持ち、独自のポリシー設定があります。

攻撃者が Windows ボックスに触れた場合、PowerShell が関与している可能性が高いです。スクリプト ブロック ログは実際に実行されたコードを記録し、しばしば難読化されたレイヤーが剥がれた後に記録されます。Prime Core には、PowerShell ログ用の 663 の検出ルールがあり、417 の MITRE ATT&CK テクニックに対応しています。それらは、悪意のある PowerShell の使用(T1059.001)、難読化(T1027)、ツールを取得するダウンロード クレードル(T1105)をカバーしています。

LogTotal を無料でお試しください

始める前に

スクリプト ブロック ログはオンになっていますか?

reg query “HKLMSOFTWAREPoliciesMicrosoftWindowsPowerShellScriptBlockLogging”

EnableScriptBlockLogging が 0x1 に設定されていればオンです。このキーが存在しなければオフです。とはいえ、Windows PowerShell 5.1 は依然として疑わしいと判断されるスクリプト ブロックを、警告レベルの 4104 イベントとしてログに記録します。そのため、 いくつかの イベントを見つけるかもしれません。それらを完全な情報と誤解しないでください。

オンにすることは、今後に役立つのであって、既に発生したことには影響しません。グループポリシー設定を使用してください。 helps from now on, not for what already happened. Use the Group Policy setting 管理テンプレート → Windows コンポーネント → Windows PowerShell → PowerShell スクリプト ブロック ログの有効化、またはレジストリ値を直接設定します:

reg add “HKLMSOFTWAREPoliciesMicrosoftWindowsPowerShellScriptBlockLogging” /v EnableScriptBlockLogging /t REG_DWORD /d 1 /f

PowerShell 7 は、HKLMSOFTWAREPoliciesMicrosoftPowerShellCore の下に独自のポリシー キーを読み取ります。MSI ではなく zip からインストールされた場合、RegisterManifest.ps1 を $PSHOME から実行するまで、そのイベント チャネルが登録されていない可能性があります。

ログ容量に注意 実行されるすべてのスクリプトとモジュールはログに記録されます。チャネルの最大サイズを上げないと、数時間分しか保持されません。

機密情報に注意 管理者スクリプトは時々平文でパスワードや API キーを持ち、スクリプト ブロック ログはそれらを忠実に記録します。このファイルをどこかに送信する前にそれを心に留め、以下の LogTotal セクションを読んでください。

ログをエクスポート

イベント ビューアで、右クリックして Operational PowerShell の下にあり、「 すべてのイベントを保存…」を選択 コマンド ラインから:

:: スクリプト ブロックのみ

wevtutil epl “Microsoft-Windows-PowerShell/Operational” C:logsps_4104.evtx /q:”*[System[(EventID=4104)]]”

:: PowerShell 7

wevtutil epl “PowerShellCore/Operational” C:logspwsh.evtx

:: クラシックな「Windows PowerShell」ログ:ホスト コマンド ラインでのエンジン開始イベント

wevtutil epl “Windows PowerShell” C:logswindows_powershell.evtx

この最後のものは忘れがちで、取得する価値があります。イベント 400 は各エンジン開始を記録し、エンジンのバージョンも含まれます。現代的なシステムで EngineVersion が 2.0 である場合、通常は誰かが故意にダウングレードしてスクリプト ブロック ログを回避したことを意味します。

LogTotal にアップロードしてレビュー

LogTotal は EVTX をネイティブに読み込みます。最初に知っておくべきこと: LogTotal はまだ EVTX ファイルをサニタイズしていません。 [PROOF: confirm which formats the sanitize step covers today.] With PowerShell logs, that matters more than usual, because of the secrets mentioned above. Use EVTX uploads freely for test machines. For production hosts, get a yes from whoever owns data handling first.

  1. アップロード。 開いてください logtotal.com とファイルをドロップします。[証拠画面:アップロード画面、サイズ制限]
  2. レビュー。 [PROOF: what the results screen shows for PowerShell data]

実際のデータでこれがどのように見えるか。 私たちは使用しました [証拠:サンプルソース、例:スクリプト ブロック ログの有効化中のテスト VM、エンコードされたダウンロード クレードルと無害な AMSI 改ざんテスト ストリングを実行後]。LogTotal はこれをフラグしました [証拠:実際の発見]。[証拠:サンプルファイルへのリンク]

うまくいかないとき

症状可能性のある原因Fix
4104 イベントが全くないスクリプト ブロック ログがオフで、疑わしいものが何も見つからなかった将来のために有効にしてください;まだ取得できる Windows PowerShell ログを確認してください
警告の4104イベントしかないロギングがオフになっており、自動的に疑わしいブロックのみが記録されています上記と同様
PowerShellCore/Operational が見つからないPowerShell 7 がインストールされていないか、マニフェストが登録されていません$PSHOME から RegisterManifest.ps1 を実行してください
4104 テキストが読めない暗号文Protected Event Logging がオンです復号化証明書が必要です
ログが数時間しかカバーしていないデフォルトサイズ、高ボリュームチャネルの最大サイズを上げてください

FAQ

スクリプト ブロック ログは難読化コードをキャッチしますか?

大部分はそうです。コンパイルされたスクリプト ブロックを記録します。難読化されたコードが次のステージを構築し実行する際、そのステージも別のブロックとしてログに記録され、多くの場合読みやすい形になります。

転写との違いは何ですか?

転写はセッションの入力と出力をテキスト ファイルとしてフォルダーに書き込みます。スクリプト ブロック ログはコード自体をイベント ログに記録します。これらはお互いに補完し合い、どちらも持っておく価値があります。

SOC PrimeのDetection as Codeプラットフォームに参加し ビジネスに最も関連性のある脅威に対する可視性を向上させましょう。開始して即座に価値をもたらすためには、今すぐSOC Primeの専門家とのミーティングを予約してください。