Malcrafted SWF Threat in the Wild」より
March 10,2009 posted by Ulysses Wang,Security Researcher

 当研究所(米ウェブセンスのセキュリティ・ラボ)は,悪質なSWFファイル(Flashの動画ファイル)が新たにまん延していることを確認した(関連記事:Flash Playerに危険な脆弱性,動画ファイルを開くだけで被害の恐れ)。SWFファイルはインターネットで非常に普及しており,多くのWebサイトがリッチ・コンテンツの提供手段として使っている。SWFファイルの多機能性が人気の理由だが,そこに悪者の付け入る隙がある。最近の傾向として,SWFファイルでユーザーのアクセスをリダイレクトする例が増えている(関連記事:悪質なFlashリダイレクタ)。驚いたことに,従来のウイルス対策ソフトはこの問題を全く検出できない。

 通常,リダイレクト用SWFファイルの容量はとても小さく(一般的にわずか142バイト),非常にありふれた「ie.swf」という名前が付けられている。我々は独自のSWF解析ツール「FlashDetection」を使ってこのファイルを分析し,タグ情報をすべて入手した(図1)。同ファイルのタグは,「FileAttributes」「SetBackgroundColor」「DoAction」「ShowFrame」の4個とよく分からない1個の合計5種類しかなかった。米アドビ・システムズの「Adobe Flash Player」は,処理中に不明なタグを無視して残りを解析する。FileAttributes,SetBackgroundColor,ShowFrameは一般的なタグなので,我々はactionscript2命令を格納しているDoActionタグに注目した。

図1●タグ情報

 まず逆コンパイラ「flare」でこのアクション・スクリプトを逆コンパイルしたところ,flareがクラッシュしてしまった。そこで,バイナリ・コードをダンプし,クラッシュの原因を調べてみた(図2)。アドビのドキュメントを頼りにこのバイナリを解読し,以下のことが分かった。最初のアクション・スクリプト命令はActionJump(0x99)で,ジャンプのオフセット値は0x2Cである。オフセット先にはActionConstantPool(0x88)があり,パラメータは文字型で「flashccVersion /:$version i.SWF _root」だった。次の命令もActionJumpで,オフセット値0xFFA9にジャンプする。オフセットが負の値なので前に戻ってActionPush(0x96)を実行するため,最初のActionJump命令とこのオフセット地点に挟まれた16進データ列「63 02 00 00 00」は決して実行されない。これはAdobe Flash Playerにとっては全く意味をなさない「opcode」となる。flareのような逆コンパイラでこのopcodeを解読すると,クラッシュしてしまう。PEファイル(Windows実行形式ファイル)の逆コンパイルを阻止するコードと類似しており,このSWFファイルは手動で作成されたと思われる。

図2●DoActionタグの中身

 ここから後ろには,複数のスタック命令と一つのActionGetUrl2命令が続く。これにより,このSWFファイルは,URLの基本部分が同じ別のSWFファイルを実行する。この新たなSWFファイルは,米IBM傘下のインターネット・セキュリティ・システムズによって明るみに出た(関連PDF文書)Flash Playerに存在するぜい弱性「CVE-2007-0071」を突き,マルウエアをダウンロード/実行する。

 2番目のSWFファイルがダウンロードしたマルウエアはダウンローダであり,以下に示した悪質な実行可能ファイルをダウンロードする(図3)。

図3●悪意なファイルのダウンロード

 Adobe Flash Playerを最新版に更新することを強く推奨する。当研究所では,SWFファイルの脅威から顧客を守るため,今後も調査を続ける。


Copyrights (C) 2009 Websense, Inc. All rights reserved.
本記事の内容は執筆時点のものであり,含まれている情報やリンクの正確性,完全性,妥当性について保証するものではありません。
◆この記事は,ウェブセンスの許可を得て,米国のセキュリティ・ラボの研究員が執筆するブログWebsense Security Labs Blogの記事を抜粋して日本語化したものです。オリジナルの記事は,「Malcrafted SWF Threat in the Wild」でお読みいただけます。