エクスプロイト&脆弱性
PowerShellの悪用と「ファイルレス活動」を見つけるためにできること
Windowsの標準機能「PowerShell」は通常、システム管理の目的で利用されますが、Windows向けのマルウェアを作成する攻撃者にとっても、ファイルレス活動などの実現に利用できる好都合な機能となっている実態があります。本記事ではWindowsの標準機能であるPowerShellを悪用する攻撃者側の手法とその対策についてまとめます。
従来からのマルウェアの攻撃手法は、マルウェア本体である細工が施された実行ファイルに依存していました。一方、近年増加している「ファイルレス活動」を実行するマルウェアは、感染システムのメモリ内に常駐することで、ファイルを検索対象とした従来型スキャン機能や検出方法を回避します。Windowsの標準機能である「PowerShell」は通常、システム管理の目的で利用されます。しかし同時に、Windows向けのマルウェアを作成する攻撃者にとっても、ファイルレス活動などの実現に利用できる好都合な機能となっている実態があります。トレンドマイクロでは、ファイルレス活動に関する複数のレポートを公開し、上記の事実を検証してまいりました。本記事ではWindowsの標準機能であるPowerShellを悪用する攻撃者側の手法とその対策についてまとめます。
■PowerShellとは何か
PowerShellはスクリプト言語です。また、.NET frameworkのクラスに基づくコマンドラインシェルでもあり、システム管理者がオペレーティングシステム(OS)の管理タスクを自動化させるのに役立ちます。PowerShellは、MS-DOS時代から利用されるMicrosoftのコマンドラインインタープリタ(CLI)のアップデートであり、Windows XP SP2のリリース以降、標準機能としてWindowsに組み込まれています。 PowerShellの前身であるCOMMAND.COMには多くの機能が存在し、限られたスクリプト言語に対応していましたが、OSのすべての部分を管理することはできず、一部のタスクにおいては依然としてグラフィカルユーザインターフェイス(GUI)との相互利用が必要でした。PowerShellを利用することで、レジストリや証明書ストアなど、基盤となるOSへのアクセスを高速かつ向上させることができます。これによりユーザおよび管理者は、システムが持つ多くの機能をローカルまたはリモート環境からでも管理できるようになります。また、PowerShellはオープンソースでもあるため、十分に開発されたスクリプト言語が存在します。PowerShellはWindowsに加え、LinuxやmacOSなど、他のプラットフォームにも対応しています。
PowerShellとの相互作用はコマンドレットを介して行われます。コマンドレットとは、.NETオブジェクト上でアクションを有効にする命令であり、PowerShellによるWindows操作機能をまとめた命令のことです。これによってユーザは、システム全体に直接アクセスできるようになります。多くの公式コマンドレットが存在しますが、必要な機能が不足する場合でも、目的の.NETオブジェクトとインターフェイスする新しいコマンドレットを作成することで機能を追加できます。
■PowerShellが攻撃に利用される理由
一般的なマルウェアは独立した実行ファイルとして存在します。この脅威を防御するために、開発者はさまざまな検出技術や被害を軽減させるための対策を講じてきました。Webブラウザは、ダウンロードされたファイルが不正かどうかを確認します。アプリケーションは、インストールする前に承認された許可が必要です。また、セキュリティ対策製品は、書き込み、読み込み、あるいは実行されたファイルをスキャンし、既知のシグネチャをチェックします。
その一方で 攻撃者は、実行中のアプリケーションにペイロードを挿入したり、スクリプトを利用したりして、ファイルレス活動を実現し、上述のセキュリティ対策の回避を試みます。PowerShellはWindowsの標準機能であるため、ほとんどのWindows環境で利用可能です。加えて攻撃者はPowerShellを利用することで、.NET frameworkを介してホスト全体にアクセスできるようになります。つまり、攻撃者にとってPowerShellは不正活動を実行する上で好都合な機能であると言えます。そのうえ、ペイロードの拡散活動に適用可能なスクリプトが容易に開発できること、さらに、PowerShell自体が信頼されるアプリケーションであるため、実行されるスクリプトが不正なものであったとしても、不正なプロセスとはみなされないことなど、攻撃者にとって多くの利点があります。
■PowerShellを利用した悪名高い攻撃と感染活動
PowerShellを悪用するための攻撃ツールはインターネット上で簡単に入手できるため、さまざまな技術レベルを持つサイバー犯罪者が利用しています。2014年にPowerShellを利用したマルウェアが初めて報告されて以来、攻撃者はソーシャルエンジニアリングの手法を利用してシステムに感染するための拡散活動を展開したり、PowerShellを他の脆弱性攻撃コード(「エクスプロイト」)と組み合わせたり、あるいはサイバー犯罪の研究や開発の一環と見せかけて、他の不正活動に類似させた攻撃手法を利用したりしています。
侵入手段としてPowerShellを悪用した最も悪名高いデータ侵害の1つは、2016年にサイバー犯罪集団「Pawn Storm」が米国民主党全国委員会から窃取した内部メールを一般公開した事例に関連しています。この攻撃は2016年に発見されましたが、ネットワークフォレンジック調査により、初めてデータ侵害の被害に遭ったのは2015年で、単一のPowerShellコマンドによってバックドア型マルウェアが送りこまれていたのと同時に、この不正活動と相関した他のデプロイメントについては2014年から始まっていたことが明らかになりました。2017年、米信用情報大手企業Equifaxのデータ侵害の事例でもPowerShellが悪用され、修正プログラム(パッチ)が適用されてない脆弱性が攻撃されました。この事例は、攻撃者が与えた被害の深刻さと規模を表しています。2018年、別のサイバー諜報集団「APT33」は、航空および石油産業を標的として標的型(スピアフィッシング)メールを送信しました。このメールの添付ファイルが開封されるとPowerShellコマンドが実行され、企業ネットワーク内にマルウェアをダウンロードして持続化を確立しました。
■PowerShellアクティビティの追跡
管理者は、オンプレミスまたはリモート環境で実行されるすべてのシステム保護やセキュリティ維持の対応に追われています。ファイルレスの脅威がシステム内に侵入した場合は手動によるセキュリティ運用が余儀なくされ、経験の浅い担当者が対処する場合、困難を伴うことになります。しかし、解読されたイベントやペイロードを見つけ出して監視を行い、ファイルレス活動のアクティビティを追跡することができます。
PowerShellのログ記録の機能を有効化することで、フォレンジック調査やマルウェア解析に活用できる重要なアクティビティを可視化することができます。これらの機能は、PowerShellの悪用を検出および防御し、さらには攻撃被害を軽減させるためにも利用できます。システム管理者は、企業全体のセキュリティ実装のために、Active Directoryのグループポリシーを通じてこれらのログ記録の機能を有効化することができます。
図1:グループポリシーの設定
モジュールログの取得を設定することで、難読化されていないコードや出力を含む、PowerShell内で実行された様々なモジュールのログがイベントログとして記録されます。「表示」をクリックして、特定のモジュール(名)を構成可能です。すべてのログ記録を取得する場合は、「*」の値を入力するのが良策です。
図2:モジュールログを有効にする
スクリプトブロックのログは、PowerShellスクリプトブロックが呼び出されたときにログを生成するオプション機能です。ログに記録されるイベントの数を増やすためには、オプション機能「スクリプトブロックの呼び出し開始/停止イベントをログに記録する」が有効になっているかどうかを確認しましょう。これは、イベントの追跡を試みる際に重要な機能です。
図3:スクリプトブロックのログを有効にする
PowerShellトランスクリプションは、PowerShellセッションから特定の場所へ入出力されるすべてのログを記録します。この機能は、攻撃の手口によっては、スクリプトや直接呼び出されたコマンドを記録しないため、限定的な利用範囲となる場合があります。
図4:PowerShellトランスクリプションを有効にする
上述する3つの機能を有効化してイベントをフィルタ処理することで、セキュリティ管理者はシステム内のPowerShellアクティビティを分析できるようになるため、侵入範囲を特定できる可能性があります。
図5:PowerShellイベントログの例
PowerShellを悪用して侵入する場合、セキュリティインシデント分析に必要な詳細レベルを提供するのに要するイベントの数は非常に多くなります。場合によっては、単一のPowerShellコマンド(コマンドレット)で30を超えるイベントが生成されることがあります。実際の攻撃は、スクリプトブロックや実行に関与する数多くのコマンドを含んでおり、調査員だけでは手に負えないほどのイベント数を生成する可能性があります。
図6:単一のPowerShellコマンドレットからログが記録されたイベント
Trend Micro™Deep Security™のセキュリティログ監視保護モジュールは、ネットワーク上のホストやアプリケーションなどの異種環境でさまざまなOSやアプリケーションのログを収集、分析、強化し、それらを相関分析することで、発生する可能性のある問題を明らかにするのに役立ちます。 Trend Microは、セキュリティログ監視保護モジュールの機能を活用して、すべてのPowerShellイベントを分析するのに特化したセキュリティログ監視(Log Inspection)ルール「1010002-Microsoft PowerShell Command Execution」を開発しました。これは、さらなる分析を要する重要なイベントを強調表示することもできます。
図7:PowerShellを悪用した攻撃イベントの一例
重要度に応じてイベントに優先順位を付けることは、管理者またはセキュリティオペレーションセンター(SOC)が、どのイベントが目立ち、最も異常を示しているかを確認できるようにする手順の1つです。フィルタ処理されたログから抽出した攻撃の一例(図7)では、 スクリプトブロックが実行されました。これは、明らかな不正実行の兆候がないにもかかわらず、不審なアクティビティとして検知されました。
図8:フィルタ処理されたイベントログ
SequenceNumberやRunspaceIdなどの特定の値を使用して、元のイベントまでイベントを追跡することができます。これにより、MimikatzのPowerShellスクリプトが初めて呼び出された場所が明らかになります。イベントを正しいデータにリンク相関することにより、管理者は、同時に発生した可能性のある周辺イベントを除外しながら、システムに対する実際の攻撃のタイムラインを作成できます。
図9:重要度「高」のイベント
図10:特定のラインイベントで確認されたMimikatzのPowerShellスクリプトを見つける
■難読化に対抗して挙動を監視する
攻撃者が、パラメータ「-enc」または「-EncodedCommand」を利用してPowerShellコマンドレットの難読化を試みることがあります。このコマンドレットは、生成されたイベントからデコード可能です。セキュリティログ監視ルールは、状況に応じて適切にイベントを検出して関連付けます。
図11:難読化されたコマンド
■MITRE ATT&CK
MITRE ATT&CKフレームワークは、サイバー攻撃を解析して分類するセキュリティリサーチャにとって非常に貴重なツールです。このフレームワークは、利用できる膨大な量のデータと研究を通じて、サイバー犯罪集団が実際に利用した攻撃手法を評価するための検証手段として機能し、セキュリティ組織により文書化されたサイバー犯罪集団の不正活動を追跡します。Deep Securityによって生成されたPowerShellイベントは、フレームワークによって定義されると識別された、適正なATT&CK技術に準拠し分類を割り当てることで攻撃分析を支援します。PowerShellイベントの分析で用いられるセキュリティログ監視(Log Inspection)ルールは、MITRE社の「2019年 ATT&CK評価」において、数多くの評価基準で高い評価を得ることができました。この評価は、サイバー犯罪集団「APT 29」の実際に利用した攻撃手法に基づいて実施されました。
図12:提供されているMITRE ATT&CK技術の範囲ン
■結論
PowerShellフレームワークが可能にする機能性により、システム管理タスクが容易になりました。しかしPowerShellは、サイバー犯罪者や諜報集団にも広範な攻撃対象領域を与えることになり得ます。幸いにも、PowerShellを悪用したファイルレスの脅威は、従来型のマルウェアや攻撃手法ほど検出が容易ではない一方で、阻止することが不可能なわけではありません。 PowerShellのような正規ツールや機能を悪用する攻撃は目新しいものではありません。しかし、サイバー犯罪者はファイルレス活動の手口を他の手法と組み合わせることで、さらなる巧妙化に向けた開発を継続させていくことでしょう。
ベンダがリリースした最新のパッチを適用してシステムを更新するなど、「従来からの」ベストプラクティスに準拠することで、ファイルレス活動が他の手法と組み合わされた場合でも対処できます。世代を超えて受け継がれるシグネチャベースのセキュリティ防御および先進のAI(人工知能)や機械学習などの脅威防御技術を融合させたセキュリティ技術による保護対策を講じると同時に、ITマネージャ、意思決定者、および管理者は、すべての従業員のセキュリティ意識・文化を向上させることで、ファイルレス活動に対処できるようになります。
■トレンドマイクロの対策
サーバ向け総合セキュリティ製品「Trend Micro™Deep Security™」は、PowerShellを悪用するファイルレス活動からシステムおよびユーザを保護します。このソリューションは、ネットワークセキュリティ、システムセキュリティ、およびマルウェアの侵入防止対策を提供しています。また、エクスプロイト対策と組み合わせることで、脆弱性を狙うさまざまな脅威からユーザシステムを保護します。Deep Securityは、脆弱性やマルウェア、不正変更などの脅威を検出し、これらの脅威からサーバを保護する包括的なセキュリティソリューションを提供します。
このほかにもトレンドマイクロのセキュリティソリューションを適用することで、PowerShellを悪用する数多くの技術や攻撃手口を防御できます。Trend Micro Apex One™は、さまざまな脅威検出機能を採用しています。「ふるまい検知」は、ファイルレス活動に関連する不正スクリプトやインジェクション、ランサムウェアやメモリ、さらにはWebブラウザからの脅威にも対策を講じることができます。加えて、Apex One Endpoint Sencer™は、イベントを監視し不正アクティビティを伴うプロセスまたはイベントを迅速に検査する事後対処であるEDR(Endpoint Detection and Responce)を提供します。Trend Micro Deep Discovery™の Email Inspectorは、不正な添付ファイルやURLを検出し、企業ユーザを保護します。 Deep Discoveryは、リモートコマンドが物理デスクトップなどのエンドポイントにダウンロードされていなくても、検出できます。
エンドポイントやネットワークも積極的に監視することが重要です。ファイルレスの脅威は、従来型のマルウェアのようにファイルとして確認することはできないかもしれません。しかし、不審なネットワークトラフィック(C&C通信やデータ窃取)など、ITチームやセキュリティチームが注意すべき兆候を残すこともあります。
たとえば、Deep Discovery™ AnalyzerやDeep Security™、OfficeScan™を介してDeep Discovery™に統合されるトレンドマイクロのカスタムサンドボックスは、APIを解釈し、マルウェアの検出回避手法や不正活動を実行するためのコード文字列をチェックできます。
挙動監視を実装することで、マルウェアに関連する異常な動作や不正活動を監視してブロックすることにも役立ちます。 Trend Micro™Security、OfficeScan™、ウイルスバスター ™ビジネスセキュリティサービスなどのTrend Microエンドポイントソリューションにはすべて、スクリプトベースのファイルレスの脅威を検出する動作監視が含まれています。法人向けエンドポイント製品「ウイルスバスター™ コーポレートエディション XG」や中小企業向けのクラウド型エンドポイントセキュリティサービス「ウイルスバスター ビジネスセキュリティサービス」は、不正なファイルを検出し、関連する不正な URL をブロックすることによって、強固な保護を提供します。また、スクリプトベースのファイルレスの脅威を検出する挙動監視機能が含まれています。これにより、企業は不正な挙動を監視し、動作が実行もしくは実行される前にマルウェアをブロックできます。さらにウイルスバスター™ コーポレートエディション XGは、ファイルレスの脅威の媒介として利用されないように、USBや光学ドライブなどのリムーバブルメディアへの不正なアクセスを防ぐデバイスコントロール機能を含めることもできます。
参考記事:
- 「Tracking, Detecting, and Thwarting PowerShell-based Malware and Attacks」
by Anson Joel Pereira
翻訳: 益見 和宏(Core Technology Marketing, Trend Micro™ Research)