PowerShell スクリプトのセキュリティの詳細情報

Configuration Manager (現在のブランチ) に適用

環境内で提案された PowerShell と PowerShell パラメーターの使用状況を検証するのは管理者の責任です。 PowerShell の機能と潜在的なリスク サーフェスについて管理者を教育するのに役立つリソースを次に示します。 このガイダンスは、潜在的なリスク サーフェスを軽減し、安全なスクリプトを使用できるようにするためです。

PowerShell スクリプト セキュリティ

Configuration Managerスクリプト機能を使用すると、スクリプトを視覚的に確認および承認できます。 別の管理者は、スクリプトの許可を要求できます。 管理者は、PowerShell スクリプトに難読化されたスクリプトを含めることができることに注意する必要があります。 難読化されたスクリプトは悪意があり、スクリプトの承認プロセス中に目視検査で検出するのが難しい可能性があります。 PowerShell スクリプトを視覚的に確認し、検査ツールを使用して疑わしいスクリプトの問題を検出します。 これらのツールは常に PowerShell 作成者の意図を判断できるわけではありません。そのため、疑わしいスクリプトに注意を向けることができます。 ただし、ツールでは、悪意のあるスクリプト構文または意図的なスクリプト構文であるかどうかを管理者が判断する必要があります。

推奨事項

  • 以下で参照されているさまざまなリンクを使用して、PowerShell セキュリティ ガイダンスについて理解してください。
  • スクリプトに署名する: スクリプトをセキュリティで保護するもう 1 つの方法は、使用のためにインポートする前に、スクリプトを審査してから署名することです。
  • PowerShell スクリプトにシークレット (パスワードなど) を格納せず、シークレットの処理方法の詳細を確認してください。

PowerShell のセキュリティに関する一般的な情報

このリンクのコレクションは、Configuration Manager管理者が PowerShell スクリプトのセキュリティに関する推奨事項について学習するための出発点を提供するために選択されました。

PowerShell 攻撃からの防御

悪意のあるコード挿入からの保護

PowerShell - Blue Team では、ディープ スクリプト ブロック ログ、保護されたイベント ログ、マルウェア対策スキャン インターフェイス、およびセキュリティで保護されたコード生成 API について説明します

マルウェア対策スキャン インターフェイス用 API

PowerShell パラメーターのセキュリティ

パラメーターの受け渡しは、スクリプトを柔軟に使用し、実行時まで決定を延期する方法です。 また、別のリスクサーフェスも開きます。

次の一覧には、悪意のあるパラメーターやスクリプトの挿入を防ぐための推奨事項が含まれています。

  • 事前に定義されたパラメーターの使用のみを許可します。
  • 正規表現機能を使用して、許可されているパラメーターを検証します。
    • 例: 特定の範囲の値のみを使用できる場合は、正規表現を使用して、範囲を構成できる文字または値のみを確認します。
    • パラメーターの検証は、ユーザーが引用符のようにエスケープできる特定の文字を使用するのを防ぐのに役立ちます。 引用符には複数の種類が存在する可能性があるため、正規表現を使用して、許容できないすべての入力を定義するよりも、許容される文字を検証する方が簡単です。
  • PowerShell ギャラリーで PowerShell モジュール "インジェクション ハンター" を使用します。
    • 誤検知が発生する可能性があるため、何かが疑わしいとフラグ付けされたときに意図を探して、実際の問題かどうかを判断します。
  • Microsoft Visual Studio にはスクリプト アナライザーがあり、PowerShell 構文の確認に役立ちます。

"DEF CON 25 - Lee Holmes - Get $pwnd: Attacking Battle Hardened Windows Server" というタイトルのビデオでは、セキュリティで保護できる問題の種類 (特にセクション 12:20 から 17:50) の概要を示します。

環境に関する推奨事項

次の一覧には、PowerShell 管理者向けの一般的な推奨事項が含まれています。

  • Windows 10 以降に組み込まれているバージョン 5 以降など、最新バージョンの PowerShell をデプロイします。 Windows Management Frameworkをデプロイすることもできます。
  • 必要に応じて、保護されたイベント ログを含む PowerShell ログを有効にして収集します。 これらのログを署名、ハンティング、インシデント対応のワークフローに組み込みます。
  • 価値の高いシステムに Just Enough Administration を実装して、それらのシステムへの制約のない管理アクセスを排除または削減します。
  • Windows Defenderアプリケーション制御ポリシーを展開して、事前に承認された管理タスクが PowerShell 言語の完全な機能を使用できるようにしながら、対話型および承認されていない使用を PowerShell 言語の限定されたサブセットに制限できるようにします。
  • Windows 10以降をデプロイして、Windows スクリプト ホスト (PowerShell を含む) によって処理されたすべてのコンテンツ (実行時に生成または難読化解除されたコンテンツを含む) にウイルス対策プロバイダーにフル アクセスできるようにします。