感染拡大を意図して設計されたか? 「BKDR_ZACCESS」の特徴とは

トレンドマイクロは、2012年上半期だけで 1億4千万件以上の脅威から保護したことを報告しています。その脅威の中で注意すべき脅威として「ZACCESS」があげられます。「ZACCESS」は、別名「ZEROACCESS」や「SIREFEF」とも呼ばれる不正プログラムで、ルートキット機能を備えているのが特徴です。ZACCESSは、コンピュータへ侵入した後、このルートキット機能を駆使して自身の不正活動を隠ぺいすることでセキュリティソフトなどからの検出を回避して、他の不正プログラムや、偽アプリケーションなどを侵入させます。


表1 にあるように、「BKDR_ZACCESS」は、第3四半期においてアメリカに次いで日本で多くの感染が確認されています。国内ユーザからのお問い合わせも非常に多いことから、リージョナルトレンドラボではより詳細な調査を行いました。

図1:「BKDR_ZACCESS」の感染PC数(期間:2012年1月~10月)
図1:「BKDR_ZACCESS」の感染PC数(期間:2012年1月~10月)

表1:「BKDR_ZACCESS」の感染国TOP10
表1:「BKDR_ZACCESS」の感染国TOP10

■「BKDR_ZACCESS」の特徴1:P2P機能を備える
一般的なバックドア型不正プログラムは、攻撃者からコマンドを受信するため、感染PC からコマンド&コントロール(C&C)サーバへ接続することで、通信のセッションが確立します。しかし、C&Cサーバから感染PC といった逆方向のセッションは確立しません。今回、日本のリージョナルトレンドラボにより解析した「BKDR_ZACCESS」は、P2P機能を用いて双方向の通信を実現しています。この機能によって、C&Cサーバにかかる負荷を削減し、また、この C&Cサーバが閉鎖される事態が起きたとしても耐えうるネットワークを実現しています。P2P機能を利用することで、C&Cサーバを経由せずに感染PC 同士(つまり、ゾンビPC)でコマンドなどを送受信することが可能となります。

図2:「BKDR_ZACCESS」のP2P機能
図2:「BKDR_ZACCESS」のP2P機能

「BKDR_ZACCESS」は、この P2P機能により、クライアントあるいはサーバ両方の役割を果すことができます。「BKDR_ZACCESS」に感染した PC が「サーバ」として機能を担う場合、C&Cサーバとして、他の感染PC にコマンドや不正プログラムを送信することになります。一方、感染PC が「クライアント」として機能を担う場合、設定ファイルに記載されている感染PC の IPアドレスに接続し、この設定ファイルを更新します。その後、コマンドや不正プログラムを受信します。

このように、「BKDR_ZACCESS」に感染すると、感染の被害者になるだけではなく、見ず知らずのうちに加害者として他のPC に感染を拡大することになります。

■「BKDR_ZACCESS」の特徴2:UDP通信においてハッシュ値を利用
「BKDR_ZACCESS」は、”@” という設定ファイルを以下のように作成します。この設定ファイルは、「BKDR_ZACCESS」が「クライアント」として「サーバ」へ接続する際に利用されます。

  • <Windowsフォルダ>\Installer\<CLSID>\@
  • この “@” という設定ファイルには、感染PC の IPアドレスおよびタイムスタンプで構成されており、ファイルのフォーマットは、以下のとおりとなります。

    図3:設定ファイルの構造
    図3:設定ファイルの構造内容

    リージョナルトレンドラボで解析した「BKDR_ZACCESS」の 設定ファイル “@” には、256 もの感染PC の IPアドレスが記載されていました。つまり、「クライアント」として記載されている 256 の IPアドレスの PC に接続して、コマンド受信を試みます。「BKDR_ZACCESS」は、少なくとも 256個の接続が必要であり、迅速に通信するためにも、転転送速度が速く 1対多の通信に向いている「UDP通信」を利用しているものと考えられます。しかし、UDPによる通信においては、データが正しく送信されたか確認する仕組みがないため、送信データ内にハッシュ値を挿入し、受信したデータのハッシュ値を確認することで、UDP通信の弱点を補っていると推測します。

    図4:「BKDR_ZACCESS」が利用するUDP通信のデータ構成内容
    図4:「BKDR_ZACCESS」が利用するUDP通信のデータ構成内容

    ■「BKDR_ZACCESS」の特徴3:Cabinet File Format(拡張子CAB)を利用
    「BKDR_ZACCESS」は、Windowsが32ビットか64ビットか、利用できる管理者権限などの諸条件により、異なる不正プログラムを作成します。そのため、それぞれの条件に合う複数のファイルを用意する必要があり、このため、Microsoft の圧縮形式である キャビネットファイル(拡張子CAB)を利用しています。

    図5:インストール時に利用される解凍されたCABファイル
    図5:インストール時に利用される解凍されたCABファイル

    また、「BKDR_ZACCESS」が利用する キャビネットファイル には、バイナリデータが圧縮されています。そのため、解凍しない限りはファイルの中身をチェックして実行データ部分を確認することは困難です。さらに、「BKDR_ZACCESS」は、キャビネットファイルをハードドライブに保存せずメモリに展開をします。「BKDR_ZACCESS」は、この手法を自身を隠ぺいする目的で利用していると考えられます。

    図6:”svchost.exe”に組み込まれた解凍CABファイル
    図6:”svchost.exe”に組み込まれた解凍CABファイル

    ■「BKDR_ZACCESS」の特徴4:解析を困難にさせる複数回のコードインジェクションなどの手法
    「BKDR_ZACCESS」は、動的かつ継続的にコードを作成し、このコードは未知のパッカーを利用して新たに割り当てられたメモリに挿入され、その後実行されることになります。また、他の不正プログラムではそれほど用いられていない MicrosoftのWindows Native API の機能を頻繁に利用していることを確認しています。そして、以下の図にあるように、不正なコードを複数の正規のシステムプロセスにインジェクトします。このように「BKDR_ZACCESS」を操る攻撃者は、1)未知のパッカーの利用、2)Windows Native API の利用、3)複数回のコードをインジェクションすることで、各セキュリティ関係者による解析が困難にさせ、感染拡大を意図していると考えられます。

    図7:「BKDR_ZACCESS」が利用するコードインジェクションの手法
    図7:「BKDR_ZACCESS」が利用するコードインジェクションの手法

    組み込まれる各コードごとに、その用途が異なるため、全体像を把握するためには、各コードを解析する必要性があり、その結果、解析に時間がかかることとなります。

    1. 「BKDR_ZACCESS」は、“@” という設定ファイルを作成後、”explore.exe” や ” service.exe” などの正規プロセスにコードをインジェクトします。
    2. “explorer.exe” にインジェクトされた不正なコードにより、「セキュリティセンター」などのセキュリティソフトに関連するプロセスが正常に起動しなくなります。

      図8:「セキュリティセンター」が表示するエラーメッセージ
      図8:「セキュリティセンター」が表示するエラーメッセージ

    3. “service.exe” にインジェクトされた不正なコードは、上述の「BKDR_ZACCESS」のP2P機能を用いて、他の感染PC にコマンドや不正プログラムを送受信し、感染を拡大します。使われるペイロードは、以下のフォルダに保存されます

      ・<Windowsフォルダ>\Installer\<CLSID>

    4. ”service.exe” に組み込まれた不正コードが上手く挙動しなかった場合、 “explorer.exe” に同様の不正なコードが組み込まれます。この際、利用されるフォルダは、以下のとおりとなります。

      ・<User Profile>\Local Setting\Application Data\<CLSID>

    5. ”cmd.exe” にインジェクトされる不正なコードは、主に、stack にコードがインジェクトされ、戻り値などにより攻撃者の意図に沿って制御されます。それにより、「BKDR_ZACCESS」が実行するプロセスを停止され、「BKDR_ZACCESS」自身を削除し、不正行為の一部痕跡を隠ぺいします。

    ■「BKDR_ZACCESS」の特徴5:この数字は、何のため?
    リージョナルトレンドラボによるこの「BKDR_ZACCESS」の解析過程で、以下のような数値を抽出することができました。

    図9:数値

    この数値は、C&Cサーバへの接続回数を示しています。つまり、これはリージョナルトレンドラボが確認した時点で、サーバと「BKDR_ZACCESS」に感染したPC(ボット)の間で累計約3,500万回もの接続が発生していることになります。

    攻撃者は、なぜ接続数を確認するこのような機能を搭載する必要があったのでしょうか。「ZACCESS」の亜種の中には、ゾンビPC を利用してスパムメールを送信する事例も確認されています。おそらく、この数字は、サイバー犯罪を行うアンダーグラウンド市場に何らかの関係があると思われます。加えて、攻撃者は、この数字を利用してどの手法が感染を行うのに成功しているのかを確認する意図で利用することができます。

    ■「BKDR_ZACCESS」からどのようにして身を守ることができますか
    「BKDR_ZACCESS」といった「ZACCESS」は、ルートキットコンポーネントを駆使して自身を隠ぺいさせながら巧みに検知を回避することから、この不正プログラムの削除に際して予想以上の困難に直面することになります。もちろん、各セキュリティ関係者による解析も困難であることから、このファミリによる感染を防ぐことが最大の防御となります。「BKDR_ZACCESS」を含め、「ZACCESS」に感染しないためにも、以下のような注意事項を心がける必要があります。

  • P2Pネットワークから海賊版等の動画をダウンロードするような行為は慎むこと
  • 信用のおけるWebサイトのみ閲覧すること
  • 管理者権限の付与を最小限にしておくこと
  • コンピュータを常に最新にしておくこと
  • また、トレンドマイクロは「ZACCESS」のような不正プログラムに関しては複数のソリューションをお客様に提供しています。

    まず、トレンドマイクロ製品をご利用のユーザは、トレンドマイクロのクラウド型セキュリティ基盤「Trend Micro Smart Protection Network(SPN)」の「ファイルレピュテーション」技術により、「ZACCESS」に関するすべての亜種を検出し、それらが実行されるのを防ぎます。「Webレピュテーション」技術により、「ZACCESS」が組み込まれたサイトや「ZACCESS」が通信を行う C&Cサーバ等へのアクセスをブロックします。

    加えて、サーバ向け総合セキュリティ製品「Trend Micro Deep Security」では、変更監視により、「BKDR_ZACCESS」が作成、ダウンロードするファイルを検知します。「Trend Micro Deep Discovery」では、「ZACCESS」が侵入する段階、また感染PCによるC&Cサーバへの通信を可視化することが可能です。

    関連記事:

  • セキュリティデータベース:
     ・巧みに自身の動作を隠ぺいさせる「ZACCESS」とは
      http://about-threats.trendmicro.com/RelatedThreats.aspx?language=
      jp&name=Revealing+the+Hidden+Routines+of+ZACCESS