Macroが使えない?でも大丈夫。VSTOを武器にする脅威者たち
はじめに
Office Visual Basic for Applications (VBA) のマクロは、数十年にわたり、多くの脅威者の核となるツールとなっています
このツールにより、巧妙どころか、 とても巧妙な脅威者が、世界中の無数のデバイスに目もくらむような数のマルウェアを送り込むことができるようになりました。そして長い間、Windows PCを感染させ、危険にさらす最も一般的な攻撃経路として、その役割を担ってきました。また、ネットワーク侵害、データ漏洩、ランサムウェアのインシデントを引き起こす悪意のあるキルチェーンの最初のリンクの重要なコンポーネントとして機能してきました。
このようなマクロを使った脅威ですが、マイクロソフト社が、Webマーク(ファイルがローカルマシンから発信されていないことを示す)が付いたOfficeファイル内のVBAマクロを デフォルトでブロックするという仕様変更をしたことにより、最近その勢いが弱まってきています。これにより、この攻撃対象は大幅に減少し、脅威者は代替となる攻撃経路を模索することを余儀なくされました。
その1つが、最近流行している.LNK(ショートカット)ファイルの使用です。この例については、当社の最近のレポートでご覧いただけます。
また、Visual Studio Tools for Office (VSTO)もその一例です。以下では、VSTOが重要な攻撃経路となり得る、いくつかの「実戦的」な例について説明します。
VSTOとは?
ソフトウェア開発ツールセットのひとつで、マイクロソフト社のVisual Studio IDEで利用可能です。これは、Officeアドイン(Officeアプリケーション拡張の一種)を.NETで開発することを可能にし、また、これらのアドインを配信し実行するOfficeドキュメントを作成することを可能にします。
さらに、VSTOアドインは、それらが開発された特定のOfficeアプリケーション(Word、Excelなど)に関連付けることができ、そのアプリケーションが起動するたびに実行されるので、コードを実行する能力に加えて興味深い永続化オプションを提供します。
VSTOアドインはOfficeドキュメントと一緒にパッケージされるか(ローカルVSTO)、あるいは、VSTOベアリングOfficeドキュメントが開かれたときにリモートロケーションからフェッチされる(リモートVSTO)ことが可能です。ただし、この場合は信頼関連のセキュリティ・メカニズムをバイパスする必要があるかもしれません。
脅威のベクトルとしてのVSTO
現在の脅威の現状を観察すると、VSTOは(かなり前から議論されていた にもかかわらず)まだ珍しいベクトルであると言えます。しかし、難解な攻撃ベクトルが使われている場合にはよくあることですが、ほとんどのセキュリティベンダーによって検出されていないため、近い将来、普及が進む可能性があります。
VSTOを含むOfficeファイルには、VSTOを含まないOfficeファイルと区別するためのいくつかのインジケータが含まれており、そのうちの主要なものは、Officeアプリケーションがアドインの場所を特定しインストールするために使用する”_AssemblyLocation”および”_AssemblyName”プロパティを含む”custom.xml”XMLが含まれていることです。
![図1 - ローカルVSTOアドインを参照する](https://www.deepinstinct.com/image/bltae692c45fce8c9be/63da8c54df2bf910c80316e8/fig01-custom-xml-referring-local-vsto-add-in.png)
ローカルVSTO
VSTOがローカルの 「フレーバー」で採用された場合、.NETコンパイルされた.DLL 「アドイン」とその依存関係は、それを実行するために作成されたOffice文書とともに、一般的に.ISOファイルのような「コンテナ」に格納されます。
ポルトガル語圏のユーザーを対象とした以下の詳細な例では、悪意のあるWord文書と隠れたVSTO「アドイン」およびその依存関係を含む悪意のある.ISOファイルのサンプルを見ることができます。
![図2 - 悪意のある.ISO、ここでは隠しファイルは表示されていない](https://www.deepinstinct.com/image/blt54d82b8f46d9881c/63da8c54c8540a111ada8b4b/fig02-malicious-iso-hidden-files-not-shown.png)
![図3 - 悪意のある.ISO、隠しファイル(ほとんどが依存関係にある)- ハイライト表示されているのがWord文書とVSTO「アドイン」ペイロード](https://www.deepinstinct.com/image/blta83b367d030dd885/63da8c545b2c1e6188c56ec2/fig03-malicious-iso-hidden-files-shown.png)
被害者が悪意のあるWord文書を開くと、「Enable Content」ボタンをクリックして悪意のあるVBAマクロを実行させるのと非常によく似た方法で、「アドイン」をインストールするように促されます。
![図4 - Word文書(](https://www.deepinstinct.com/image/blt41d8d794383d1aa8/63da8c540cf395166a6e22fb/fig04-word-doc-prompts-user-to-allow-add-in.png)
![図5-“Eventos_CDG_1Maio.docx”に含まれる悪意のある”custom.xml”は、.ISOファイル上のローカルに存在する隠れた「アドイン」を参照している](https://www.deepinstinct.com/image/blt1785537237489441/63da8c54e480c910d1acbbb7/fig05-malicious-custom-xml-contained-by-eventos-referring-to-hidden-add-in.png)
ユーザーによって許可されると、悪意のあるアドインが実行されます。
![図6 - VSTOのインストールプロンプト](https://www.deepinstinct.com/image/bltfd8952f6b1cd8776/63da8c542d94ad4c89edc84d/fig06-vsto-installation-prompt.png)
「アドイン」ペイロードを調べると、エンコードされ圧縮されたPowerShellコードを実行するためのものであることがわかります。
![図7 – “Eventos_CDG_1Maio.dll”ペイロードの”core”](https://www.deepinstinct.com/image/bltff7e2e81ed5f2a4f/63da8c544ad09d10da61ae0b/fig07-eventos_cdg_1maio.dll-payload-core.png)
興味深い点は、上記のコードの親 .NET 名前空間が "schell_test" であることです。これは、このサンプルの登場の約2週間前の Daniel Schell氏の投稿で参照されています。
上記を解読すると、このスニペットはCommand & Controlサーバーから追加のPowerShellコードを配信し、実行することを目的としています。
![図8 - PowerShellのスニペットをデコードし、解凍したもの](https://www.deepinstinct.com/image/blt2deb8b0052b3ec77/63da8c543d28dd4dde642bc5/fig08-decoded-and-decompressed-powershell-snippet.png)
残念ながら、この第2段階の追加コードは、本サンプルの調査前にオフラインになってしまったため、入手することができませんでした。
リモートVSTO
VSTOは、リモート方式で使用することもできます。つまり、アドインは、それを配信し実行するために作成されたOffice文書とは別に保存することができます。これは、VSTOを使用した攻撃の検出や防止をより困難にすると思われます。しかし、信頼できる発行者証明書などの様々な信頼関連のセキュリティチェックメカニズムを回避する必要があるため、攻撃者にとって実行までのプロセスがより複雑になる可能性もあります。
以下の例では、悪意のあるWord文書から、リモートで保存されたVSTO「アドイン」への参照を見ることができます。
![図9 - リモートVSTO”custom.xml” XML](https://www.deepinstinct.com/image/bltf4e068fa4bdd09dc/63da8c545ca8a710cf4b7226/fig09-remote-vsto-custom-xml.png)
脅威インテリジェンスデータの相互参照によって得られた「アドイン」.DLLペイロードを調べると、パスワードで保護された.ZIPアーカイブをダウンロードし、ユーザの%AppDataLocalフォルダでそれを展開し、含まれる”conhost.exe”ファイルを実行しようとする次のコードが含まれていることがわかります。
![図10 「第3ステージ」のペイロードの配信と実行コード](https://www.deepinstinct.com/image/blt29d36f5d1f3a9676/63da8c54e4e29e75dc5df0ee/fig10-3rd-stage-payload-delivery-and-execution-code.png)
残念ながら、このサンプルを調査する前にオフラインになってしまったため、第3段階のアーカイブとその中に含まれるペイロード("conhost.exe")を入手することは出来ませんでした。
VTSO攻撃シナリオのPOC
上記のサンプルに関連する最終的なペイロードを入手できなかったため、研究的な意味合いも含めて、複数のタイプの攻撃シナリオにおけるVSTOの使用方法について、概念実証(POC)を行うことにしました。
上のビデオでは、Meterpreterペイロードの配信と実行、および被害者のマシン上でのパーシステンスの確立を示すPOCのデモを見ることができます。
POCコードは、GitHubの公開リポジトリでご覧いただけます。
このテストの中では、シンプルで検知可能なMeterpreterペイロードを使用したことを留意していただく必要があります。そのため、上記のビデオを撮影するために、Microsoft Windows Defenderを無効にする必要がありました。しかし、POCコンポーネントの残りの部分は完全に検出されませんでした。
結論
VSTOアドインは、脅威の世界ではまだ比較的珍しい存在ですが、その実行能力(理論的には、完全な機能を持つマルウェア全体をVSTOアドインとして.NETで記述・開発可能)と持続性の両面から、より多くの脅威者が採用し、利用が増えていくことを予想しています。特に、国家やその他の「ハイレベル」な脅威者は、盗んだ(あるいは入手した)信頼できる証明書などの手段によって、Windows環境に存在する信頼メカニズムを回避する能力を獲得する可能性が高いため、この傾向は顕著になるでしょう。
IOCs
5530F5D20016E3F0E6BBC7FAD83EEC56F118179D4C5D89FC26863C37482F8930
E74DD27FF0BA050BBC006FD579B8022E07B570804588F0E861CC4B1321A3EC48
0526F63486DE882CCF33374DCA4B093219A8FD93014BABE794715F04FF49B151
B3282DC58AD961911D94B712CEA11F649B0BA785D7FF74D7ED9946E1260DD521
40C9D3D58CE5DB0C6D18184E5813C980CD7B72EFC7505C53CD13E60860EF8157
78D6A2C0B52E9E5AF8007BC824EFD5846585A3056B3A0E6EFDFA7E60EED48C8C
hxxps://34.241.171.114/
hxxp://classicfonts.live/
MITRE Mapping
Tactic | Technique | Description | Observable |
---|---|---|---|
Execution | T1204.002 User Execution: Malicious File | User must open a malicious document | E74DD27FF0BA050BBC006FD579B8022E07B570804588F0E861CC4B1321A3EC48 |
Execution | T1059.001 Command and Scripting Interpreter: PowerShell | PowerShell code is executed | 0526F63486DE882CCF33374DCA4B093219A8FD93014BABE794715F04FF49B151 |
Defense Evasion | T1553.005 Subvert Trust Controls: Mark-of-the-Web Bypass | .ISO container file used | 5530F5D20016E3F0E6BBC7FAD83EEC56F118179D4C5D89FC26863C37482F8930 |
Defense Evasion | T1027 Obfuscated Files or Information | Obfuscation used; Password protected file used. | 0526F63486DE882CCF33374DCA4B093219A8FD93014BABE794715F04FF49B151, 78D6A2C0B52E9E5AF8007BC824EFD5846585A3056B3A0E6EFDFA7E60EED48C8C |
Persistence | T1137.006 Office Application Startup: Add-ins | VSTO Add-In's may be used for persistence | E62E05D9DE5DAAB900FC32941727870C018D7CFD46E2BAC43EF360B80B3A0B31 |