CVE-2023-36884と感染チェーンの解明


要旨

2023年7月11日、マイクロソフトは、アクティブに悪用される複数のRCE脆弱性を修正するパッチをリリースし、Storm-0978として特定された攻撃者がヨーロッパと北米の企業をターゲットに行ったフィッシングキャンペーンを公開しました。このキャンペーンでは、CVE-2023-36884として追跡されているゼロデイ脆弱性(Windowsの検索ファイルにおけるリモートコード実行の脆弱性)が使用されており、ウクライナ世界会議(UWC)に関連する特定の地政学的な誘い文句で細工されたOffice Open eXtensible Markup Language(OOXML)ドキュメントを介して悪用されています。この脆弱性を緩和するための回避策が提案されていましたが、2023年8月8日にMicrosoft Office Defense in Depthの更新プログラムがリリースされ、Windows検索ファイル(*.search-ms)を介してRCEにつながる悪用の連鎖が断ち切られました。

オペレーティングシステムのハードニングといくつかのエクスプロイト緩和機能により、メモリ破壊の脆弱性の悪用と武器化は着実に減少しています。Microsoft Officeの機能を悪用することは、敵対者が標的型攻撃を実行するための最前線かつ最重要テクニックとなっています。これは基本的に、その豊富な機能セットが、より大きな攻撃対象領域を露出させ、広く採用され、悪用が容易であるためであり、最終的には有利な攻撃ベクトルとなっています。CVE-2022-30190CVE-2021-40444など、Office文書が他のファイル形式を悪用するためのキャリアとして使用されたり、悪意のある外部リソースやオブジェクトにリンクするために使用されたりして、それぞれのオブジェクトレンダラを呼び出して脆弱性を悪用するような事例は、過去にも数多くありました。Officeドキュメントは歴史的に、リモートコード実行(RCE)を達成するために複数の脆弱性を連鎖させるためにも使用されてきました。以前、Windowsグラフィックコンポーネントの情報漏えいの脆弱性であるCVE-2022-37985についてブログに掲載しましたが、この脆弱性は、Office文書を通じて悪用される可能性があり、任意の書き込みプリミティブを与える他の脆弱性と連鎖すると、コード実行を達成する可能性があります。

このブログでは、政府機関に対する標的型攻撃で使用された悪意のあるOOXMLと埋め込まれたリッチテキストフォーマット(RTF)ドキュメントのエクスプロイトを詳しく見ていき、攻撃シーケンスとエクスプロイトの連鎖を可視化します。また、サンプルコードを用いて同じ手法でプログラム的にドキュメントのルアーを再構築し、この攻撃で使用されたエクスプロイトに対するTrellix IPSと製品のカバレッジをさらに強調しています。


序章

この攻撃キャンペーンでは、脅威者は名前とハッシュを持つ複数のOOXML文書を使用しました。

Overview_of_UWCs_UkraineInNATO_campaign.docx [2400b169ee2c38ac146c67408debc9b4fa4fca5f]

Letter_NATO_Summit_Vilnius_2023_ENG (1).docx [3de83c6298a7dc6312c352d4984be8e1cb698476]

図 1 – キャンペーンで使用された文書のルアー
図 1 – キャンペーンで使用された文書のルアー

図1 – キャンペーンで使用された文書のルアー

社内で構築されたOfficeファイル分析エンジンを使ってOOXMLのルアーを素早くスキャンしたところ、内部にRTFドキュメントが埋め込まれていることに気付きました。さらに同じスキャンエンジンを使ってRTFを分析したところ、以下のように複数の不審なインジケータが見つかりました。これをきっかけに、OOXMLにRTFを埋め込むために使用されている技術について調査し、感染の連鎖につながるルアーを再構築するために同じ方法を適用できるかどうかを確認しました。

図 2 - 文書ルアーの検出図2 – 文書ルアーの検出

このキャンペーンで使用された両方のエクスプロイトの文書構造は、Follina攻撃(CVE-2023-30190)で使用されたものと類似しています。ただし、Follinaエクスプロイトでは、前回のブログで詳述したように、OOXMLドキュメントを外部でホストされたHTMLファイルにリンクするためにオブジェクトリンクが使用されていました。CVE-2023-36884を悪用するOOXMLでは、Alternate Format Chunk(AltChunk / aFChunk)がOOXML内にRTFファイルを埋め込みます。AltChunkクラスの使用は、以下のようにコンテナドキュメントがデフレートされたときに、document.xmlファイルのw:altChunk要素タグによって示されます。

図 3 – altChunk を使用して悪意のある RTF を埋め込む document.xml図3 – altChunkを使用して悪意のあるRTFを埋め込むdocument.xml


CVE-2023-36884における 「Alternative Chunk 」の使用

従来のOfficeエクスプロイトでは、OLE(Object Linking and Embedding)を使用して外部コンテンツをコンテナアプリケーションに埋め込んでいました。このエクスプロイトでは、altChunk(Alternative Chunkの略)が使用されています。これは、2つのドキュメントを1つの大きなドキュメントにマージする方法を提供するOpenXML標準です。AltChunk要素は、コンテナアプリケーションに、文書の代替部分(この場合はRTF文書)に格納されたコンテンツをインポートするよう指示します。

altChunk要素は、指定されたファイルの内容をターゲット文書に挿入するための OOXML 文書内の場所を指定します。挿入されるコンテンツタイプとファイルの場所は、以下のexploitに示すように、/word/_relsディレクトリ内のdocument.xml.relsで上記と同じリレーションシップidを持つType要素とTarget要素によって指定されます。

図 4 – 埋め込み RTF を参照する関係ターゲット図4 – 埋め込みRTFを参照する関係ターゲット

仕様によると、リレーションシップのタイプは上記のように「…/relationships/aFChunk」であるべきで、TargetModeは「Internal」と指定されるべきですが、これは欠けていますが、Officeはこの属性を無視してドキュメントを処理するようです。この方法では、application/rtf、application/html、application/text、application/xmlなど、複数のコンテントタイプをインポートすることができます。これにより、OOXMLドキュメントを他のファイル形式の悪用のキャリアとして効果的に使用できるようになります。


埋め込みRTF(afChunk.rtf)の解析

埋め込まれたRTFドキュメントを詳しく見てみると、リダイレクトチェーンを通じて追加のマルウェアペイロードをダウンロードする、まさに2つの埋め込みオブジェクトがあります。RTF内に埋め込まれたOLEオブジェクトの1つは、「objautlink」というRTF制御ワードの後に「objupdate」が続くことで示されるリンクオブジェクトで、リンクオブジェクトのコンテンツを表示する前に、オブジェクト/リンクを強制的に更新させます。  

図 5 – RTF の埋め込みオブジェクト 1図5 – RTFの埋め込みオブジェクト 1

さらに、埋め込まれたオブジェクトには外部IPへのUNC(Universal Naming Convention)パスが含まれており、外部でホストされているSMBサーバーへの接続を開始し、別のfile001.url(SHA-1 70560aff35f1904f822e49d3316303877819eef8)をダウンロードします。これは再び、iframeソースでHTMLコンテンツを埋め込んだWord文書で、元の文書を起動するとレンダリングされます。

図 6 – RTF の埋め込みオブジェクト 1

矢印

図 6 – RTF ドキュメントをリンクする OLE2LINK テクニックを使用した OLE オブジェクトのビュー

矢印

矢印

 

 

図 6 – RTF ドキュメントをリンクする OLE2LINK テクニックを使用した OLE オブジェクトのビュー図 6 – RTF ドキュメントをリンクする OLE2LINK テクニックを使用した OLE オブジェクトのビュー

 

図6 – RTFドキュメントをリンクするOLE2LINK技術を使用したOLEオブジェクトのビュー

もう1つのOLEオブジェクトもリンクされたオブジェクトで、objclassが “xmlfile”、oleclsidが “StdOleLink “オブジェクトです。これは事実上、StdOleLink OLEオブジェクトが、RTFを外部でホストされているXMLファイルにリンクするために使用されていることを意味します。これは広く採用されているテクニックの1つであり、大量に悪用されたCVE-2017-1099でも使用されました。しかし、このリンク機能は、他のレンダラー コンポーネントのロジック欠陥を悪用するために、同様の方法でまだ使用することができます。RTFが起動すると、外部IPへの接続が開始され、start.xmlが取得され、SAX XML Reader 6.0 ( msxml6.dll)によってレンダリングされます。この取得されたXMLファイルには、同じパスにある別のファイルRFile.aspを指すiframeソースが埋め込まれています。感染チェーンの一部を以下に示します。

図 7 – RTF 内の埋め込みオブジェクト 2図7 – RTF内の埋め込みオブジェクト2
矢印
図 8 – RTF ドキュメントをリンクする OLE2LINK テクニックを使用した OLE オブジェクトのビュー
図8 – RTFドキュメントをリンクするOLE2LINK技術を使用したOLEオブジェクトのビュー
矢印
図 9 – start.xml を取得するための接続を開始する RTF ドキュメント
図9 – start.xmlを取得するための接続を開始するRTF文書

矢印
図 10 - iframe を含む start.xml の内容
図10 – iframeを含むstart.xmlの内容

以下のRFile.aspコードに見られるように、このコードは30000秒のタイムアウトで始まり、その中に含まれる別の iframeをロードして、同じ攻撃者が制御するサーバー104.234.239.26か​​ら .htmファイルを取得します。このファイルには、動的に生成されたファイルベースのファイルが含まれています。被害者のIPアドレスとHTTPリクエストのパスにある一意のIDに基づきます。

図 11 – RFile.asp の内容
図11 – RFile.aspの内容

どうやら、感染の連鎖は一連のiframeリダイレクトであることが判明し、.htmファイルとそれに続くsearch-msファイルの取得から再開し、最終的に最終的なペイロードのダウンロードに至ります。感染チェーン全体は、以下のインフォグラフィックで非常によく視覚化することができます:

図 12 – CVE-2023-36884 感染チェーンの視覚化図12 – CVE-2023-36884 感染チェーンの視覚化
https://twitter.com/r00tbsd/status/1679042071477338114


URL Monikerと 「AltChunk」を使ってエクスプロイトを再構築できるか

以下のC#サンプルコードは、DocumentFormat.OopenXMLパッケージを使用し、このキャンペーンで攻撃者が使用した「altChunk」クラスを使用して、RTFが埋め込まれたOOXMLドキュメントを再構築する方法を示しています。このコードはDocument1.rtfをDocument2.docxに埋め込み、CVE-2023-36884.docxという名前の別のファイルを作成します。

RTFドキュメントをOOXMLにaltChunkできるようにするため、このコードはまず一意のaltChunkIdを関係IDとして初期化します。そして、そのaltChunkIDを使って新しいAlternativeFormatImportPartを作成し、AlternativeFormatImportPartTypeをRTFとしてOpenXML API AddAlternativeFormatImportPartを呼び出し、メインドキュメントに追加します(CVE-2023-36884.docx)。前のセクションで述べたように、AlternativeFormatImportPartTypeはenum型で、インポートするコンテンツタイプを指定します。

図 13 : 複数のコンテンツ タイプをインポートするために使用される AlternativeFormatImportPartType
図13: 複数のコンテンツタイプのインポートに使用される AlternativeFormatImportPartType

その後、新しいAltChunkを作成した後、Document1.rtfの内容がメインドキュメントの最後に挿入されます(CVE-2023-36884)。私たちは、作成者が悪用を構築するために同じ手法を使用したに違いないと考えています。

図14: Document1.rtf           図15: Document2.docx

図 15: Document2.docx
図 14: Document1.rtf

 

 

 

 

矢印矢印

 

図 16: AltChunk を使用して RTF を DOCX に挿入するコード
図16:AltChunkを使ってDOCXにRTFを挿入するコード
矢印
図 17: 感染チェーンを開始する start.xml への接続を伴う再構築された POC エクスプロイト
図17:感染連鎖を開始するstart.xmlへの接続を伴う再構築されたPOCエクスプロイト


この攻撃に対するTrellix IPSの保護と製品の適用範囲

Trellix NSPは、セキュリティ業界で最も先進的なIPSの1つであり、高度な攻撃から顧客を守ることに一貫して取り組んできました。Microsoft Office Deep File InspectionMulti Attack ID Correlationのような最先端のIPS機能は、様々なファイル形式の攻撃から顧客を保護し、攻撃サイクルにおける複数の低または中程度の重大度のアラートを相関させ、全体的な信頼度を向上させます。Trellix IPSは、この攻撃に対する防御のため、以下の検知結果を発表しました。

IPS攻撃ID IPS攻撃ID
0x452d8200 HTTP: Microsoft Officeリモートコード実行の脆弱性 (CVE-2023-36884)
0x452da500 HTTP: Microsoft Officeエクスプロイト後のアクティビティ I (CVE-2023-36884)
0x452d8300 HTTP: Microsoft Officeエクスプロイト後のアクティビティ (CVE-2023-36884)

Trellix製品の範囲

製品 検出の詳細
ENS-AV PUP-ILJ
RTFObfustream.a
Generic Trojan.mq
HTML/Agent.s
HTML/CVE2023-36884.a
ENS-EP CVE-2023-36884_Office_and_Windows_HTML_Remote_Code_Execution_Vulnerability.md
HX-IOC SUSPICIOUS LAUNCH OF MSDT.EXE BY OFFICE APPS A (METHODOLOGY)
HX-AV/MG Trojan.GenericKD.67946770
Exploit.CVE-2017-0199.02.Gen
Trojan.GenericFCA.Agent.98791
Trojan.GenericFCA.Agent.98790
Network (NX)
NX
Trojan.Generic.DNS
Trojan.Generic.DNS
NX IPS
FE_Office and Windows HTML CVE-2023-36884 リモートコード実行の脆弱性
FE_Office and Windows HTML CVE-2023-36884 リモートコード実行の脆弱性
FE_Office and Windows HTML CVE-2023-36884 リモートコード実行の脆弱性
FE_Office and Windows HTML CVE-2023-36884 リモートコード実行の脆弱性
FE_Office and Windows HTML CVE-2023-36884 リモートコード実行の脆弱性
FE_Office and Windows HTML CVE-2023-36884 リモートコード実行の脆弱性
MVX FE_Exploit_RTF_CVE20170199_1\
FEC_Exploit_RTF_CVE20170199_1_FEBeta\ (703874)
FEC_Exploit_RTF_Generic_1_FEBeta\ (703875)
FEC_Exploit_RTF_Generic_2_FEBeta\ (703876)
FEC_Trojan_HTML_Generic_64_FEBeta\ (703877)
Suspicious Network Activity\ (10405)
Trojan.Generic.MVX\ (43183)
HELIX
WINDOWS METHODOLOGY [Office Suspicious Child Process] (1.1.2497)
WINDOWS METHODOLOGY [Impacket Secretsdump] (1.1.3336)
IMPACKET OBFUSCATION [WmiExec Commands](1.1.3942)

結論

Microsoft Officeは引き続き、特に機能の悪用や設計やロジックの欠陥の悪用において、攻撃者にとっての最大の標的となっています。ネイティブのメモリ破損の欠陥は、それを兵器化する際の固有の課題とともに徐々に減少するため、この機能豊富なアプリケーションは、攻撃対象領域が広く、攻撃者にとって最も抵抗の少ない経路を提供します。以前のブログの1つで、この悪用傾向を予測しましたが、CVE-2023-36884はそれをさらに検証したものです。アプリケーション機能の脆弱性とその簡単な悪用が組織にとって依然として課題となっており、この傾向は今後も続くと考えています。したがって、エンドポイントおよびネットワークのセキュリティソリューションは、これらの課題に対処するために継続的に進化する必要があります。安全なアプリケーション設計と開発を適用することで、エクスプロイトの連鎖を確実に断ち切り、これらの攻撃から守り続けることができます。


侵害の兆候 (IOC)

悪意のあるファイルのハッシュ

MD5 hash ファイル名
227874863036b8e73a3894a19bd25a0 Overview_of_UWCs_UkraineInNATO_campaign.docx
00ad6d892612d1fc3fa41fdc803cc0f3 Letter_NATO_Summit_Vilnius_2023_ENG(1).docx
3ca154da4b786a7c89704d0447a03527 afchunk.rtf
0c72b2479316b12073d26c6ed74d3bdc start.xml
7bbe0e887420d55e43ce1968932e1736 RFile.asp
e65a1828d6afe3f27b4ec7ec1a2fee20 1111.htm
510823c639f6a608b59d78b71be50aab 2222.chm
f49a0d153660cf95d7113c1d65e176ff INDEX.htm
f0cd84693a7481834fa021496c3ec9e9 fileH.mht
0fff39ae5d049967c2c74db71eeda904 ex001.url
54cfc7f45302d9793af97bd7d33c6e9a file001.vbs
8639c28a3fba0912fcf563b31f97d300 testdll.dll
476274dc8efda182acd47ac0a5362a5a file001.vbs
e6f8b0299ca4d44bf09dc4e443fb503c testdll64.cpl
a38aa3eaf3ffb79fbd50f503ccea2f25 fileH.htm
fe8a942370a6881ee9d93f907cae7aa5 file1.mht
7fd97c71ef08a0f066ce4fbf465d1062 file1.htm
26a6a0c852677a193994e4a3ccc8c2eb file001.url
218a069f4711d84100062d01a41d960f ex001.zip
76f918cbfa4075101a61aac74582f755 calc.exe

※本ページの内容は2023年8月24日(US時間)更新の以下のTrellix Storiesの内容です。
原文: The Tale of Two Exploits – Breaking Down CVE-2023-36884 and the Infection Chain
著者: Chintan Shah