Flamer は、コンピュータからコンピュータへ拡散することができます。ただし、自動的には拡散せず、攻撃者からの指示を待ちます。拡散の方法は次のとおりです。
これらのほとんどは単純な方法ですが、最後の方法は今回初めて確認された方法であり、接合ポイントを使用する点が非常に興味深いと言えます。
接合ポイントとは、ユーザーがディレクトリのエイリアスを作成できる Windows 機能です。たとえば、C:\My\Very\Long\Directory\Path という長いパスが存在した場合、接合ポイントを C:\MyJunction という名前にして、より簡単に C:\My\Very\Long\Directory\Path にアクセスできます。接合ポイント自体はただのディレクトリですが、特殊な属性が設定されます。
Flamer は接合ポイントを利用してファイルを隠し、自動実行できるようにします。
Flamer は、変数名を使用してリムーバブルドライブに通常のディレクトリを作成します。ここでの例では「MyDocs」を使用しています。Flamer は、ディレクトリ内に次の 3 つのファイルを追加します。
- Flamer 本体(mssecmgr.ocx など)
- desktop.ini
- target.lnk
Desktop.ini は、Windows によって認識される特殊な構成ファイルです。ユーザーはこのファイルを使用して、ディレクトリのプロパティと動作をカスタマイズできます。Flamer は desktop.ini 構成ファイルに ShellClassInfo セクションを追加して、接合ポイントとして動作させます。通常、接合ポイントには別のディレクトリのエイリアスのみを設定できます。たとえば、ユーザーは、接合ポイントに実行可能ファイルのエイリアスを設定することはできません。これは、ユーザーがディレクトリを開こうとして実行可能ファイルを実行することがないようにするためです。
Flamer は、特殊なトリックを使ってこの動作を迂回します。ShellClassInfo セクションに 3 つの CLSID エントリを追加し、特別に選択された CLSID を指定します。
この CLSID により、「MyDocs」ディレクトリは接合ポイントになりますが、別のディレクトリにリダイレクトされる代わりに、ディレクトリ内に存在する target.lnk という名前のファイルのエイリアスが接合ポイントに設定されます。
ユーザーがエクスプローラーを使って「MyDocs」フォルダを開こうとしても、フォルダは開きません。代わりに、target.lnk に定義されているディレクトリに移動します。つまり、ユーザーは、target.lnk や Desktop.ini など「MyDocs」の中のファイルを参照することができません。さらに重要なことに、ユーザーは Flamer(mssecmgr.ocx)自体の参照もアクセスもできません。Flamer が、接合ポイント内にある Flamer 自体を隠すためです。
ここまでは、接合ポイントを使用する目的のうちの半分を説明しているにすぎません。後は、隠された Flamer 自体を実行させる方法が別に必要です。LNK ファイルが使用されているので、Microsoft Windows Shortcut 'LNK/PIF' Files Automatic File Execution Vulnerability(Microsoft Windows ショートカットファイル 'LNK/PIF' に関する自動ファイル実行の脆弱性)(CVE-2010-2568)を活用します。
Flamer は、「ショートカット」の脆弱性を利用するように特別に作成された target.lnk ファイルを使って自動実行され、コンピュータに感染します。リムーバブルドライブを参照すると、Windows は target.lnk ファイルの接合ポイントを自動的に解決しようとします。target.lnk ファイルが自動的に解析され、「ショートカット」の脆弱性を介して、Flamer(mssecmgr.ocx)の CPlApplet エクスポートが自動的に実行されます。この最終ステップにより Flamer が実行され、別のコンピュータに感染します。
- 感染したリムーバブルドライブを挿入すると、ユーザーは、フォルダがあることはわかるがフォルダ内を確認することはできない
- Windows が自動的にフォルダを開いて、中にあるファイルを解析する
- 「ショートカット」の脆弱性を利用する LNK ファイルを介して Flamer が実行される
実際のフォルダ名は設定可能です。シマンテックが確認したサンプルでは、Flamer は「.MSBTS」または「~WRM3F0」で始まるフォルダ名を使用しています。Flamer 本体のファイル名も設定可能で、シマンテックが今までに確認したサンプルは、LSS.OCX、SYSTEM32.DAT または NTVOLUME.DAT という名前が付いていました。興味深いことに、Flamer にはリムーバブルドライブに感染する方法が 2 通りあります。「ショートカット」の脆弱性と接合ポイントを使用する方法、および autorun.inf を使用する方法です。Stuxnet でも、同じように autorun.inf を使用する方法と「ショートカット」の脆弱性を使用する方法がありました。Stuxnet の場合、古い亜種では autorun.inf のみを使用し、「ショートカット」の脆弱性を使用するように後からアップグレードされたことがわかっています。autorun.inf を単独で使用した Flamer の亜種はまだ発見されていませんが、「ショートカット」の脆弱性の適用パッチが公開されたため、今後の確認において Flamer が autorun.inf を追加したとしても不思議ではありません。
Flamer は、非常に大規模なため、引き続き脅威を分析していけば、さらに興味深いトリックや新しい手法が見つかるだろうと推測しています。
* 日本語版セキュリティレスポンスブログの RSS フィードを購読するには、http://www.symantec.com/connect/ja/item-feeds/blog/2261/feed/all/ja にアクセスしてください。