Cisco Japan Blog

マクロを介した侵害:Office の防御を回避

1 min read



このブログは、Matthew Molyettpopup_icon Martin Leepopup_icon と共同で執筆しました。

はじめに

マクロは 1990 年代半ば以降、マルウェアの拡散やシステムの感染に悪用されてきました。しかし、1990 年代後半から 2000 年代初頭にかけて、「Microsoft Word のマクロ機能は安全のために無効にすべきである」という意識がユーザ側で高まり、こうしたマクロは下火になっていきました。ところが 2007 年に Microsoft(MS)Office ファイルの形式が変更され、これがマクロの隠蔽と、マルウェアの拡散に悪用されるようになりました。

本稿では MS Office のファイル形式がどのように悪用され、また難読化されているか、そしてマクロ マルウェアがどの程度拡散しているのかについて説明します。

 

 

 

 

図 1:ファイル ユーティリティが 4 種類の Microsoft Word ファイルを識別

文書ファイルのマクロとは何か

文書とマクロ

Microsoft Office では、ファイルに組み込んでタスクを自動化できる、フル機能のプログラム言語、Visual Basic for Applications が提供されています。これは、1990 年代末に Melissapopup_icon などの自己増殖するウィルスによって利用されました。これらのケースでは、マクロそのものの機能と、マクロの実行がデフォルトで有効であることが併せて悪用されました。

MS Office 2003 以降、マクロ実行機能がデフォルトでは無効となり、また文書がマクロを含む場合は GUI ポップアップでユーザに通知されるようになったため、被害が軽減されました。また、MS Office 2007 においては、MS Word のデフォルトのファイル形式ではマクロをサポートできないようにすることによって、さらなる進化を遂げました。これを実現するため、Microsoft は、OfficeOpen XMLpopup_icon 標準に基づく 4 種類のファイル形式を導入しました。

ファイル拡張子 ファイル タイプ マクロの許可
DOCX 圧縮文書 ×
DOTX 圧縮テンプレート ×
DOCM 圧縮文書
DOTM 圧縮テンプレート

 

ファイルの内容を検査してファイル タイプを判断する UNIX ベースのオペレーティング システムとは異なり、MS Windows はファイル拡張子(最後の「.」の後の文字列)に基づいて、ファイルがクリックされた際にどのアプリケーションで開くかを判断します。MS Office は、インストール後、自らを上記の拡張子と関連付けます。よって、上記のファイル タイプはすべて、クリックすると MS Word が開くことになります。

DOCX:マクロの保存不可

 

 

 

 

図 2:マクロ コードを DOCX に保存しようとした場合

MS Office 2007 よりも前の MS Word の DOC ファイルでは、マクロを含め、文書への多様なコンポーネントの組み込みが可能でした。そのため、ユーザはファイルを開く前に、文書が安全かどうかを確信できませんでした。MS Office 2007 では、OfficeOpen XML(OOXML)を組み込むことで、こうした不安を払拭しました。各ファイル形式は zip アーカイブであり、共通のレイアウトに基づいて XML ファイルが含まれています。

アーカイブ内にある [Content_Types].xml コンポーネントは、ファイル内にある他のコンポーネントの MIME タイプ情報を提供します。MS Word がサポートする 4 つのファイル形式は、それぞれ固有の MIME タイプを持ちますが、そのうち DOCM と DOTM の 2 つの形式のみがマクロを保存、実行できます。Content_Types コンポーネントで DOCX または DOTX の MIME タイプを宣言している場合、MS Word はマクロ コードを保存することも実行することもできません。

拡張子の DOCX を DOCM に変更するだけでマクロ コードの追加は可能になるか

DOCX ファイルを DOCM ファイルに名称変更するだけでマクロが追加できるようになるのでしょうか。OOXML(OfficeOpen XML)ファイル形式ではファイル名の拡張子と MIME タイプが一致しているかチェックされるため、できません。

Microsoft Word で文書を開く際、ファイル名がチェックされ、文書が OOXML であるかどうか確認されます。偽の DOCM ファイルを開くと、DOCX を示す不適切な MIME タイプが存在するため、エラー ポップアップが起動します。

図 3:DOCX ファイルに名称変更された DOCM ファイルを開こうとした場合

ファイル拡張子 MIME タイプ
DOCX application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml
DOCM application/vnd.ms-word.document.macroEnabled.main+xml
DOTX application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml
DOTM application/vnd.ms-word.template.macroEnabledTemplate.main+xml

マクロを含む OOXML 文書は DOCM の拡張子を持つ必要があるか

一般的には、MS Word はファイル名の拡張子ではなくファイル データに基づいてファイルを開きます。なので、MS Word がデータ構造を特定できさえすれば、ファイルは正常に開きます。ファイルが MS Office 2007 ファイルとして認識された場合、ファイル内に正しい MIME タイプが宣言されている必要があります。そうでない場合は検証エラーとなり、ファイルは開けません。

OOXML ファイル タイプは MS Office のコンポーネント WWLIB.DLL により検証されます。このコンポーネントはファイルの MIME タイプが想定されたとおりのものであることを確認します。ファイルの拡張子が OOXML ファイル タイプであることを示していない場合、MIME タイプが実際には OOXML であっても、この検証には常に合格してしまいます。つまりマクロを含む OOXML 文書(DOCM または DOTM)で、DOCM あるいは DOTM 以外の拡張子を持つものも、正常に読み込まれるということです。これは OOXML ファイルが OOXML ファイルとは異なる拡張子を持つ場合も同様です。MS Word がその形式に対応するよう登録されていれば、問題なく開けてしまいます。

つまり、マクロが組み込まれた DOCM ファイルを、ファイル拡張子を変更することで、別のファイル形式に見せかけることができるということになります。たとえば、RTF ファイル形式は MS Office マクロ コードには対応していませんが、DOCM ファイルの名前を変更して RTF ファイルとすることで、MS Office でこのファイルを開きマクロ コードを実行できてしまいます。この手法は現在、マルウェア開発の現場popup_iconにおいて利用popup_iconされています。

図 4:拡張子が DOCX のファイルに対して WWLIB.DLL が実施する MIME タイプの検証

ネイティブでのファイル データ特定と OOXML

2016 年 5 月に、実際の MIME タイプは application/vnd.ms-word.template.macroEnabledTemplate.main+xml、つまり DOTM であるのに、DOC、RTF、DOT の拡張子を持つファイルの送信が確認され始めました。ネイティブ プログラムでファイル タイプを特定したところ、「Microsoft Word 2007+」(図 1 参照)であるとされたため、DOCX ファイルとして実行されました。これらのファイルは悪意のある動作を示すには至らず、図 3 のようなポップアップ エラー ボックスを表示するにとどまりました。

この情報が持つ意味

このような攻撃が実際に行われている

Talos はこうしたマクロ対応テンプレート(本セクションでは DOTM と呼びます)の出現を追跡してきました。その結果、この数ヵ月で出現頻度が急激に上がっていることがわかっています。3 月 18 日から 7 月 13 日までの間に見つかったすべての DOTM を集め、マクロのペイロードを調査しました。分析の結果、これらの文書で機械的に難読化されたマクロが再利用されていることがわかりました。

難読化による固有マクロの重複利用が判明したので、4 つ以上の異なる DOTM ファイルに含まれている固有マクロを取り上げ、さらに詳しく調べました。これらのマクロは、4 ヵ月の間に見つかったすべての DOTM のうち、64 % もの DOTM に含まれていました。

収集方法

この分析には Virus Total のファイル リポジトリにある DOTM ファイルを使用しました。DOTM ファイルは MIME タイプ文字列「application/vnd.ms-word.template.macroEnabledTemplate」で識別し、個々のファイルは初回提出日に基づいて選択しました。

分離手法

ClamAV はシグネチャ作成を支援する補助的なコマンドライン コンポーネントである sigtoolpopup_icon を提供しています。sigtool はマクロのテキストを Microsoft Office 文書ファイルから抽出します。マクロを特定するため、DOTM アーカイブをすべて解凍し、そこに含まれる ./word/vbaProject.bin ファイルを調査しました。sigtool による抽出後、異なる vbaProject.bin ファイルを同じコードで集約することにより、マクロが重複していることがわかりました。

収集したすべてのマクロの 5 % が DOTM ファイルの 64 % に関与していました。上位 255 の固有マクロの 1 つは空のファイルでした。つまり、vbaProject.bin を含まない DOTM ファイルでした。このファイルは分析結果から除外し、残り 254 の固有マクロの調査を行いました。

表 2:DOTM ファイルおよびマクロ ファイルの数

マクロの総数 6054
DOTM の総数 16377
固有マクロ 5641
まれなマクロ(発見された DOTM が 4 つ未満) 99
頻繁にみられたマクロ(発見された DOTM が 4 つ以上) 314
頻繁にみられたマクロを含む DOTM 10518

 

image5

 

 

 

 

 

 

 

 

 

 

 

 

グラフ 1:重複マクロ(固有マクロ数:254)のサンプル

分類手法

難読化によるマクロの重複が判明すると、5 月を通じて攻撃活動が行われていたことが明らかになりました。グラフ 1 の 6 月から 7 月にはピークはありませんが、実際に収集された DOTM ファイルの 5000 以上(重複分を含めた数)はこの両月に由来します。難読化による多様化の手法が改善されたか、5 月の成功を受けて、より洗練された攻撃者も参加するようになったことが推察されます。さらに分類する必要があったため、ClamAV のスキャン エンジンを利用することにしました。

254 のサンプルをグループに分けるため、19 の LDBpopup_icon シグネチャを生成しました。マクロのスクリプト内で使用される文字列の自動分析に基づいて、9 つのシグネチャが作成できました。さらに何世代にもわたって利用される 1 つの難読化手法に対応するため、手動で 9 つのシグネチャを作成しました。これら 18 のシグネチャにより、上位 254 のサンプルのうち 3 つを除くすべての固有マクロが特定できました。この 3 つのうち 2 つを調査した結果、問題にするほどのマクロではないことがわかり、しかもその 1 つは空でした。しかし、残る 1 つは、上記 18 のシグネチャをすべて回避する独自の手法で難読化されていました。これに対応するため、シグネチャを特別に手動で作成しました。

これらのシグネチャにより、マクロを 4 つのグループに分類しました。シグネチャの多くはグループ間で重複しており、マクロの分類には役立ちませんでした。複数のシグネチャが、ファイル終了時にトリガーされるマクロを検出しましたが、これによって、1 つのマクロ グループが形成されます。また別のグループでは直接配列の構築を特徴とし、さらに複素配列の構築を特徴とするグループ、共通のデータが文字列に埋め込まれているグループの計 4 グループが形成されました。

 

 

 

 

 

図 5:明らかに機械的に生成されたマクロは 8 つのみ

image7

 

 

 

 

 

 

 

 

 

 

グラフ 2:攻撃マクロの 4 つのグループ(A、B、C、D)

さらなる悪用の可能性

本稿では MS Word に着目していますが、MS Excel や PowerPoint にも類似の OOXML 形式が存在します。マクロが組み込まれた PPTM ファイルが、無害な PPT プレゼンテーションになりすますこともできるのです。さらに悪いことには、同じ手法を使ってマクロが組み込まれた MS Excel XLSM ファイルをテキストのみの CSV スプレッドシート ファイルに見せかけることもできるのです。Excel はこうしたファイルを疑うことなく開き、そこに含まれるコードを実行してしまいます。

攻撃に打ち勝つ

こうした攻撃は、DOCM または DOTM の MIME タイプに遭遇した際に、ファイルの拡張子が想定どおりであることを確認するよう WWLIB の検証を修正することで簡単に阻止できます。

macroEnabledTemplates はあまり使われておらず、また配布もされていないファイル タイプです。悪意のあるファイルをエンド ユーザから遠ざけておくために、ネットワーク ゲートウェイでこのファイル形式をブロックしたとしても、ビジネスへの影響は極めて低いでしょう。

まとめ

2003 年以来、Microsoft Word では文書に組み込まれた悪意あるマクロの実行に対して、多くの保護措置をとってきました。MS Office 2007 のファイル形式では、マクロを含むことのできるファイル タイプと含むことのできないファイル タイプを区別しています。しかし、このようなファイル タイプによる保護は完全とは言えません。攻撃者はマクロが組み込まれた OOXML 文書を別のファイル タイプに見せかけることによって、Microsoft Office によるファイル タイプ検出を回避できることを知ってしまいました。この検証機能が修正されるまで、疑わしい MS Office 文書には警戒する必要があります。「安全な」ファイル形式であっても、悪意のあるコードを含む可能性があるからです。

検出の指標

お客様がこの脅威を検出してブロックするための方法を以下に記載します。

image8

Advanced Malware Protection(AMP)は、マルウェアの実行の阻止に最適です。

CWSWSA の Web スキャンは、悪意のある Web サイトへのアクセスを阻止し、マルウェアを検出します。

ESA は、攻撃活動の一環として攻撃者が送信した悪意のある電子メールをブロックできます。

ClamAV はこうした攻撃を OXmlEvader として検出します。

 

本稿は 2016年8月2日にTalos Grouppopup_icon のブログに投稿された「Macro Intruders: Sneaking Past Office Defensespopup_icon」の抄訳です。

コメントを書く