フィッシング詐欺に悪用されかねない一太郎の脆弱性

FortiGuard Labsチームは、世界中のフィッシング詐欺やスパム攻撃を継続的に追跡しています。フィッシング詐欺を目的とするマルウェア攻撃では、最も一般的に使用される経路の1つとして、マクロが有効で不正ペイロードを含むドキュメントをユーザーに送信します。DridexFareitHancitorなどの感染率の高いマルウェアファミリーは、この攻撃経路を使用しています。このような攻撃を成功させるうえで鍵となるのは、電子メールメッセージに添付された不正ファイルをクリックするようにユーザーに促すことです。そのため、マルウェアの配信者はユーザーに不正コンテンツを実行させるための方法を常に模索しています。

この記事では、OLEオブジェクトの埋め込みと呼ばれる手法について説明します。これは、マルウェアのペイロードを配信するために一部のスパム攻撃で使用されている一般的な手法です。特に、日本でMicrosoft Wordの代替として広く使用されている一太郎で作成した文書で、この手法をどのように使用できるかについて詳しく検討します。

図1:Microsoft Officeドキュメントに埋め込まれたOLEオブジェクトを使用するフィッシング詐欺
図1:Microsoft Officeドキュメントに埋め込まれたOLEオブジェクトを使用するフィッシング詐欺

Microsoft Officeの不正ファイルの添付は、フィッシング詐欺攻撃で最も一般的に使用される感染方法です。フォーティネットの分析では、一太郎での埋め込みOLEオブジェクトの処理方法がMicrosoft Wordと同じであることが明らかになりました。つまり、一太郎ユーザーもこの攻撃経路に対して脆弱なのです。さらに一太郎ユーザーは、この種のフィッシング詐欺から自らを守るうえで、ドキュメントの取り扱いに関してOLEオブジェクトと「リンク」機能の2つの問題にも注意すべきです。

一太郎での攻撃経路としてのOLEの使用

「パッケージオブジェクト」を使用することで、一太郎とMicrosoft Officeの両方で任意のファイル(.exe、.dllなど)をドキュメントに埋め込むことができます。

図2:一太郎のオブジェクトパッケージ
図2:一太郎のオブジェクトパッケージ

その結果、Microsoft Officeユーザーに添付ドキュメントを実行させるための方法を使用して、一太郎ユーザーを同様に騙すことができます。埋め込みファイルを実行するには、攻撃を受けたユーザーがパッケージアイコンをダブルクリックする必要があります。次の図に示すように、Microsoft Officeと一太郎のOLE機能はどちらも、信頼できないファイルを開くかどうかをデフォルトでユーザーに確認します。

図3:OLEファイルを開く際に表示される警告
図3:OLEファイルを開く際に表示される警告

多くの場合、ユーザーの意識はファイルの名前と拡張子に向けられます。巧妙なファイル名が付けられていると、ユーザーがファイルの実行を許可する確率が高くなります。さらに、次の図に示すように、攻撃者は古典的なリバースファイル名のトリックを使用することで、ユーザーには.jtdファイルを実行するように思わせておいて、実際にはファイルに.htaスクリプトを実行させることができます。

図4:ファイル拡張子のリバースが使用されている場合の警告
図4:ファイル拡張子のリバースが使用されている場合の警告

一太郎のOLEの脆弱性

Microsoft Officeと一太郎は、OLEオブジェクトを概して同じように処理しますが、Microsoft Officeではより多くのセキュリティメカニズムが使用されています。

Microsoft Officeの場合、OLEオブジェクトは、アクセスされ、ユーザーがプロンプトのダイアログボックスで明示的に同意した場合にのみ、ユーザーの%TEMP%フォルダーにドロップされます。一方、一太郎の場合、ドキュメントを開くと即座にすべての埋め込みOLEオブジェクトが自動的に%TEMP%フォルダーに書き込まれます。これによって新たな攻撃対象領域が直ちに生まれます。ここでは、DLLの乗っ取りとハイパーリンクを利用してドロップされたファイルを実行できます。この点については、次のセクションで詳しく説明します。


ビデオ1:一太郎の場合、OLEオブジェクトは自動的に%TEMP%にドロップされる

「ハイパーリンク」機能の悪用

Microsoft Officeのハイパーリンクをトリガーするには、Ctrlキーを押しながら左クリックする必要があります。しかし、一太郎のハイパーリンクは、デフォルトではマウスを1回クリックするだけでトリガーされます。その結果、参照されたファイルがすぐに開かれたり実行されたりすることになります。つまり、クリック操作を1回誤るだけで不正なバイナリファイルを開いてしまう可能性があるのです。

幸い、Windowsには、ファイルの拡張子やファイルソースなどのいくつかの基準に基づいて、ファイルを信頼できるかどうかを判断する方法があります。この情報により、実行前に警告プロンプトをユーザーに表示すべきかどうかが決まります。このような警告は、当然ながら攻撃者には歓迎されません。残念ながら、この警告を回避する方法が存在し、これについては次のセクションで説明します。

次のビデオは、Microsoft Windowsが信頼できないHTA実行ファイルについてはプロンプトを表示し、信頼できるネイティブのWindowsアプリケーションのcalc.exeについてはプロンプトを表示しない様子を示しています。


[ビデオ2 - OLEファイルの実行]
ビデオ2:ローカルコピーを指すハイパーリンクを介する埋め込みHTA OLEオブジェクトの実行


ビデオ3:calc.exeのパスを指すハイパーリンクを介するcalc.exeの実行

攻撃シナリオ

攻撃者は、警告プロンプトを表示させずに信頼されないDLLバイナリファイルを実行させることを目指します。一太郎は、ローカルコピーを指すハイパーリンクを介してOLEオブジェクトを実行するとき、ブラウザがダウンロードしたばかりの実行ファイルを開くときの動作に似た方法でシナリオを処理します。前のビデオに示すように、ファイルのソースが不明であるため、Windowsはセキュリティ警告を表示します。

これを回避するため、ローカルコピーの1つを指すハイパーリンクを使用して、OLEオブジェクトのローカルコピーをユーザーの%TEMP%ディレクトリに自動的に書き込むという一太郎固有の動作を利用します。セキュリティ警告を表示させないようにするには、Windowsがリンクされたファイルを信頼する必要があります。これらの要件を踏まえると、DLLプリロードの脆弱性を使用することで確実な成果を上げることができます。信頼されるファイルタイプ(Excelファイルなど)がDLLプリロードの脆弱性を含むアプリケーションに関連付けられている場合、攻撃者は信頼されるファイルとDLLバイナリを一太郎ドキュメントに埋め込むことができます。次に、信頼されるファイルを指すハイパーリンクが開かれると、DLLバイナリが自動的にロードされ、実行されます。これは、一太郎が同じディレクトリ(%TEMP%)にOLEオブジェクトをドロップするためです。

結論

ここで説明したフィッシング詐欺の減災のために、「単発」で効く解決策はありません。しかし、一太郎ドキュメントでハイパーリンクのトリガーの「ワンクリック」オプションを無効にすることで、攻撃対象領域を制限できます。

図5:一太郎での「ワンクリック」オプションの無効化
図5:一太郎での「ワンクリック」オプションの無効化

ここで説明した手法を使用する攻撃は、実際にはまだ発見されていません。しかし、すべてのユーザーが慎重な行動をとり、攻撃の一歩先を行くためには、意義ある注意喚起となるでしょう。

-= FortiGuard Lion Team =-
[1] https://enigma0x3.net/2016/03/15/phishing-with-empire/
[2] https://blog.fortinet.com/2015/12/10/a-crash-course-in-dll-hijacking