Flashバナーを介したドライブバイダウンロード攻撃と新しいマルウェア配布ベクトルの検出について

今日は、Flashバナーを使用した新しいタイプのドライブバイダウンロード攻撃とその対処方法についてお話したいと思います。 このような攻撃により、攻撃者はハッキングせずにサイト全体にウイルスを拡散できます。 悪意のあるソフトウェアは、Webマスターがサイトを収益化するために使用するFlash広告バナーを通じて配信されます。 ただし、Webページにインストールされたバナーにより、ポータルがウイルス配布ネットワークの一部になっていることを疑うことはありません。



悪意のあるコード

たとえば、Webブラウザのコンテキストで悪意のあるJavaScriptコードを実行できるのは、ActionScript 3.0に登場したExternalInterfaceクラスのcall()メソッドのおかげです。 ActiveXを操作する機能をサポートするWebブラウザーのコンテキストでJavaScriptコードを実行するプロセスは、Shockwave FlashのActiveXコンポーネントを介して実装されます。 また、この機能のないWebブラウザーでは、Shockwave Flashのプラグインが使用されます。 ActiveXコンポーネントまたはプラグインは、処理のために送信されたFlashファイルのバイトコードを解析し、そのような機能がFlashファイルに存在する場合、Webブラウザーのコンテキストで実行されるJavaScriptコードを生成します。 JavaScriptコードが生成されると、ActiveXコンポーネントまたはShockwave Flashのプラグインで事前定義されたJavaScript関数を介して処理のためにさらに送信されます。 図1は、このような関数のリストを示しています。



画像



図1-ExcternalInterface.call()に渡されたコードの形成とさらなる実行が行われるJavaScript関数



テストFlashバナーの無害なJavaScriptコードを以下に示します。これは、ActiveXコンポーネントまたはShockwave FlashのプラグインによってWebブラウザーのコンテキストで実行するために生成されます。









Yandex.Photosで表示



図2-ActiveXコンポーネントまたはShockwave Flashのプラグインによって生成されるExcternalInterface.call()に渡されるテストFlashバナーのJavaScriptコード





Yandex.Photosで表示



図3-テストFlashバナーからExcternalInterface.call()を実行した結果



図3は、Firefoxブラウザー用のFireBugプラグインウィンドウと、テスト用のFlashバナーを表示し、悪意のあるアクションを実行しない準備済みのJavaScriptコードを呼び出した結果を示しています。 したがって、ExternalInterfaceクラスのcall()メソッドを使用して、JavaScriptの任意の関数を呼び出すことができます。 これにより、攻撃者は悪意のあるアクションを実行できます。





Yandex.Photosで表示



図4-HTMLページで外部JavaScriptスクリプトを使用するために、FlashバナーからExcternalInterface.call()を呼び出す





Yandex.Photosで表示



図5-JavaScriptを使用してセッションデータを盗むためにFlashバナーからExcternalInterface.call()を呼び出す



FlashバナーからJavaScriptコードを正常に実行するための制限がいくつかあります。これはFlashランタイムに適用され、flash.systemパッケージのfscommand()関数の公式マニュアルページで説明されており、ExcternalInterface.call()に適用されます。 このような制限は、外部パラメーターに応じて適用されます。 つまり、allowScriptAccessプロパティが次の場合:



•sameDomain(デフォルト)-Webページと同じドメインにあるSWFファイルに対してのみスクリプトが許可されます。

•常に-SWFは、別のドメインにある場合でも、埋め込まれているHTMLページにアクセスできます。

•never-SWFファイルはHTMLページにアクセスできません。



Yandexが開発したWebページ上の悪意のあるコンテンツを検出するシステムは、 2010年12月に悪意のあるJavaScriptコードを実行するこの方法の使用を初めて発見しました。



2012年4月24日の時点で、このファイルはVirusTotalサービスで提供される42個のウイルス対策プログラムのうちの1つだけで検出されました。 つまり、 ソフォスのアンチウイルスは判定Troj / SWFDlr-ABを使用しています。

ハッシュ量の悪意のあるSWFファイル:



•MD5:fd588c260cf38be7a7259c195da5b023

•SHA-1:9db53d82392c85451e99cb7736ba7b30498e1624

•SHA-256:e15758a2f0ec5b6cb3203ee42d0454ffc7830a2026bcc3eebfdfa9bd0017c965



画像



図6-ソフォスの分類によるTroj / SWFDlr-ABとして検出された悪意のあるFlashバナー



この悪意のあるSWFファイルの本文にはActionScriptコードが含まれています。これを次の図に示します。





Yandex.Photosで表示



図7-Troj / SWFDlr-AB FlashバナーのExcternalInterface.call()メソッドに渡された悪意のあるコード



この図からわかるように、HTTPヘッダーで渡されたUser-Agentフィールドの値がチェックされます。 ブラウザーがChromiumファミリーに属しておらず、同時にこのFlashアプリケーションへのアクセスが目的のアドレス(図のコードフラグメントに示されている)から発生した場合、ページ上に非表示要素が作成され、アドレスhxxpに悪意のあるJavaScriptコードがロードされます:// 66.199.232.59/workarounds.js。 悪意のあるコードの拡散時には、workarounds.jsファイルのスクリプトにcounts()関数が含まれていました。 実行後、この関数はページ上に非表示のDIV要素を作成し、その中に非表示のIFRAMEを作成しました。 後者のSRC属性には、アドレスhxxpが含まれています://nnuled.co.cc/in.cgi?3-TDS Sutraに切り替えます。





Yandex.Photosで表示



図8-workarounds.jsファイルのcount()関数の悪意のあるコードの一部



さらに、アドレスhxxp://nnuled.co.cc/in.cgi?3から、hxxp://ds3c.co.cc/index.php?Tp = 50afe4b907e38c82にあるBlackHole Exploit Packへの移行が発生しました。 そこから、マルウェアが広がりました。



このファミリの悪意のあるFlashバナーが初めて発見されて以来、攻撃者は悪意のある呼び出しと悪意のあるコードを検出する機能を複雑にし始めています。 これは、悪意のあるFlashバナーによって証明されており、その分布は2012年4月中旬に記録されました。 その時点で、検出されたファイルは、 VirusTotalサービスで提供されるウイルス対策ソフトのいずれによっても悪意があるとは見なされませんでした。



ハッシュ量の悪意のあるSWFファイル:

•MD5:6daa91ce91eee37be0d89e351a7e3a3e

•SHA-1:bccc85031396e9c14911ed1c5e6829087eeb9893

•SHA-256:92395014ac2a8a9e35eaf17f6e73b4fdd643538afbff0bf50afb80f0c6dfccfb



画像



図9-2012年4月中旬に検出された悪意のあるFlashバナー



外観は通常のFlash広告バナーですが、このSWFファイルのコンテンツには別のSWFファイルがあります。



画像



図10-別のSWFファイルを含むFlashバナー



このSWFファイルは、図11に示すように、ActionScriptコードを使用してバイナリ配列からロードされます。





Yandex.Photosで表示



図11-バイナリ配列からのSWFファイルのダウンロード



非表示のActionScriptは非常に難読化されています。 コードの分析を複雑にするために、ガーベッジ命令、誤ったトレース、および予約語(if、for、do、eachなど)がメソッドおよび変数の名前として使用され、Flashバナーがどこからアクセスされ、現在、アプリケーションはデバッグ中です。 難読化解除後、ActionScriptコード内の大きな整数の2次元配列は文字列に変換されます。



•スーパーフー

•ファイル://

•スタンドアロン

•sendtoas

•en

•ru

•ランブラー

•Mail.Ru

•YB

•Yx

•はい

•開始

•グーグル

•ボット

•ボット

•GTB

•vkontakte

•mail.ru

•ビング

•yahoo

•グーグル

•ヤンデックス

•ランブラー

•Windows

•MSIE

•エクスプローラー

•Firefox

•オペラ



悪意のあるコードは、HTTPヘッダーで渡されたUser-Agentフィールドの値をチェックします。 上記のリストにリストされている一般的なブラウザのいずれとも一致しないか、サイト訪問者が検索ロボットであることを示す部分文字列が含まれている場合、悪意のあるコードは動作を停止します。 また、検索結果ページまたは大きなポータルからの通過について、HTTPヘッダーで送信されたRefererフィールドの値をチェックします。 上記のすべての条件が満たされると、JavaScriptコードが読み込まれ、難読化された形式で悪意のあるバナー内に保存されます。 以下は、その実行の主な機能を表示する、解読された悪意のあるJavaScriptコードの一部です。 悪意のあるコードの検出をより困難にするために、メインのJavaScriptコードを実行した後、悪意のあるアクティビティの痕跡を削除するコードが実行されます。



画像



図12-悪意のあるアクティビティの痕跡を削除するJavaScriptコード





Yandex.Photosで表示



図13-SWFファイルからの難読化された悪意のあるJavaScriptコード



悪意のあるコードは、<SUB> yadro-yadro.comリソースから悪意のあるスクリプトをロードするWebページに非表示のコンテナーを作成します。ここで、<SUB>はランダムな整数です。 そこから、.cxドメインゾーンにある悪意のあるホストにリダイレクトされます。このゾーンには、悪意のあるコードの拡散時にNuclear Exploit Packが配置されていました。



この方法での悪意のあるコードの分布は、 Yandexビヘイビアーアナライザーによって検出されることはほとんどなく、四半期に1〜2回です。 しかし、悪意のあるFlashバナーは主に、多数のユーザーが毎日アクセスする有名なポータルのページからダウンロードされるため、感染したコンピューターの数は非常に多くなります。



ほとんどの場合、この方法を発明した人々は、この方法との戦いを複雑にするために、この方法を秘密にしておきました。 この方法を使用した感染リソースからの悪意のあるコードのアクティブな配布は、平均して2日以内ですが、これについて必要なすべての情報を収集するには十分です。



特に、OpenX Ad Serverと統合されたCMSは、悪意のあるコードを拡散するために最もよく使用されます。 OpenX Ad Serverは、サイト上の広告、インプレッション数、クリック単価などを管理するための一般的なシステムです。 作成されたFlashオブジェクトのallowScriptAccessパラメーターは「always」に設定されているため、攻撃者はそれを使用するサイトを正確に選択します。 OpenX Ad Serverを使用して広告バナーをローテーションするサイトが見つかった後(これは難しくありません-このシステムは非常に人気があります)、攻撃者は悪意のあるFlashオブジェクトの配置についてのみ同意できます。





Yandex.Photosで表示



図14-OpenX Ad Serverで新しいFlashオブジェクトを作成するためのJavaScriptコード



おわりに

おそらく、しばらくすると、このような悪意のあるFlashアプリケーションは、従来のウイルス対策ソフトウェアによって確実に検出され、使用する脆弱性は閉じられます。 ただし、それまでは、サイトのユーザーの安全とサイトへの安定したトラフィックを確保するために(感染によりトラフィックが大幅に減少します)、以下をお勧めします。



•FlashアプリケーションからのJavaScriptコードの実行を禁止するには、allowScriptAccessパラメーターを「never」に設定します。 また、navigateToURL()、fscommand()、ExternalInterface.call()の呼び出しを防ぐために、allowNetworkingパラメーターを「none」または「internal」に設定できます。 残念ながら、これはFlashアプリケーションの機能を減らす必要があるためです。

•広告アプリケーションに必要なnavigateToURL()メソッドが機能し、危険なExternalInterface.call()が失敗するように、Flashバナーを別のドメインまたはサブドメインに配置し、allowScriptAccessパラメーターを「sameDomain」に、allowNetworkingパラメーターを「all」に設定します。

•Flashアプリケーションが機能するために最大限の許可が必要な場合は、ソースコードを取得し、慎重に確認して自分でコンパイルします。 検証中にメソッドnavigateToURL()、fscommand()、ExternalInterface.call()、およびExternalInterface.addCallback()、難読化されたコード、および大規模なデータセットが見つかった場合-これは、このアプリケーションをサイト。

•HTML5は、アニメーション化されたインタラクティブな広告ユニットの代替技術として使用できます。



使用できる制限の詳細については、Adobeの公式セキュリティページと「 ネットワーク接続APIの制限 」ページをよく理解することをお勧めします。



サイトが感染している疑いがある場合、または感染を防止したくない場合は、サイトのセキュリティを確保するための推奨事項を使用できます。 RIT 2012のYandex Safe Searchチームのレポートのテキストから、マルウェアの拡散からサイトを保護する方法について学ぶことができます。



さらに、Yandex Safe Searchブログに研究と分析を定期的に公開しています。ご期待ください。



Yandex Secure Searchチーム



All Articles