PowerShellを無効化せずにセキュリティリスクを低減 / Keeping PowerShell: Security Measures to Use and Embrace

 

米国、ニュージーランド、英国のサイバーセキュリティ当局は、PowerShellを完全に削除または無効にするのではなく、PowerShellの適切な設定と監視を行うことを推奨しています。これにより、PowerShell が提供するセキュリティ機能から恩恵を受けると同時に、悪意のある行為者が被害者のネットワークにアクセスした後、検出されずに PowerShell を使用する可能性を低減することができます。以下の推奨事項は、管理者と防衛者による正当な使用を可能にしながら、防衛者が悪意のあるサイバーアクターによる悪用を検知・防止するのに役立ちます。

国家安全保障局(NSA)、サイバーセキュリティおよびインフラセキュリティ局(CISA)、ニュージーランド国家サイバーセキュリティセンター(NZ NCSC)、英国国家サイバーセキュリティセンター(NCSC-UK)によるこのサイバーセキュリティ情報シートは、PowerShellの使用とそのセキュリティ対策について詳細を説明しています。

PowerShellは、Microsoft Windowsに含まれるスクリプト言語およびコマンドラインツールである。オープンソースのオペレーティングシステム(Linuxなど)のBashと同様に、PowerShellはオペレーティングシステムへのインターフェースとして、ユーザーエクスペリエンスを拡張します。PowerShell は Windows Vista で導入され、Windows の各バージョンで進化してきました。PowerShellは、防衛者がWindowsオペレーティングシステムを管理するために、次のような支援を行います。

  • フォレンジックへの取り組みを可能にする。
  • インシデントレスポンスの改善
  • 一般的または反復的なタスクの自動化を可能にする。

マイクロソフトのクラウドプラットフォームであるAzureでは、PowerShellがAzureリソースの管理を支援し、管理者や防御者が自動化ツールやセキュリティ対策を構築することを可能にしています。しかし、PowerShellの拡張性、使いやすさ、可用性は、悪意のあるサイバー行為者にとっても好機となる可能性があります。ランサムウェアを含め、公に認められている多くのサイバー侵入は、PowerShellを侵入後のツールとして使用しています。このような手法は目新しいものではなく、悪意のある行為者は、しばしば正規のシステムソフトウェアを標的としたり、利用したりする方法を見つけ出しています。

著者の推奨する方法は、PowerShellの機能を阻害することなくサイバー脅威を軽減するもので、PowerShellの運用を維持するためのMicrosoftのガイダンスと一致しています。 PowerShell をブロックすると、現在のバージョンの PowerShell が提供できる防御機能が阻害され、Windows オペレーティングシステムのコンポーネントが正常に動作しなくなります。PowerShell の機能とオプションが改善された最近のバージョンは、PowerShell の悪用に対抗するために防御者を支援することができます。また、Australian Cyber Security Centre (ACSC) は、PowerShell のセキュリティに関する包括的な設定ガイダンスを提供しています。

PowerShellの現在の守備範囲

PowerShellは7.2が最新版ですが、Windows 10には以前のバージョンである5.1が付属しています。バージョン7.2は、Microsoftによって管理され、オープンソース化されている。Windows 10で適切な設定を行えば、PowerShell 7.2はバージョン5.1用に作成されたすべてのコンポーネントと完全に統合してアクセスできるため、既存のスクリプト、モジュール、コマンドを継続して使用することが可能です。バージョン5.0以前の悪質なPowerShellの使用は、それらのPowerShellアクションを検出するための公的な取り組みの動機となりました。最近のPowerShellのバージョンには、以下のセクションで詳述する防止、検出、認証機能など、セキュリティ対策が強化されています。筆者らは、以下に説明する防御策を回避するために、Windows 10では、非推奨の第2バージョンのPowerShell(つまり、バージョン2)を明示的に無効化およびアンインストールすることを推奨しています。

不正使用を減らすためのPowerShellメソッド

PowerShellに内蔵されているWindowsのセキュリティ機能は、サイバーアクターによる悪用を減らすことができます。著者らは、可能な限りこれらの機能を使用することを推奨しています。

PowerShellリモーティング時のクレデンシャル保護

PowerShellリモーティングは、管理者、サイバーセキュリティアナリスト、およびユーザーがWindowsホスト上でリモートでコマンドを実行できるようにするWindowsの機能です。Windows リモート管理 (WinRM) は、PowerShell リモーティングで使用される基礎的なプロトコルであり、デフォルトの認証プロトコルとして Kerberos または New Technology LAN Manager (NTLM) を使用します。これらの認証プロトコルは、実際の認証情報をリモートホストに送信しないため、認証情報が直接公開されることや、公開された認証情報によって盗難に遭うリスクを回避することができます。

PowerShellリモーティングのネットワーク保護

リモート接続は、強力なリモート管理機能を使用できるため、エンドポイント上のWindowsファイアウォール規則を適切に設定し、許可される接続を制御する必要があります。Windowsのクライアントエディションとサーバーエディションには、PowerShellリモーティングが含まれており、Windows 2012 R2以降のWindowsサーバーではこの機能がデフォルトで有効になっています。PowerShellリモーティングを使用してエンドポイントにアクセスするには、要求側のユーザーアカウントがデフォルトで宛先の管理者権限を持っている必要があります。プライベートネットワークでPowerShellリモーティングを有効にすると、すべての接続を受け入れるためのWindowsファイアウォールルールが導入されます。許可要件とWindowsファイアウォールルールはカスタマイズ可能で、信頼できるエンドポイントやネットワークにのみ接続を制限することで、横移動の機会を減らすことができます。

ネットワークへの接続を制限し、横移動の機会を減らすことができます。組織は、これらのルールを実装して、ネットワークセキュリティを強化することができます。

アンチマルウェア・スキャン・インターフェイス(AMSI)の統合 

Windows 10で初めて提供された「アンチマルウェア スキャン インターフェース」機能は、さまざまなWindowsコンポーネントに統合されています。Windowsに登録されたアンチウイルス製品によるメモリ内や動的なファイルコンテンツのスキャンをサポートし、アプリケーションが潜在的に悪意のあるコンテンツをスキャンするためのインターフェイスを公開するものです。内蔵のスクリプト言語(PowerShell、VBScript、JScriptなど)は、登録・サポートされているアンチウイルスソフトウェアによってスクリプトがスキャンされるよう、AMSIを使用しています。この機能を使用するには、Windows Defender、McAfee、Symantec などの AMSI 対応のアンチウイルス製品が必要です。

出典:Keeping PowerShell: Security Measures to Use and Embrace