sec-chick Blog

サイバーセキュリティブログ

CVE-2021-40444の個人的調査メモ

いろいろと他に調べてみたいことがありますので、徐々にアップデートしていきたいと思います。
話題になっているCVE-2021-40444について、気になったので調査してみました。

 

CVE-2021-40444について

脆弱性の説明については多くの記事があるため、ここでは簡単に攻撃の流れを記載します。

<攻撃の流れ>
1. 不正なWordファイルを開く

2. document.xml.relsに記載されているURLからhtmlファイルにアクセスする

3.「.CAB」ファイルをダウンロードする

4.「.CAB」ファイルから.DLLファイルを抽出する

5. パストラバーサル攻撃により抽出したDLLファイルを実行する

※攻撃の流れは以下のハッシュ値のファイルを参考:
   938545f7bbe40738908a95da8cdeabb2a11ce2ca36b0f6a74deda9378d380a52

Twitter上でCPL形式以外でも実行できるとの投稿がありました。時間があるときに検証できればと思っています。
https://twitter.com/Max_Mal_/status/1437564247324639234?s=20

分析

分析には以下のgithubのPoCコードを利用して検証を行いました。

GitHub - lockedbyte/CVE-2021-40444: CVE-2021-40444 PoC

docxファイル名:document.docx
htmlファイル名:word.html
cabファイル名:word.cab

WORDファイル

document.xml.relsの中身を見る方法はいくつかありますが、WORDファイルをzip化し、解凍することで確認することができます。
document.xml.relsは圧縮後の「word>rels」配下に存在します。

document.xml.rels内にURLが記載されているため、プロキシ上にそのURLへのアクセスがあるかどうかで感染の有無を調査することができます。

f:id:one-chick-sec:20210912230429p:plain

 

f:id:one-chick-sec:20210912230939p:plain


ネットワーク

HTMLファイルおよびCABファイルのダウンロードを試みます。Wireshark上でもword.htmlおよびword.cabファイルへのアクセスが確認できます。

f:id:one-chick-sec:20210913222928p:plain

プロセス

攻撃が成功した場合、WINWORD.EXEからcontrol.exeが実行され、rundll32.exeが実行されます。また、ファイルの実行場所から「.CAB」ファイルを実行するためにいくつものパスに対して、実行している特徴があります。
今回のPoC.コートでは .CABファイルは以下のディレクトリに格納されていました。
「C:Users\ユーザー名\AppData\Local\Temp」

今回のPoCコードでは攻撃が成功した場合、電卓が実行されるため、rundll32.exeを経由してcalc.exeが実行されます。

WINWORD.EXEからcontrol.exeの実行やcontrol.exeからrundll32.exeの実行を試みるプロセスが多数あった場合はCVE-2021-40444の攻撃が行われている可能性が高いと思われます。

 

f:id:one-chick-sec:20210913221519p:plain

 

f:id:one-chick-sec:20210913222458p:plain



f:id:one-chick-sec:20210913222313p:plain

 

攻撃成否の判断

CVE-2021-40444の攻撃が成功しているかですが、以下のような観点で調査することができると思います。
※一例なので、これですべて判断できるものではありません。
⑴ファイルが入手可能な場合、感染時に発生するURLをプロキシで調査し、
 アクセスを確認
⑵WINWORD.EXEからcontrol.exeを経由してrundll32.exeが実行されているか確認⑶control.exe、rundll32.exeのコマンドにパストラバーサル攻撃や
 一時ファイルのパスが含まれているか確認

f:id:one-chick-sec:20210916004550p:plain

※以下のハッシュ値のファイルの場合は上記のパスへアクセスを試みる:
   938545f7bbe40738908a95da8cdeabb2a11ce2ca36b0f6a74deda9378d380a52

検知ルール

これまでの分析結果からこんな条件であれば、検知できそうだと思う条件を考えてみました。EDRであれば、実装されているルールで検知することはできると思いますが、念のため。

・検知条件:
    - 親プロセスがwinword.exe or powerpnt.exe or excel.exe
 - プロセスが control.exe
・検知機器:EDR,SIEMなど(Windowsログを収集することができる機器)
・補足:
 - winword.exeからcontrol.exeが実行されるパターンはそこまで多くないと
   思われるため、検知数はそこまで多くならないと推測
   - Sigma Ruleは以下のURL
  

・検知条件:
 - プロセスがcontrol.exe 
 - プロセスのコマンドに ../ が含まれている
・検知機器:EDR,SIEMなど(Windowsログを収集することができる機器)
・補足:
    - 不審なdllファイルを実行するために行うパストラバーサルを検知

・検知条件:
 - プロセスがcontrol.exe 
 - プロセスのコマンドに  /Low/,/AppData/,/Local/,/AppData/ が含まれている
・検知機器:EDR,SIEMなど(Windowsログを収集することができる機器)
・補足:
 - 不審なdllファイルを格納されているパス名が含まれている場合に検知

  
MSからMicrosoft 365 Defender用のルールが最後に書いてあるため、

Analyzing attacks that exploit the CVE-2021-40444 MSHTML vulnerability | Microsoft Security Blog

.cplパストラバーサルで実行しようとしているものを検知するルールとなっています。

DeviceProcessEvents
| where (FileName in~('control.exe','rundll32.exe') and ProcessCommandLine has '.cpl:')
or ProcessCommandLine matches regex @'\".[a-zA-Z]{2,4}:\.\.\/\.\.'

まとめ

・CVE-2021-40444について調査

・WORDファイルであればdocument.xml.relsの中身を見れば、アクセス先を調査
 することが可能
・攻撃の成否や検知はcontrol.exeからパストラバーサルの有無や一時ファイルの
 ファイルを取得するような挙動で確認可能

 

参考URL:

Windowsのゼロデイ脆弱性(CVE-2021-40444)、既にOffice文書による攻撃も確認 | トレンドマイクロ セキュリティブログ

sigma/win_file_winword_cve_2021_40444.yml at master · SigmaHQ/sigma · GitHub

CVE-2021-40444 の検証と緩和策・回避策について - ごちうさ民の覚え書き

Microsoft MSHTMLの脆弱性(CVE-2021-40444)に関する注意喚起

Security Update Guide - Microsoft Security Response Center

GitHub - lockedbyte/CVE-2021-40444: CVE-2021-40444 PoC