China Chopper Webシェルを使用したMicrosoft Exchange Serverに対する攻撃の分析

By

Category: Unit 42

Tags: , , , ,

Conceptual image symbolizing the adversarial relationship between security professionals and threat actors such as Hafnium, whose attacks involving the China Chopper webshell are discussed here

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

概要

最近MicrosoftがMicrosoft Exchange Serverの4つのゼロデイ脆弱性に関するセキュリティ更新プログラムを公開しました。中国政府の支援を受け、国外に向けて活動を行っていると思われる ハッカー集団HAFNIUMが、そうした脆弱性を突いて盛んに攻撃を仕掛け、被害をもたらしているからです。本稿ではそれらの攻撃でドロップされていることが確認されたバックドアChina Chopper Webシェルの概要を説明したいと思います。また、攻撃自体により生成されたメタデータなどのインシデント由来のアーティファクトについても分析していきます。それにより、それらの攻撃の特性と手法について情報を収集し、詳しく把握することができます。

パロアルトネットワークスがどのようにしてこれらの脅威からお客様を保護するのかについては、脅威の評価: Microsoft Exchange Serverにおける4つのゼロデイ脆弱性の悪用が活発化をご覧ください。

China Chopper Webシェルのしくみ

攻撃者はCVE-2021-27065の脆弱性(認証後の任意のファイルの書き込み)を悪用することで、Exchangeオフラインアドレス帳(OAB)のASPXページにコードを簡単に挿入することができます。このページが、挿入されたWebシェルとともにコンパイルされると、攻撃者は他のコードを送り込んでアクセスを広げることができます。China Chopper Webシェルは、PowerShell Set-Oab Virtual Directoryコマンドレットの使用により、これらの攻撃でドロップされることが確認されている軽量ワンライナー スクリプトです。これはサーバーの観点からは比較的シンプルなもので、少なくともFireEyeによる報告のあった2013年以降から攻撃で観測されています。

ここで特に詳しく説明しておきたいのは、China Chopper Webシェルは構成情報を含む既存のOAB ASPXページに挿入されるということです。何千もの侵害があると報告されていることから、インターネットに公開されたオンプレミスExchange Serverは何度もスキャンされているものと想定しておく必要があります。こうした事実が判明し、今週になって何千もの企業が社内のインフラストラクチャに対するこれら攻撃への対処という骨の折れる作業を開始したことが知られるようになると、たちまち攻撃の対象となった可能性のあるOABファイルがVirusTotalにアップロードしはじめました。

着目すべきOAB構成ファイルを具体的に特定するために、私はOAB構成内に存在することが確認されたChina Chopperのテンプレートのいくつかを特定できるような、ちょっとしたYARAルールを作成しました。

参考のため、China Chopper WebシェルがOAB構成(とくにExternalUrlフィールド)内で通常どのように見えるかを以下に示しておきます。

China Chopper WebシェルがOAB構成(とくにExternalUrlフィールド)内で通常どのように見えるか

その他のバリアントについても本稿で説明しますが、最もよく見られるのはこのような形のものです。

2021年3月4日時点では、本脅威と合致する81の異なるサンプルがVirusTotalにアップロードされています。

China Chopperは、FireEyeによる2013年のこのWebシェルの分析に記載されているとおり、技術的には2つの部分、すなわちクライアント部とサーバー部に分かれています。ほとんどのバリアントでは、クライアントは攻撃者が埋め込んだコードをサーバとやりとりしながら、実行前に必ず認証用「キー」を提供します。

上のChina Chopperの例では、キーは NO9BxmCXw0JE です。これにより、他のファイルとは異なる一意の識別子が提供されますが、それだけではありません。

OABアーティファクト

OAB構成には、たくさんの情報が含まれています。たとえば、ファイルの作成日時、最終変更日時、Exchangeのバージョン、その他のさまざまなサーバー固有の関連データポイントなどです。これらの情報により、私たちは攻撃について新たな観点から詳しく検証し、そこで展開されている攻撃キャンペーンについてより的確に把握することができます。

2021年3月2日にVolexityが公開したブログ「Operation Exchange Marauder: Active Exploitation of Multiple Zero-Day Microsoft Exchange Vulnerabilities」で、Exchange Serverに対する攻撃についての初めての詳しい見解が示されています。ただし私たちは、2021年1月5日にTwitterのユーザー@orange_8361 (Orange Tsai)がベンダに対する事前認証されたリモートコード実行(RCE)チェーンについて報告したことをツイートしていたことを把握しています。Microsoftは、同脆弱性への対応で公開された多数のCVEでこのユーザーの功績を認めています。上述の2日で、私たちは分析のための基本的な参照情報を得ることができました。攻撃による被害が起きていたことをMicrosoftがいつ把握したのかがわかったからです。

China Chopper Webシェル全体で使用されているキーを確認したところ、一意のキー値がそれぞれ以下の一覧に示す回数だけ使用されていたことがわかりました。注目すべきは、このWebシェルの、類似のキーを持たないC#バリアントです。また、Webシェルをまったく含まず、使用可能なキーは含むバリアントも2つあります。さらに、Base64でエンコードされた非ASCIIバイトの文字列もあります。

前述の通り、2つのキー f34fji34r209ur29ur92rudsfg にはWebシェルはまったく含まれていません。その代わりある値が挿入されていました。その値はキーとほほ同じに見えますが、さらにコードを実行するために必要な実際のWebシェルのコードが含まれていません。以下に例を示します。上記のWebシェルと比べてみてください。

ExternalURL 2

時間的なデータポイントのいくつかを見てみると、特にOABファイルのDateModifiedの時刻に関してはほぼ全日にわたりこれらの「キー」が使用されている日付が他のすべてのキーの日付よりも前であることがわかります。Webシェルがないのでこれらのキーは試験的に実行された可能性もあります。実際、それらのキーは後から同じサーバーを完全なWebシェルで侵害する他のキーと重なっている部分もあります。

DateModified WebShellKey OriginatingServer
2/27/2021 13:45:30 f34fji34r209ur29ur92ru NS1[…]net
2/27/2021 16:20:49 f34fji34r209ur29ur92ru DC1[…]LOC
2/27/2021 19:11:07 f34fji34r209ur29ur92ru FIT[…]cal
2/28/2021 0:04:23 f34fji34r209ur29ur92ru V-T[…]com
2/28/2021 1:41:07 f34fji34r209ur29ur92ru DC-[…]net
2/28/2021 3:51:56 f34fji34r209ur29ur92ru MBD[…]org
2/28/2021 10:15:00 NO9BxmCXw0JE DC[…]net
2/28/2021 10:33:14 NO9BxmCXw0JE FIT[…]cal
2/28/2021 10:36:44 orange JTA[…]cal

現在VirusTotalで得られる情報から判断する限り、上記の NO9* キーはこれまでのところ最も広く使用されており、この件に関する調査結果のほとんどで確認されています。このキーは、一覧に示した他の5つのキーとパターンは同じです。これらのキーは相互に関連性があるものと考えられています。大文字と小文字が混ざった12文字ちょうどのランダムな英数字文字列を使用するという特徴があるからです。

このグループでは、 NO9*EiH* の2つのキーだけがOABファイルで確認されています。日付は3月2日のVolexityのブログよりも早くなっています。また、興味深いのは、以下の表で赤字で示したとおり、これらの一意のOABファイルに記述された変更日の日時が非常に近いことです。

DateModified WebShellKey OriginatingServer
2/28/2021 10:15:00 NO9BxmCXw0JE DC-[…]net
2/28/2021 10:33:14 NO9BxmCXw0JE FIT[…]cal
2/28/2021 10:44:24 NO9BxmCXw0JE NS1[…]net
2/28/2021 11:01:52 NO9BxmCXw0JE DC2[…]LOC
2/28/2021 11:03:12 EiH4yV2WGYgc DFC[…]com
2/28/2021 12:44:40 NO9BxmCXw0JE WP-[…]cal
2/28/2021 16:46:21 NO9BxmCXw0JE tcs[…]cal
3/1/2021 6:29:17 NO9BxmCXw0JE mar[…]cal
3/1/2021 7:40:44 NO9BxmCXw0JE cow[…]cal
3/1/2021 12:01:14 NO9BxmCXw0JE MM1[…]pvt
3/1/2021 12:16:38 NO9BxmCXw0JE NCR[…]cal
3/1/2021 13:46:04 NO9BxmCXw0JE a-p[…]com
3/1/2021 3:39:49 PM NO9BxmCXw0JE grr[…]cal
3/1/2021 16:25:57 NO9BxmCXw0JE DC2[…]LOC
3/1/2021 16:42:10 NO9BxmCXw0JE VCC[…]org
3/1/2021 19:28:28 NO9BxmCXw0JE NS1[…]net
3/1/2021 21:32:42 NO9BxmCXw0JE DC0[…]cal
3/1/2021 21:53:34 NO9BxmCXw0JE thi[…]cal

2021年2月28日と2021年3月1日の2回にわたり、大量の攻撃イベントが発生しました。いずれも、脆弱性が公開されたことがニュースになる前のことでした。UTCでの攻撃イベントのタイミングを見てみると、いくつかの侵害は NO9*EiH* の2つのキーを使用してほんの数分も置かずに発生しており、関連のあるものであることがわかります。このタイミングは、注目に値します。これらのWebシェルが一昼夜のうちに急速に広まり、対象を定めて自動的に攻撃を仕掛けていたことがわかるからです。サンプルが増えるにつれ、タイムラインの全貌がよく見えてきました。

6つのキーのデータ ポイントについて引き続き掘り下げいきましょう。私たちは、OriginatingServerの値に基づいて、投資銀行、小規模カーディーラー、水貯蔵施設、産業オートメーション、法律事務所、サービス業などの広範にわたる事業から攻撃対象を推測して割り出すことができます。攻撃対象の業界が多岐にわたるらしいことから、これは特定の業界や企業を狙った計画な攻撃ではなく、相手に日和見的に攻撃を仕掛けることのできる自動スキャンを利用した攻撃であると考えられます。

自動スキャンを利用していると考えられる証拠がもう1つだけあります。構成が同じでも変更時刻が異なり、一意のハッシュが作成されたOABファイルが複数あるのです。OriginatingServerのデータポイントの2つのサーバーを見てみると、以下のように、一度侵害された後にまったく同じWebシェルとキーで再度侵害されていることがわかります。これは、攻撃者が侵害したシステムがスキャンとエクスプロイトのプロセスではまだチェックされていないことを示しています。

DateModified WebShellKey OriginatingServer
3/1/2021 21:32:42 NO9BxmCXw0JE DC0[…]cal
3/2/2021 16:57:12 NO9BxmCXw0JE DC0[…]cal
2/28/2021 11:01:52 NO9BxmCXw0JE DC2[…]LOC
3/1/2021 16:25:57 NO9BxmCXw0JE DC2[…]LOC

すでに説明したパターンと一致しなかったキーに目を向けてみると、彼らが他のグループのキーと同じサーバーの侵害を、あらゆる調査、概念実証(PoC)、そしてCVEが次々と実施または付与され始めた後になって開始したことがわかります。そのため私たちは、こうした攻撃の裏で複数の異なる攻撃グループが糸を引いていると確信するに至ったのです。

DateModified WebShellKey OriginatingServer
3/1/2021 6:29:17 NO9BxmCXw0JE mar[…]cal
3/2/2021 7:03:15 NO9BxmCXw0JE mar[…]cal
3/3/2021 15:19:46 Ananas mar[…]cal
2/28/2021 10:44:24 NO9BxmCXw0JE NS1[…]net
3/1/2021 19:28:28 NO9BxmCXw0JE NS1[…]net
3/3/2021 6:46:16 Q4IDLjknOZJr NS1[…]net
3/3/2021 6:52:08 klk123456 NS1[…]net

次の説明に進む前に、Volexityが情報を公開する前に確認された3つの奇妙なキーに注目してみましょう。これらのキーは、 NO9* キーで見たパターンとは一致していませんが、タイミングが非常に似ています。これは、他のデータ ポイントとともに、これらのキーがテストまたは非自動の手動攻撃に使用されたことを示しているように思われます。

1つ目のキーは orange です。これらの公開されたOABファイルで orangeのキーを使用した侵害として最初に確認されたものは、2月28日の NO9*キーを使用した2つの侵害の前後数分のうちに発生していました。このキーは3月1日の、前述の攻撃が確認される2時間前に発生した大量の攻撃イベントでも使用されていました。

28FEB2021

DateModified WebShellKey OriginatingServer
2/28/2021 10:33:14 NO9BxmCXw0JE FIT[…]cal
2/28/2021 10:36:44 orange JTA[…]cal
2/28/2021 10:44:24 NO9BxmCXw0JE NS1[…]net

01MAR2021

DateModified WebShellKey OriginatingServer
3/1/2021 4:25:25 orange Exc[…]CAL
3/1/2021 6:29:17 NO9BxmCXw0JE mar[…]cal
3/1/2021 7:40:44 NO9BxmCXw0JE cow[…]cal

2つ目と3つ目のキーは、 op という簡単な名前のものです。これらのキーは、どちらも短い名前であるために目立つだけでなく、Webシェルで異なった構造を使用しており、脆弱性が公開される前から、医療機関や何らかのベトナム政府に関連する組織を狙っていたように思われます。

HAFNIUMに関するMicrosoftブログでは、構造こそ異なるものの、やはりパラメータ値 pを使用するHAFNIUMがドロップしたWebシェルについて説明しています。同社のブログに表示されているWebシェルのスクリーンショットをOABファイルで観測したサンプルとともにこちらに転記したのが以下です。

ExternalURL

ExternalURL

Request.Formパラメータ値 pや、他の値に見られる1文字を使用する手法には注目すべき類似点があります。ただし、このこと自体は、HAFNIUMとのつながりを必ずしも確認するものではありません。

OABファイルにある opのキーは、別々の日に同じシステムを狙っていたと見ることができます。

DateModified WebShellKey OriginatingServer
2/28/2021 11:57:01 o ad2[…].vn
3/3/2021 7:58:20 p ad2[…].vn

さらに、私たちは、パターン化された6つの一連のキーと oのキーによる侵害が非常に近い時刻に発生していることも確認できました。これは、それらのキーに関連性がある可能性があることを示しています。

DateModified WebShellKey OriginatingServer
2/28/2021 11:03:12 AM EiH4yV2WGYgc DFC[…]com
2/28/2021 11:57:01 AM o ad2[…].vn
2/28/2021 12:44:40 PM NO9BxmCXw0JE WP-[…]cal

さらに、ボリュームの多さが目立つキーが2つあります。これまでに説明してきた他のキーと同様に、 klk123456Ananas のいずれのキーも、重複して発生した侵害で使用されていたことが確認されています。これは、それらの侵害が自動スキャンによるものであるか、すでにスキャン サービスにより相関付けられた何らかのリストを使用したものであることを意味しています。

DateModified WebShellKey OriginatingServer
3/3/2021 4:34:20 klk123456 Bed[…]com
3/3/2021 6:52:08 klk123456 NS1[…]net
3/3/2021 6:55:34 klk123456 Fil[…]cal
3/3/2021 7:26:29 klk123456 mna[…]com
3/3/2021 7:35:48 Ananas ric[…]org
3/3/2021 7:45:40 Ananas ADA[…]cal
3/3/2021 7:47:15 klk123456 PSL[…]cal
3/3/2021 10:43:51 klk123456 CHG[…]SYS
3/3/2021 11:02:09 klk123456 TRD[…]com
3/3/2021 14:35:40 Ananas jus[…].nl
3/3/2021 14:50:18 Ananas asi[…]com
3/3/2021 14:51:13 Ananas Bed[…]com
3/3/2021 15:19:46 Ananas mar[…]cal
3/3/2021 16:16:21 Ananas V-T[…]com
3/3/2021 16:40:03 Ananas FHM[…]org

これら一連のイベントは、公開情報を非常に迅速に兵器化し、他の攻撃者よりも早くExchange Serverへの攻撃を開始できた脅威攻撃者と関連したものである可能性があります。

他のキーを使う侵害は相互に無関係なようで、修正プログラム、調査、PoCコードに容易にアクセス可能となった後で発生しています。

China Chopper Webシェルのバリエーション

OABファイルで確認された、最も広まったChina Chopper Webシェルのことを思い出してみましょう。

ExternalURL 5

Twitterのユーザー@mickeyftntは、私がVirusTotalで散々見てきた http://f/ とは異なるパターンを使用したバリアントを見つけたことを知らせてくれました。このバリアントは http://g/ を使用しており、 eval メソッド呼び出しの後にスペースを含んでいました。Microsoftは、ExternalUrlパラメータは「ファイアウォールの外部から仮想ディレクトリに接続するために使用されるURLを指定するものである」と述べています。そのため私たちは、正当なファイルでは、それが解決可能なドメインであっても、インジェクション攻撃を機能させるためには先頭の http が値として受け入れられる必要があるのではないかと推測することができました。URLのこの部分は実際に攻撃を行う上で意味のあるものではなく、動作にも影響しませんが、 http://f/ は、明らかにHafniumによるものではなくても、ほとんどの攻撃で広く使用されています。 http://g/ バリアントはそれ自体が、注目する価値のありそうな他のアーティファクトと同様に、私の興味をそそるものでした。すでにここで説明した以外のパターンは見つかっていないとしてもです。

ExternalURL 6べつのTwitterユーザー@krausedwは、特定のセキュリティ対策の回避を試みるために unsafe という単語を分割しているサンプルと、スクリプト言語を明示的にコールアウトするC#サンプルの存在を気付かせてくれました。

JScript unsafe

ExternalURL 7

C#

ExternalURL 8

最後に、Base64文字列をキーとして使用するバリアントがあります。

Base64

ExternalURL 9

結論

私たちはOAB構成で見つかったアーティファクトを利用することで、ほんの数個のサンプルの分析に基づいて、小さな情報などの断片から攻撃活動の全体像をつかむことができました。これらの脆弱性を利用する攻撃グループが多数あり、それぞれに大規模スキャンやサービスを利用してが同一システムを標的にしうるということは明らかなようです。最後に、ドロップされるコードのバリエーションは複数あり、攻撃が繰り返し行われていることを示唆している可能性があります。情報やファイルがさらに提供された場合はこの分析結果を見直す必要があるかもしれませんが、現時点でも、イベントのクラスタとともに、いつ、どのようにして、どんな攻撃がどのぐらいの頻度で行われてきたのかについて理解できる程度には十分な関連が見えてきています。

追加資料