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ルールを作成しました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
rule webshell_chinachopper_oab { meta: author = "Jeff White (Palo Alto Networks) @noottrak" date = "02MAR2021" hash01 = "e8ea17cd1de6d3389c792cce8c0ff1927a6386f0ef32ab0b097763de1f86ffc8" hash02 = "34f9944a85ffba58f3fa60c5dc32da1ce6743dae261e1820ef6c419808757112" hash03 = "55fbfab29f9d2c26f81f1ff901af838110d7f76acc81f14b791a8903aa8b8425" hash04 = "6e75bbcdd22ec9df1c7796e381a83f88e3ae82f5698c6b31b64d8f11e9cfd867" strings: // OABファイルを検出 $OAB01 = "ExternalUrl" ascii // Contains webshell $OAB02 = "InternalUrl" ascii $OAB03 = "ExchangeVersion" ascii $OAB04 = "WhenChangedUTC" ascii // 挿入されたURLのバリアントを検出 $HTTP01 = "http://f/" ascii nocase $HTTP02 = "http://g/" ascii nocase $HTTP03 = "http://p/" ascii nocase // China Chopperのバリアントを検出 $websh01 = "<script language=\"JScript\"" ascii nocase $websh02 = "<script language=\"c#\"" ascii nocase $websh03 = "<script runat=\"server\"" ascii nocase // Webシェルのアンカーを検出 $cc01 = "Request" ascii nocase $cc02 = "Page_Load" ascii nocase // 挿入されたパターン(Webシェルではない)を検出 $non = /http:\/\/[a-z]\/[a-z0-9]+/ condition: (all of ($OAB*) and 1 of ($HTTP*) and 1 of ($websh*) and all of ($cc*)) or (all of ($OAB*) and $non) } |
参考のため、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バイトの文字列もあります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
29 NO9BxmCXw0JE 11 Ananas 8 klk123456 7 orange 6 No Key - f34fji34r209ur29ur92ru 4 p 4 gttkomomo 2 No Key - dsfg 1 rxDg52fHL9GW 1 q3v98mBat1zj 1 passnew 1 o 1 fpm_admin 1 Q4IDLjknOZJr 1 FhsrvqjnYASe 1 EiH4yV2WGYgc 1 No Key - C# 1 3d55db3b2f88ae47b24ae7796f0cd916 |
前述の通り、2つのキー f34fji34r209ur29ur92ru と dsfg にはWebシェルはまったく含まれていません。その代わりある値が挿入されていました。その値はキーとほほ同じに見えますが、さらにコードを実行するために必要な実際のWebシェルのコードが含まれていません。以下に例を示します。上記のWebシェルと比べてみてください。
時間的なデータポイントのいくつかを見てみると、特に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文字ちょうどのランダムな英数字文字列を使用するという特徴があるからです。
1 2 3 4 5 6 |
NO9BxmCXw0JE rxDg52fHL9GW q3v98mBat1zj Q4IDLjknOZJr FhsrvqjnYASe EiH4yV2WGYgc |
このグループでは、 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つ目のキーは、 o と p という簡単な名前のものです。これらのキーは、どちらも短い名前であるために目立つだけでなく、Webシェルで異なった構造を使用しており、脆弱性が公開される前から、医療機関や何らかのベトナム政府に関連する組織を狙っていたように思われます。
HAFNIUMに関するMicrosoftブログでは、構造こそ異なるものの、やはりパラメータ値 pを使用するHAFNIUMがドロップしたWebシェルについて説明しています。同社のブログに表示されているWebシェルのスクリーンショットをOABファイルで観測したサンプルとともにこちらに転記したのが以下です。
Request.Formパラメータ値 pや、他の値に見られる1文字を使用する手法には注目すべき類似点があります。ただし、このこと自体は、HAFNIUMとのつながりを必ずしも確認するものではありません。
OABファイルにある oと pのキーは、別々の日に同じシステムを狙っていたと見ることができます。
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つあります。これまでに説明してきた他のキーと同様に、 klk123456 と Ananas のいずれのキーも、重複して発生した侵害で使用されていたことが確認されています。これは、それらの侵害が自動スキャンによるものであるか、すでにスキャン サービスにより相関付けられた何らかのリストを使用したものであることを意味しています。
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シェルのことを思い出してみましょう。
Twitterのユーザー@mickeyftntは、私がVirusTotalで散々見てきた http://f/ とは異なるパターンを使用したバリアントを見つけたことを知らせてくれました。このバリアントは http://g/ を使用しており、 eval メソッド呼び出しの後にスペースを含んでいました。Microsoftは、ExternalUrlパラメータは「ファイアウォールの外部から仮想ディレクトリに接続するために使用されるURLを指定するものである」と述べています。そのため私たちは、正当なファイルでは、それが解決可能なドメインであっても、インジェクション攻撃を機能させるためには先頭の http が値として受け入れられる必要があるのではないかと推測することができました。URLのこの部分は実際に攻撃を行う上で意味のあるものではなく、動作にも影響しませんが、 http://f/ は、明らかにHafniumによるものではなくても、ほとんどの攻撃で広く使用されています。 http://g/ バリアントはそれ自体が、注目する価値のありそうな他のアーティファクトと同様に、私の興味をそそるものでした。すでにここで説明した以外のパターンは見つかっていないとしてもです。
べつのTwitterユーザー@krausedwは、特定のセキュリティ対策の回避を試みるために unsafe という単語を分割しているサンプルと、スクリプト言語を明示的にコールアウトするC#サンプルの存在を気付かせてくれました。
JScript unsafe
C#
最後に、Base64文字列をキーとして使用するバリアントがあります。
Base64
結論
私たちはOAB構成で見つかったアーティファクトを利用することで、ほんの数個のサンプルの分析に基づいて、小さな情報などの断片から攻撃活動の全体像をつかむことができました。これらの脆弱性を利用する攻撃グループが多数あり、それぞれに大規模スキャンやサービスを利用してが同一システムを標的にしうるということは明らかなようです。最後に、ドロップされるコードのバリエーションは複数あり、攻撃が繰り返し行われていることを示唆している可能性があります。情報やファイルがさらに提供された場合はこの分析結果を見直す必要があるかもしれませんが、現時点でも、イベントのクラスタとともに、いつ、どのようにして、どんな攻撃がどのぐらいの頻度で行われてきたのかについて理解できる程度には十分な関連が見えてきています。
追加資料
- 脅威の評価: Microsoft Exchange Serverにおける4つのゼロデイ脆弱性の悪用が活発化
- Microsoft Exchange Serverを標的とした最近の攻撃の捜索
- HAFNIUM targeting Exchange Servers with 0-day exploits
- Operation Exchange Marauder: Active Exploitation of Multiple Zero-Day Microsoft Exchange Vulnerabilities
- Mass Exploitation of Exchange Server Zero-Day CVEs: What You Need to Know