脆弱性

攻撃者によるMicrosoft Exchange Serverの脆弱性悪用で Cortex XDRが認証情報の収集を防止

Clock Icon 2 min read

This post is also available in: English (英語)

概要

最近発見・修正されたMicrosoft Exchangeの脆弱性(CVE-2021-26855CVE-2021-26857CVE-2021-26858CVE-2021-27065)は、その悪用数の多さとそこから組織が被る影響の深刻さから高い注目を集めています。2021年3月6日、未知の攻撃者がMicrosoft Exchange Serverの脆弱性を悪用し、EMEA(ヨーロッパ、中東、アフリカ)地域の金融機関のサーバーにWebシェルをインストールしました。私たちは当該Webシェル自体にはアクセスできませんでしたがこれはおそらくChina ChopperサーバーサイドJScriptの亜種の1つであったものと思われます。

2021年3月12日、Webシェルのインストールから6日後、アクターはインストールされたWebシェルを使ってPowerShellコマンドを実行し、ローカルサーバーとActive Directoryから情報を収集して侵害したExchangeサーバーから認証情報を窃取しました。次にアクターは、インターネットインフォメーションサービス(IIS)サーバーがインターネットに公開しているフォルダ内にキャビネットファイルを作成し、そのなかに情報収集と認証情報の収集に関連するファイルを圧縮しました。2021年3月12日と13日、アクターは直接それらのファイルの場所にアクセスしてこれらのキャビネットファイルを窃取しようとしました。

私たちは、インストールされたWebシェルを介してコマンドの実行を行うインバウンドリクエストのIPアドレスと、結果ファイルのダウンロードをリクエストするIPアドレスを分析しました。観測されたIPアドレスはいずれもアクター所有のインフラストラクチャではないようで、おそらくはフリーのプロキシやVPN、侵害されたサーバーを選んで使っていた可能性があります。ログに表示されたIPアドレスからは、さらなるアクティビティをピボット検索するための足がかりは得られませんでした。

Unit 42のアナリストは、アクターがWebシェルとの対話を自動化し、そこで2つの異なるPowerShellスクリプトを実行しているものと考えています。Webシェルを介して実行された2つのPowerShellスクリプトは3秒間隔で発行されており、2つの異なるインバウンドIPアドレスを持っていました。この自動化には、アクティビティの分析や相関がされにくいように、IPアドレスの意図的な切り替え処理も含まれているようです。こうした自動化は、攻撃者がもっと大きな攻撃キャンペーンの一部としてこの特定の攻撃を実行していたことをうかがわせます。

さいわいこのEMEAの金融機関でのアクターによる認証情報収集試行は、LSASSプロセスからメモリダンプをダウンロードするインバウンドリクエストが失敗したことから不首尾に終わりました。このExchangeサーバーには、追加の保護措置としてパスワードの窃取を防止するモジュールを有効にしたCortex XDRがインストールされていました。このため、ダンプされたメモリからはアクターの欲しがる認証情報へのポインタは削除されていました。ですのでたとえファイルのダウンロードが正常にできていたとしてもメモリダンプからMimikatzを使って容易に認証情報を抽出することはできなかったことになります。

このインシデントは、単一のアクターか、一般的なツールセットを使う複数のアクターが実行した大規模キャンペーンの1インシデントにすぎなかったようです。Unit 42はアクターがこのインシデントで使用したWebシェルと共通の属性を複数持ち、同様の振る舞いをする177個のWebシェルを検出しました。これら関連するWebシェルによる影響を受けた組織は、さまざまな業界や地理上の場所にわたっていました。これはこのインシデントに関連したアクターが日和見的であり、きまった標的のリストは持たず、スキャンをして侵害するExchangeサーバーを見つけている可能性が高いことを示しています。

パロアルトネットワークスのお客様は、脅威防御URLフィルタリングの各セキュリティサブスクリプションを有効にした次世代ファイアウォールと、Cortex XDRCortex XSOARによりMicrosoft Exchange Serverへの攻撃から保護されています。

Webシェルアクティビティ

2021年3月11日と12日、Unit 42は6つの異なる組織のMicrosoft Exchangeサーバー上のWebシェルとやりとりするアクターを観測しました。これらの攻撃におけるアクターのアクティビティを理解するために、侵害されたExchangeサーバーの1つからのインターネットインフォメーションサービス(IIS)ログを分析しました。これにより、WebシェルへのインバウンドWebリクエストと、生成された関連プロセスのアクティビティを観測することができました。これらのログのタイムスタンプを使用して、この特定のアクターとインシデントに関連するアクティビティのタイムラインを作成しました。これをこの分析の残りの部分で「攻撃」と呼びます。図1は、2021年3月6日のアクティビティの開始から始まるタイムラインを示しています。ここに示されているように、2021年3月12日のエクスプロイト後のアクティビティ開始までには6日間の空白があります。

このタイムラインは、2021年3月6日に観察されたアクティビティの開始から、最終的に認証情報収集の試みが失敗するまでの過程で、Exchange Serverに関連付けられたアクターのアクティビティを追跡したものです。
図1 Exchangeサーバーに関連付けられたアクターのアクティビティのタイムライン

ログによると、このアクターは2021年3月6日02:38:16にWebシェルをExchangeサーバーのC:\inetpub\wwwroot\aspnet_client\supp0rt.aspxに保存することでインストールしていました。インストールされたWebシェルへのパスはIISサーバーのルートディレクトリ内に存在しています。このルートディレクトリが、/aspnet_client/supp0rt.aspxにアクセスする訪問者にWebシェルを提供します。なお/aspnet_client/supp0rt.aspxというURLはこの攻撃に特有のものではなく、Unit 42が以前「Microsoft Exchange Serverを標的とした最近の攻撃の捜索」というブログで述べたように、Exchange関連の多くの攻撃でWebシェルにこのURLの使用が確認されています。最近のCISAレポートによると、Exchange関連の攻撃で使用されたsupp0rt.aspxは、「ExternalUrl」フィールドにWebシェルの追加されたオフラインアドレスブック(OAB)構成ファイルでした。

JScript

私たちはこの特定の攻撃で使用されたsupp0rt.aspxファイルにはアクセスできませんでしたが、同様の機能を含む177個のsupp0rt.aspxファイルを分析することができました。分析された各ファイルにはChina ChopperのサーバーサイドJScriptが含まれていました。このJScriptは、英数字32文字からなる名前をもつ一意なパラメータ内で提供されるコードを評価するものです。たとえば次のコードはsupp0rt.aspx Webシェルから抽出したもので、54242e9b610a7ca15024a784969c9e0dというパラメータ内でアクターが提供したコードを実行します。

この攻撃では、アクターがsupp0rt.aspxWebシェルに対し、実行するコードを6b83ccc96b4abd4cea1c7c607688a8adという名前の付いたパラメータ内で提供している様子が観測されました。先に見たとおり、私たちは高い確度でアクターがこれらの攻撃で同じWebシェルコードを使用したものと確信しています。そのさいは、パラメータ54242e9b610a7ca15024a784969c9e0dのところでかわりのパラメータ6b83ccc96b4abd4cea1c7c607688a8adを使っていたものと考えています。たしかにChina ChopperのサーバーサイドJScriptはオンラインで簡単に入手可能ですが、同じWebシェルの組み合わせを使っていること、supp0rt.aspxというファイル名、それにPowerShellコードを実行するのにランダムな32文字の英数字からなるパラメータ名を使っていること、これらから考えて、背後にいるのは同一のアクターであるか、同じツールを使う複数のアクターであることが示唆されます。

アクターがサーバーを悪用してWebシェルをインストールするために使用したIPアドレスは正確にはわかっていません。これは、supp0rt.aspxファイルがディスクに書き込まれてから1分以内に、Exchangeの脆弱性を悪用しようとする/ecp/program.jsへの成功したHTTP POSTリクエストが複数あったためです。パス/ecp/program.jsはこの攻撃に特有のものではないようで、他のセキュリティリサーチャーもExchange Serverを悪用するためにこのパスが使われていることを確認していると述べています(CVE-2021-26855)。成功したすべてのリクエストはUser-AgentとしてExchangeServicesClient/0.0.0.0を使用していました。また、送信元IPアドレスは以下のものでした。

  • 156.194.127[.]178
  • 112.160.243[.]172
  • 221.179.87[.]175
  • 73.184.77[.]174
  • 41.237.156[.]15
  • 223.16.210[.]90
  • 63.76.255[.]110
  • 218.103.234[.]104
  • 83.110.215[.]7

数日間は活動が見られませんでしたが、2021年3月12日2:35:27にアクターは121.150.12[.]35から最初にWebシェルにアクセスし、/aspnet_client/supp0rt.aspxに移動しました。HTTPリクエストには、6b83ccc96b4abd4cea1c7c607688a8adというラベルの付いたパラメータが含まれていました。このパラメータにはWebシェルがデコードして実行するbase64エンコードされたPowerShellスクリプトが含まれていました。次のスクリプトは、実行中のプロセスを一覧表示し、文字列oamoisjmdoと文字列sodknousfnfdkljとの間の挟んでリストを返します。
Jscript2
アクターは実行中のプロセスを列挙してLocal Security Authority Subsystem Service(LSASS)プロセスのプロセスID(PID)を見つけようとしました。メモリをダンプして認証情報を収集するためです。アクターは、6b83ccc96b4abd4cea1c7c607688a8adパラメータ内にある/aspnet_client/supp0rt.aspxにある同じWebシェルにアップロードされた2番目のPowerShellスクリプト内でLSASSのPID(584。後の例を参照)を使用します。アクターは、2021年3月12日2:35:30、最初のPowerShellから3秒後に2番目のPowerShellをWebシェルにアップロードし、その後164.68.156[.]31にIPアドレスを切り替えたようです。Webシェルへの2つのインバウンドリクエスト間隔が短く、IPアドレスを切り替えていることから、アクターはこのプロセスをある程度自動化しているものと考えられます。Unit 42は、アクターがWebシェルとのやりとりを自動化してオペレーションをスケーリングし、侵害済みExchangeサーバーの長いリストに対してエクスプロイト後のアクティビティをしかけられるようにしていたと考えています。2番目のPowerShellスクリプトには、バッチスクリプトをサーバー上のtest.batに保存する次の内容が含まれていました。その後、cmd.exeプロセスを生成してこれが実行されます。
jscript3
このtest.batというバッチスクリプトは、次の4つのコマンドを実行しようとします。これらのコマンドでは実質上、comsvcs.dllでLSASSのメモリをダンプし、dsqueryでネットワーク上のユーザーに関するより多くのコンテキスト情報を取得し、makecabで前の2つの漏出用コマンドの結果からキャビネットファイルを作成しています。

Jscript4
数時間後の2021年3月12日10:07:09、アクターはIPアドレスを45.77.140[.]214に変更し、dsqueryコマンドの結果が含まれるキャビネットファイルf4[●●●●]9b.dmp.zipを正常にダウンロードしたようです。User-AgentがMozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Geckoであることから、アクターはWindows 7システムのInternet Explorer 11ブラウザで正しいURLにアクセスしてこのキャビネットファイルをダウンロードしたようです。私たちがf4[●●●●]9b.dmp.zipファイルを確認したところ、この中には、f4[●●●●]9b.tmpファイルが含まれていることがわかりましたがこのファイルは空でした。これはつまりバッチスクリプトによって実行されたdsqueryコマンドは、Active Directoryからユーザー情報をうまく収集できなかったということを示しています。

その1秒後の2021年3月12日10:07:10、アクターは45.77.140[.]214から/aspnet_client/f4[●●●●]9b1.dmp.zipに対してGETリクエストを出してLASSのメモリダンプを含むキャビネットファイルをダウンロードしようとしましたが、サーバーは「404 Not Found」エラーで応答しました。アクターは2021年3月12日17:35:15まで継続してこのファイルのダウンロードを試みました。ここで、2021年3月13日の05:40:05と05:40:06にファイルのダウンロードをさらに2回リクエストされるまでの間、アクティビティが中断されました。キャビネットファイルをダウンロードするすべてのリクエストには同じ404エラーメッセージが返っていました。

それから20分も経たない2021年3月13日06:02:04、アクターは再びIPアドレスを変更し(今回は78.141.218[.]225)、さらにこのキャビネットファイルのダウンロードを試みました。アクターは2021年3月13日16:33:03までこの試行を続け、合計33回のリクエストを発行し、そのすべてにHTTP 404 応答が返されました。

私たちはf4[●●●●]9b1.dmpファイルを確認しました。確かにこのファイルにはLSASSプロセスのメモリ内容が含まれていましたが、Mimikatzを使用して認証情報をダンプすることはできませんでした。このExchangeサーバーでは、パスワード取得防止モジュール(Password Theft Protection)を有効にしたCortex XDRを稼働しており、このためにダンプファイルから認証情報へのポインタが削除されていたことが分かりました。つまり、アクターがメモリダンプを含むキャビネットファイルf4[●●●●]9b1.dmp.zipを正常にダウンロードできていたとしても、組織にさらに被害を与えるべく追加のアクティビティを行うのであれば必要となる認証情報は、Mimikatzを使って抽出することができなかったことになります。

結論

Microsoft Exchange Serverの最近の脆弱性に対し、大規模な悪用が横行しています。組織がサーバーにすばやくパッチを適用しようとする一方で、攻撃者はチャンスがあるうちは悪用しようとしています。Unit 42は、さまざまなアクターがこれらの脆弱性を使用して多種多様なWebシェルをインストールし、侵害したExchangeサーバーを侵入口として、Exchangeサーバーやそのネットワーク上でさらなるアクティビティを実行しようとする様子を観測してきました。

EMEA地域の金融機関に対するあるインシデントでは、攻撃者がWebシェルをインストールし、自動化のアプローチでWebシェルとやりとりし、情報を収集し、侵害されたサーバーから認証情報をダンプする様子を観測しました。さいわいこのインシデントでは、被害組織がCortex XDRをインストールしてパスワード取得防止モジュールを有効にしていたために、アクターが認証情報収集用に取得しようとしたメモリダンプからは認証情報のハッシュへのポインタが削除されていました。このためMimikatz を使ってアクターが認証情報をダンプすることはできなくなりました。

Unit 42 ブログ「脅威の評価: Microsoft Exchange Serverにおける4つのゼロデイ脆弱性の悪用が活発化」で説明したとおり、パロアルトネットワークスのお客様は、製品エコシステム全体でMicrosoft Exchange Serverへの攻撃から保護されています。また、本攻撃に特化した保護を次の製品やサブスクリプションに展開済みです。

  • 次世代ファイアウォール
    • 脅威防御(4つの脆弱性を検出するContent Pack 8380を展開)
    • URLフィルタリング
  • Cortex XDR 7.3.1
  • Cortex XSOAR

追加資料

IoC

  • 156.194.127[.]178
  • 112.160.243[.]172
  • 221.179.87[.]175
  • 73.184.77[.]174
  • 41.237.156[.]15
  • 223.16.210[.]90
  • 63.76.255[.]110
  • 218.103.234[.]104
  • 83.110.215[.]7
  • 121.150.12[.]35
  • 164.68.156[.]31
  • 45.77.140[.]214
  • 78.141.218[.]225

TTP(戦術、技術、および手順)

テクニック(ID) テクニックID 説明
Exploit Public-Facing Application(インターネットに公開されたアプリケーションの悪用) T1190 アクターがMicrosoft Exchangeの脆弱性を悪用
Server Software Component: Web Shell(サーバーソフトウェアコンポーネント: Webシェル) T1505.003 アクターが侵害したExchangeサーバーへWebシェルをインストール
Data Encoding: Standard Encoding(データエンコーディング: 標準エンコーディング) T1132.001 アクターが実行用base64エンコードスクリプトをWebシェルへ発行
Automated Collection(自動化された収集) T1119 アクターがバッチスクリプトを使い情報を収集しLSASSのメモリをダンプ
Data from Local System(ローカルシステムからのデータ) T1005 アクターが実行中のプロセスを収集しLSASSのプロセスID(PID)を発見
Account Discovery: Domain Account(アカウントの探索: ドメインアカウント) T1087.002 アクターが「dsquery」でActive Directory、特にユーザーアカウントから情報を収集
OS Credential Dumping: LSASS Memory(OS認証情報のダンプ: LSASSメモリ) T1003.001 アクターが「comsvc.dll」内のMiniDump関数を使用してLSASSのメモリをダンプして認証情報をダンプ
Archive Collected Data: Archive via Utility(収集データのアーカイブ: ユーティリティによるアーカイブ) T1560.001 アクターが「makecab」ユーティリティを使用し漏出前にファイルを圧縮
Data Staged: Local Data Staging(ステージングされたデータ: ローカルデータステージング) T1074.001 アクターが漏出用ファイルをc:\inetpub\wwwroot\aspnet_client\に保存しブラウザを介してリモートからダウンロード

更新履歴

  • 2021-04-30 英語版の更新を反映しました。
Enlarged Image