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

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

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

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

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

推奨事項

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

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

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

PowerShell 攻撃に対する防御

悪意のあるコード インジェクションからの保護

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

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

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

パラメーターを渡すことは、スクリプトに柔軟性を持たせ、決定を実行時まで延期するための方法です。 また、別のリスクの表面も開かれます。

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

  • 定義済みパラメーターの使用のみを許可します。
  • 正規表現機能を使用して、許可されているパラメーターを検証します。
    • 例: 特定の値の範囲しか指定できない場合は、正規表現を使用して、その範囲を構成できる文字または値のみをチェックします。
    • パラメーターを検証することで、引用符など、エスケープ可能な特定の文字をユーザーが使用しないようにすることができます。 引用符には複数のタイプが存在する可能性があるため、多くの場合、正規表現を使用して、許容されると判断した文字を検証する方が、許容されないすべての入力を定義するよりも簡単です。
  • 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管理を実装して、それらのシステムへの制約のない管理アクセスを排除または削減します。
  • Windows Defender アプリケーション制御ポリシーを展開して、事前に承認された管理タスクが PowerShell 言語の全機能を使用できるようにする一方で、対話型および未承認の使用は PowerShell 言語の限られたサブセットに制限します。
  • Windows 10 以降を展開して、PowerShell を含む Windows スクリプト ホストによって処理されるすべてのコンテンツ (実行時に生成または難読化解除されたコンテンツを含む) にウイルス対策プロバイダーがフル アクセスできるようにします。