Microsoft Office ファイルがどのように操作されているか
Microsoft Office は、悪意のあるアクターがマルウェアを拡散するために使用する最も一般的な攻撃手段の 1 つです。ほとんどのコンピュータには Microsoft Office がインストールされており、Office ファイルは組織や個人の間で一般的に共有されていることを考えると、この種のマルウェアに遭遇する可能性は非常に高いと言えます。このブログでは、Microsoft Office 文書(OOXML)に埋め込まれたマルウェアの普及状況、使用される一般的な攻撃ベクトル、そしてこのような攻撃から組織を守るための事前対策についてご紹介します。
OOXML の不正操作に対する脆弱性
Office Open XML(OOXML)とは、Microsoft 社が xlsx、docx、pptx などの Microsoft Office ファイルを格納するために使用している ZIP ベースのファイル形式である。OLE ファイル形式の後継で、コンテンツの保持に XML ファイルではなく複合ファイルを使用しており、拡張子は「.doc」、「.ppt」、「.xls」で表され、OOXML ファイルの拡張子 docx、xlsx、pptx が一般的に使用されています。OLE ファイルと OOXML ファイルは互換性があり、一方の形式のファイルを他方の形式として保存しても、その機能はすべて維持されます。
以下は、OOXML ファイルと OLE ファイルの内部構造の例です。左の図は、OOXMLフ ァイルの構造を示しています。下の画像を見ると、ファイルはいくつかのディレクトリで構成される階層構造になっており、それぞれに XML ファイルが格納されていることがわかります。これらのディレクトリには、XML ファイルの他に、OLEオ ブジェクトや、PE ファイル、画像などの他のファイルタイプも含まれています。
右の図は OLE ファイルの構造を示しています。OLE ファイルには複合オブジェクトが含まれており、それぞれが Office ドキュメントの作成において特定の役割を担っています。 例えば、Microsoft Word ファイルの主な複合オブジェクトである「WordDocument」は、テキストの保存を担当している。
OXMLファイルの構造(左)とOLEファイルの構造(右)
サイバー脅威のトレンド
ご存知のように、Microsoft Office のファイルは非常に一般的で、日常的に個人や組織の間で共有されています。このため、多くのマルウェア作者は、OOXML および OLEフ ァイル形式が盛んに使用されていることを利用して、悪意のある活動を広めています。
下のグラフは、2015 年 1 月以降の各年の四半期における OLE および OOXML ベースのマルウェアの相対的な量を示しています。Deep Instinct 社の D-Cloud から収集したこのデータは、任意の単位で表示されており、第 1 四半期における悪意のある OOXML ファイルの数を表す数字は1となっています。ご覧のように、OOXML と OLE の両方のマルウェアが、継続的に、しかしゆっくりと増加しています。OLE マルウェアの方が明らかに脅威となっていますが、OLE ベースのマルウェアと OOXML ベースのマルウェアの差は徐々に縮まっています。さらに、新型コロナウィルスのような世界的なパンデミックに関連したフィッシングキャンペーンや、米国の確定申告シーズンのような特定の国に関連した時期、あるいは新しいマルウェアの登場などにより、突発的なスパイクが発生することがあります。例えば、2016 年の第 3 四半期には、ランサムウェア「cyber」が、支払った身代金の40% と引き換えにサービスを提供することを開始し、その結果、7 月だけで 15 万人以上のユーザーが被害に遭いました。
四半期ごとに新たに発見された悪質な OOXML および OLE ファイルを任意の単位で表したものです。
一般的な攻撃ベクター
OOXML ファイルフォーマットを使用する被害者を攻撃するために、悪意のあるアクターが使用する一般的な手法がいくつかあります。RELS などのいくつかの手法は、OOXML ファイルに特有のものですが、VBA マクロの使用などの他の手法は、OLE ファイルでもごく一般的なものです。
- OLE オブジェクト エンベッディングの活用
OOXML ファイルフォーマットでは、OOXML ファイル内に OLE オブジェクトを埋め込むことができます。OLE オブジェクトは、Microsoft Word など、Microsoft の Object Linking and Embedding(OLE)技術をサポートするプログラムで作成されます。他のファイルと同様、OLE オブジェクトにもハッカーが利用できる脆弱性があります。例えば、「CVE-2017-11882」を利用すれば、悪者は、 OOXML ファイルに埋め込まれた OLE オブジェクトを利用して、Office ファイルを開く以外にユーザーが操作することなく、被害者のコンピュータ上でリモートコードを実行することができます。悪名高い Loki マルウェアファミリーは、この方法を使って、ウェブブラウザからユーザー認証情報を採取したり、暗号ウォレットを盗んだり、付箋紙に保存されたデータを収集したりしていました。
- DDE 攻撃
DDE(Dynamic Data Exchange)とは、Microsoft Office アプリケーション間でデータを転送するためのプロトコルです。例えば、Microsoft Word の文書に表を挿入し、Excel のグラフからデータを取得し、Excel のグラフが変更されたときに更新することができます。このプロトコルは善意で作られたものであるが、その機能は善意ではない目的に使われることもある。基本的に DDE は、たった 1 つのカスタムフィールドで埋め込みコードの実行を可能にするため、攻撃者はこれを利用して様々なコマンドを簡単に実行することができます。通常、攻撃者はこの機能を利用して、追加のマルウェアをダウンロードして実行しますが、機密情報の共有や、脅威主体がコマンドを送信するためのリモートシェルの開設などにも利用できます。DDE は、何年も前に OLE ツールキットによって抑制された古いプロトコル( 1987 年に最初に導入された)ですが、マイクロソフト社ではまだサポートされているため、セキュリティ上の脅威となっています。この問題を軽減するために、更新された Microsoft Office アプリケーションでは、DDE を含むドキュメントを開くと、通常2つのセキュリティ警告が表示されます。しかし、このようなファイルを潜在的な被害者に送りつける攻撃者は、被害者を騙して警告を無視させ、DDE コンテンツの実行を許可させることができます。例えば、Necurs. ボットネットは、被害者が要求した文書が添付されていると伝えるスピアフィッシングメールを使用し、実際には悪名高いランサムウェア「 Locky 」の配信に使用されたこれらの文書が信頼できるものであると被害者に思わせていました。
- VBA のマクロ
マクロとは、Microsoft Excel や Word の処理を自動化するためのコマンド群のことです。現代のマクロは、DDE と同様、OOXML に限ったことではありませんが、Visual Basic で書かれており、多くのアクションを実行できる完全な機能を持つスクリプト言語です。残念ながら、多くの攻撃者は、このレモンを使って、非常に苦いレモネードを作ります。 VBA を使えば、実行ファイルをダウンロードして実行したり、リバースシェルを開いたりすることができます。幸いなことに、マイクロソフトはそのことを認識しており、新しいバージョンの Microsoft Office アプリケーションがそのような VBA マクロを自動的に実行しないようにしています。 しかし、上述したように、攻撃者は、被害者がマイクロソフトの提示する警告を無視してマクロの実行を許可するように操作する方法を見つけます。Emotet は、VBA スクリプトを難読化し、ベース 64 エンコーディングを使用することで、セキュリティベンダーに検知されにくい動作を実現しています。他の多くのマルウェアファミリーと同様に、このバンキングトロイの木馬は、VBA を使用して PowerShell コードを実行し、リモートアドレスからペイロードをダウンロードしてディスクに保存し、実行します。2019 年 8 月、Deep Instinct 社は、本番環境で興味深い VBA マルウェアを発見 しました。このマルウェアUrsnif ドロッパーは、企業大手の DHL の請求書を装い、Excel ファイルとして配信されました。マルウェアの配信には、エンコードし難読化された PowerShell コードが使用されていました。
- RELS の悪用
OOXMLのRELS(Relationship File)は、OOXML ファイルの各部分がどのように接続されて文書を形成するかを記述したものです。RELS ファイルの中には「ターゲット」があり、これは通常、説明文が添付された文書の各部分への道筋を示します。しかし、これらのターゲットは、遠隔地に保存されているファイルを指定することができ、そのファイルは文書を開いたときに呼び出されます。当然ながら、この機能は攻撃者に利用され、ウェブベースのターゲットを指して悪意のあるペイロードをダウンロードすることで被害を与えます。例えば、リモートの HTML 実行ファイル「ターゲット」を追加し、脆弱性 CVE-2017-0199 を利用して、OOXML 文書が開かれたときに実行させることで、悪意のある目的を果たすことができるのです。 この方法は、長年にわたり多くの脅威アクターによって実施されており、例えば、スパイウェア「PonyStealer」や「FormBook」のペイロードがこの方法で配信されていました。しかし、DDE や VBA マクロと同様に、RELS ファイルが外部コンテンツを読み込もうとすると、警告が表示されます。
- 追加ファイルタイプの使用
OOXML は ZIP 形式であるため、攻撃者は RELS や [Content_Types].xml を修正することで、OOXML 内から任意のファイルを挿入・実行することができます。そのため、攻撃者はこの抜け道を利用してマルウェアを配信・実行します。例えば、PE ファイルを OOXML に挿入し、OOXML に含まれる VBA マクロで実行することができます。
OOXML マルウェアからの防御方法
OOXML ファイルを警戒するだけでなく、企業はこの種の脅威を自律的に識別できる高度な脅威防止ソリューションを必要としています。選択されたソリューションは、これらのファイルを静的にも動的にも処理でき、この脅威が実行される前に防ぐことができなければなりません。また、万が一マルウェアがすり抜けてしまった場合でも、被害が出る前に悪意のある活動を阻止することができるソリューションでなければなりません。さらに、選択された製品は、悪意のある VBAマ クロの実行を防止する機能を備えている必要があります。
Deep Instinct 社の製品は、悪意のあるVBAマクロの実行を防止し、この種の脅威を排除するために特別に設計された Deep Learning モデル を使用して、顧客が侵害されたことに気づく前に、悪意のある活動をリアルタイムで探す動的なメカニズムを採用しており、すべての条件を満たしています。
OOXML ファイルは、一見すると何の問題もないように見えますが、非常に大きな問題を引き起こす可能性があります。過去にもマルウェア作者は OOXML ファイルを悪用する方法を見つけており、今後もその方法を見つける可能性が高いです。つまり、ユーザーはMicrosoft Officeファイルを開く際には慎重になるべきであり、組織は従業員が思うように警戒できない場合を考慮して、可能な限りのセキュリティ技術を導入する必要があります。