目次
要旨
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-30190やCVE-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 – キャンペーンで使用された文書のルアー
社内で構築されたOfficeファイル分析エンジンを使ってOOXMLのルアーを素早くスキャンしたところ、内部にRTFドキュメントが埋め込まれていることに気付きました。さらに同じスキャンエンジンを使ってRTFを分析したところ、以下のように複数の不審なインジケータが見つかりました。これをきっかけに、OOXMLにRTFを埋め込むために使用されている技術について調査し、感染の連鎖につながるルアーを再構築するために同じ方法を適用できるかどうかを確認しました。
このキャンペーンで使用された両方のエクスプロイトの文書構造は、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
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要素によって指定されます。
仕様によると、リレーションシップのタイプは上記のように「…/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」が続くことで示されるリンクオブジェクトで、リンクオブジェクトのコンテンツを表示する前に、オブジェクト/リンクを強制的に更新させます。
さらに、埋め込まれたオブジェクトには外部IPへのUNC(Universal Naming Convention)パスが含まれており、外部でホストされているSMBサーバーへの接続を開始し、別のfile001.url(SHA-1 70560aff35f1904f822e49d3316303877819eef8)をダウンロードします。これは再び、iframeソースでHTMLコンテンツを埋め込んだWord文書で、元の文書を起動するとレンダリングされます。
図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
図8 – RTFドキュメントをリンクするOLE2LINK技術を使用したOLEオブジェクトのビュー
図9 – start.xmlを取得するための接続を開始するRTF文書
図10 – iframeを含むstart.xmlの内容
以下のRFile.aspコードに見られるように、このコードは30000秒のタイムアウトで始まり、その中に含まれる別の iframeをロードして、同じ攻撃者が制御するサーバー104.234.239.26から .htmファイルを取得します。このファイルには、動的に生成されたファイルベースのファイルが含まれています。被害者のIPアドレスとHTTPリクエストのパスにある一意のIDに基づきます。
どうやら、感染の連鎖は一連のiframeリダイレクトであることが判明し、.htmファイルとそれに続くsearch-msファイルの取得から再開し、最終的に最終的なペイロードのダウンロードに至ります。感染チェーン全体は、以下のインフォグラフィックで非常によく視覚化することができます:
図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
その後、新しいAltChunkを作成した後、Document1.rtfの内容がメインドキュメントの最後に挿入されます(CVE-2023-36884)。私たちは、作成者が悪用を構築するために同じ手法を使用したに違いないと考えています。
図14: Document1.rtf 図15: Document2.docx
図16:AltChunkを使ってDOCXにRTFを挿入するコード
図17:感染連鎖を開始するstart.xmlへの接続を伴う再構築されたPOCエクスプロイト
この攻撃に対するTrellix IPSの保護と製品の適用範囲
Trellix NSPは、セキュリティ業界で最も先進的なIPSの1つであり、高度な攻撃から顧客を守ることに一貫して取り組んできました。Microsoft Office Deep File InspectionやMulti 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 |
原文: The Tale of Two Exploits – Breaking Down CVE-2023-36884 and the Infection Chain
著者: Chintan Shah