Tag Archives: zeroaccess

ZeroAccess ?????????

      No Comments on ZeroAccess ?????????

ZeroAccess ボットネットは、今なお活動中であることが広く知られているボットネットのひとつで、シマンテックが 2013 年 8 月に観測した時点では、1 日当たり 190 万台以上のコンピュータが影響されています。ZeroAccess ボットネットの大きな特徴は、P2P のコマンド & コントロール(C&C)通信アーキテクチャを使っていることです。これにより、ZeroAccess は高い可用性と冗長性を備えています。中央の C&C サーバーが存在しないため、攻撃に使われている一連のサーバーを無効化しても、それだけでボットネットを停止に追い込むことはできません。ZeroAccess に感染したコンピュータは、まず多数のピアに接続して、既知の P2P ネットワークの他のピアに関する情報を交換します。これでボットは他のピアを認識するようになり、ネットワークを通じて迅速かつ効率的に命令やファイルを拡散できるようになります。ZeroAccess ボットネットでは、ピア間で常に通信が行われています。各ピアが絶えず他のピアに接続してピアリストを交換し、ファイルの更新を確認しているので、停止の試みに対して非常に強い耐性を示します。

ボットネットをシンクホールに捕捉
今年の 3 月、シマンテックのエンジニアは ZeroAccess ボットが相互に通信するメカニズムを詳しく研究して、どうすれば ZeroAccess をシンクホールに捕捉できるかを確認しました。その過程で、ある弱点を利用すればボットネットをシンクホールに捕捉することが、困難ではあるものの可能であることがわかりました。管理ラボでさらにテストを重ねたところ、ボットマスターからピアを解放する現実的な方法を見つけました。この間もシマンテックはボットネットの監視を続け、6 月 29 日には P2P ネットワークを通じて ZeroAccess の新しい亜種が拡散していることを発見します。更新された亜種には多くの変更点がありましたが、特に重要なのは、シンクホールによる捕捉に対して脆弱であるという設計上の欠陥に対処するよう変更されていたことです。ZeroAccess の P2P メカニズムの弱点については、2013 年 5 月に発表されたレポートで研究者が解説しています。シンクホールによる捕捉の試みに対抗できるようなアップグレードを ZeroAccess ボットマスターが急いだのは、そのレポートがきっかけになった可能性があります。
 
こうした変化が確認され始め、現実性のある計画が整えば、もう選択の余地はありませんでした。今すぐに作戦を開始しなければ計画そのものが台無しになります。7 月 16 日には、ZeroAccess ボットのシンクホールでの捕捉を開始しました。効果はすぐに現れて 50 万以上のボットが分離され、ボットマスターによって制御されているボットの数は大幅に減少しました。シマンテックのテストでは、新しい ZeroAccess ボットをシンクホールに捕捉するまでの P2P 活動は平均わずか 5 分ほどでした。このことの潜在的な影響を理解するには、ZeroAccess ボットネットの利用目的を考える必要があります。
 
ZeroAccess: ペイロード配信機能
その構造と動作を考えると、ZeroAccess は侵入先のコンピュータにペイロードを配信することを最大の目的として設計されているようです。ZeroAccess ボットネットでは、(攻撃者の視点に立つと)生産的な活動は、侵入先のコンピュータにダウンロードされるペイロードによって実行されます。ペイロードは最終的に 2 つの基本タイプに分類されますが、いずれも営利目的である点に変わりはありません。
 
クリック詐欺
シマンテックが確認したペイロードのタイプのひとつは、クリック詐欺型のトロイの木馬です。このトロイの木馬はオンライン広告をコンピュータにダウンロードし、正規ユーザーによって生成されたように見せかけた偽のクリックを生成します。この偽クリックがカウントされて、ペイパークリック(PPC)によるアフィリエイト方式の支払い対象になります。
 
Bitcoin マイニング
仮想通貨には、サイバー犯罪者にとって多くの魅力があります。各 Bitcoin は、コンピューティングハードウェアに対する「マイニング」という数学的な処理を実行することに基づいて成立しています。この活動が、ボットマスターにとっては直接の価値を持ち、何も知らない被害者に損害をもたらします。シマンテックは、ラボで旧式のコンピュータを使って、この活動の経済的な側面や影響を詳しく調べました。
 
ZeroAccess の経済的側面
好奇心から、オフィスにころがっていた古いハードウェアを何台か使って、ZeroAccess ボットネットが電力消費の点でどのような影響を及ぼすかをテストし、その活動の経済的な側面を確認しました。クリック詐欺と Bitcoin マイニングのどちらも調べましたが、特に重視したのは Bitcoin マイニングです。ボットで最も盛んに実行されている活動だと考えられ、ボットマスターにとって直接の経済的な価値をもたらしているからです。テスト用のコンピュータに ZeroAccess を感染させてから Bitcoin マイニングを設定し、それとは別にアイドル状態にできる正常な制御用コンピュータも用意しました。コンピュータは、消費電力量を測定するために電力メーターに接続します。テストの結果、興味深い測定値が得られました。
 
テストコンピュータの仕様:
モデル: Dell OptiPlex GX620 Pentium D 945 3.4GHz 2GB(最大 TDP 95W)
測定された消費電力/時間: 136.25 W(マイニング中)
測定された消費電力/時間: 60.41 W(アイドル時)
MHash/秒: 1.5
 
Bitcoin については以下の条件を想定:
Bitcoin/米ドル交換レート: 131
Bitcoin 難易度係数: 86933017.7712
 
Bitcoin マイニング
Bitcoin マイニングは、その仕組みから 1 台のコンピュータだけで運用しても、常に無益に終わる可能性がありました。この仕組みを丸 1 年続けても儲けは 0.41 ドルにしかならないからです。しかし、190 万台のボットを利用できるとなれば計算は大きく変わり、ボットネットによって 1 日何千ドルも稼ぎ出せる可能性があります。もちろん、毎日 1 日中すべてのコンピュータを利用できるわけではなく、ボットネット上のコンピュータは性能レベル、読み込み時間、稼働時間がそれぞれ異なるため、この金額は大雑把な概算にすぎません。この概算では、すべてのボットが 1 日 24 時間稼働し、各ボットがシマンテックのテスト用コンピュータと同じ仕様であると仮定しています。
 
クリック詐欺
クリック詐欺を実行するボットは、非常に活動的です。テストでは、各ボットが毎時間 257MB のネットワークトラフィック、つまり 1 日当たり 6.1GB のトラフィックを発生させました。また、1 時間当たりに生成される偽の広告クリックは 42 件でした(1 日当たり 1,008 件)。1 回のクリックで支払われるのが 1 セント、あるいは何分の 1 セントかであっても、感染したコンピュータが 190 万台あれば、攻撃者は 1 年間で何千万ドルも稼いでいる可能性があることになります。
 
こうした活動が秘めている価値がわかったところで、このようなボットネットを運用する際のコストを電気料金の観点で見てみましょう。
 
電力コスト
ZeroAccess が何も知らない被害者に負担させるコストを割り出すために、Bitcoin マイニング実行時のコストと、コンピュータのアイドル時のコストの差異を計算します。このテスト環境では、1 日当たり 1.82KWh の追加となり、被害者 1 人当たりに掛かるコストとしてはそれほど大きくありません。
 
マイニング時の消費電力: (136.25/1000)*24 = 3.27 KWh/日
アイドル時の消費電力: (60.41/1000)*24 = 1.45 KWh/日
差異: 1.82 KWh/日
 
これらの数字から、ZeroAccess に感染したコンピュータ 1 台で Bitcoin マイニングに必要な追加の電力がわかります。この数字を 190 万のボットに広げてみると、ボットネット全体に対して予想される合計コストと影響がわかってきます。
 
KWh 当たりの電気料金が 0.162 ドルだとすれば、1 台のボットで 24 時間マイニングを続けるコストは 0.29 ドル程度です。しかし、この数字にボットネット全体の 190 万を掛けると、電力消費量は 3,458,000 KWh(3,458 MWh、毎日 111,000 世帯に電力を供給しても余力があります)にも達します。この電力量は、カリフォルニア州モスランディングにある最大の発電所の出力(2,484 MW、1 日当たりの電気料金 560,887 ドル)よりもかなり多い量です。これほどのコストを掛けても、この電力すべてを使って得られる 1 日当たりの Bitcoin は 2,165 ドルにすぎません。このような金額と照らし合わせて考えると、もし自分で支払わなければならないとしたら、このような環境で Bitcoin マイニングを実行するのは経済的ではありません。しかし、他人の支出で Bitcoin マイニングを実行できるのであれば話はまったく変わり、実に魅力的な儲け話になります。
 
P2P ボットネットの停止は困難だが不可能ではない
今回の事例から、ZeroAccess の P2P アーキテクチャにどれほど回復力があっても、ボットの大部分をシンクホールに捕捉できることが判明しました。つまり、これらのボットは、ボットマスターからコマンドを受信できなくなり、コマンドの拡散にも金銭獲得手法の更新や追加にも、ボットネットでは使えなくなっているということです。
 
その一方で、シマンテックは全世界の ISP や CERT と協力して、情報共有や感染したコンピュータの感染除去に尽力しています。
 
詳細情報
シマンテックのロス・ギブ(Ross Gibb)とヴィクラム・タクール(Vikram Thakur)が、2013 年 10 月 2 日 から 4 日に掛けて開催される Virus Bulletin カンファレンスで、この作戦の成果について発表する予定です。また、ZeroAccess の内部的な詳細を解説したホワイトペーパーも、このプレゼンテーションと同時に公開されます。
 
ZeroAccess Trojan に関する主な事実と数値をまとめた解説図も用意しました。
 
zeroaccess_blog_infographic.png
 

 

* 日本語版セキュリティレスポンスブログの RSS フィードを購読するには、http://www.symantec.com/connect/ja/item-feeds/blog/2261/feed/all/ja にアクセスしてください。

Grappling with the ZeroAccess Botnet

      No Comments on Grappling with the ZeroAccess Botnet

The ZeroAccess botnet is one of the largest known botnets in existence today with a population upwards of 1.9 million computers, on any given day, as observed by Symantec in August 2013. A key feature of the ZeroAccess botnet is its use of a peer-to-pe…

ZeroAccess?P2P ???????????????

      No Comments on ZeroAccess?P2P ???????????????

ZeroAccess は、これまでも常に P2P プロトコルを使って侵入先のコンピュータに悪質なペイロードを拡散してきました。P2P プロトコルを使うと、悪質なペイロードを配布する際に中央のコマンド & コントロール(C&C)サーバーを管理する必要がなくなるからです。2011 年には、ZeroAccess の P2P プロトコルは TCP 上で通信されていましたが、2012 年の第 2 四半期に、UDP を使うように変更されました。2013 年 6 月 29 日を迎えるまで、ZeroAccess の P2P に対する大きい更新はこれが最終でした。

シマンテックは、発見以来 ZeroAccess の P2P ネットワークを厳重に監視し続けています。2013 年 6 月 29 日、シマンテックは ZeroAccess ピアで新しいモジュールが拡散していることを確認しました。このときの通信にはポート 16464 と 16465 で動作する UDP ベースの P2P ネットワークが使われていましたが、ZeroAccess はポート 16470 と 16471 で動作する UDP ベースネットワークも確保しています。ZeroAccess のピアは同じネットワークに接続された他のピアと通信するので、ピアどうしがネットワーク上で通信することはありません。

6 月 29 日に発見されたモジュールは、ZeroAccess の P2P 機能を更新し、P2P ネットワークの堅牢性を高くして外部からの操作に対する耐性を強化するものです。2013 年 6 月 29 日に実施され、ZeroAccess の P2P 機能に影響する主なコード変更を以下にまとめます。

  • サポートされる P2P プロトコルメッセージの数が、3 つから 2 つに減った。
  • セカンダリの内部ピアリストが使われるようになり、リストに含めることができるピアの IP アドレスが 256 個から 1,600 万個に増えた。
  • セカンダリの内部ピアリストは、Windows NTFS の代替データストリームとして格納されている。
  • ZeroAccess のピアが他のピアと通信する方法のロジックが変更された。
  • 悪質なファイルをダウンロードする TCP 接続に、エラーチェックとタイムアウトが追加された。

既存のピアについては UDP 16464/16465 のピアネットワーク上でコードの更新を利用できるほか、2013 年 6 月 29 日以降は、UDP 16464/16465 を対象としてコンピュータを ZeroAccess に感染させる ZeroAccess インストーラにも、新しい P2P プロトコルとコード変更が含まれていることが確認されています。

興味深いことに、ZeroAccess の UDP 16470/16471 ネットワークにはまだコード更新が適用されていません。UDP 16470/16471 を対象とする新しい ZeroAccess インストーラのサンプルにも、新しいコードは含まれていません。これまでは、UDP 16464/16465 と UDP 16470/16471 のネットワークはほぼ同じ時期に新機能とコード変更を適用されるのが通例でした。

ZeroAccess の作成者が今回の更新で実施したコード変更は、ZeroAccess に関して公開された研究に対応したため、または作成者がコード中に明らかな弱点を発見したためと考えられます。今回の変更は、ZeroAccess が今もなお鋭意開発中であり、依然として脅威であることの証拠とも言えます。シマンテックは、ZeroAccess の開発が今後も続くものと予測し、この脅威に変化が起きないかどうか全力で監視を続ける予定です。

次節では、P2P プロトコルについて技術的に詳しく説明し、ZeroAccess で実施された関連のコード変更についてもまとめます。
 

変更された P2P プロトコル

2012 年に発見されたとき、ZeroAccess の UDP ベース P2P プロトコルは getL、retL、newL の 3 つのメッセージタイプをサポートしていました。このメッセージについては多くのセキュリティ研究で説明されており、プロトコルの欠陥、特に newL メッセージタイプに関する欠陥も指摘されています。newL タイプのメッセージは、ZeroAccess がピア間で直接ルーティング可能な IP アドレス(スーパーノードまたはスーパーピアとも言う)を共有するために使われます。newL メッセージを受け取ったピアは、newL メッセージタイプに含まれている IP アドレスを内部のピアリストに追加します。ピアは newL メッセージを既知の他のピアにも転送し、メッセージの効果が増強されます。6 月 29 日より前には、newL メッセージを作成して ZeroAccess のピアに送信すると、感染した ZeroAccess ピアの内部ピアリストに悪質な IP アドレスを追加することができ、その悪質な newL メッセージを ZeroAccess ピアに拡散させることができました。

新しい P2P プロトコルではこの newL メッセージタイプが削除され、ボットネットが悪質なピアの IP を除外できるようになっています。
 

内部ピアリストの拡張

ZeroAccess の P2P プロトコルについて以前から指摘されていたもうひとつの欠点は、内部のピアリストが固定サイズだったことです。6 月 29 日の更新より前、ZeroAccess の内部ピアリストは上限が 256 ピアでした。同日以降はセカンダリのピアリストが追加されてメモリも確保され、1,600 万ピアの IP アドレスを保持できるようになっています。256 ピアのリストは引き続き、ピアの「ワーキングセット」として存続し、定期的にアクセスされています。セカンダリのピアリストは、冗長性の目的で使われているのです。

ピアリストの上限が 256 ピアだったときには、ZeroAccess を十分にクリーンアップすれば、ZeroAccess ピアを P2P ネットワークから切断することが現実に可能でした。256 個の既知のピアはいずれも、オンラインではなかったからです。また、ZeroAccess ピアの 256 個の内部ピアリストを悪質な IP アドレスに置き換えることも、理屈のうえでは可能でした。セカンダリのピアリストの追加で、このどちらも難しくなっています。

セカンダリのピアリストは、256 ピアのワーキングセットとともにディスクに書き込まれます。6 月 29 日より前には、内部ピアリストに記載された 256 個のピアは「@」という名前のファイルに保存されていました。同日以降も @ ファイルは存在し、ワーキングセットに含まれる 256 ピアの IP アドレスが記載されています。セカンダリのピアリストは、最大で 1,600 万個の IP アドレスを含み、@ ファイルの NTFS 代替データストリームとして保存されます。この NTFS 代替データストリームも、@ というファイル名を使っています。
 

実行時のピアの接続動作を変更

6 月 29 日より前には、ZeroAccess の内部ピアリストにある 256 ピアのうち 1 つに毎秒 getL を使って接続し、新しい悪質なモジュール上のデータと、新しい ZeroAccess ピアの IP アドレスを確認していました。この動作は同日以降にも続いていますが、いずれかのリモートピアがメッセージに応答する場合、応答しているそのピアの IP アドレスと応答時のタイムスタンプがセカンダリのピアリストに追加されます。

セカンダリの接続先リストにある IP には、ZeroAccess の最初の起動時にも接続されます。起動時には、セカンダリのピアリストから 1 秒ごとに 16 個もの IP アドレスが接続されます。このセカンダリのピアリスト通信は、感染したホストに少なくとも 16 個のリモートピアが応答するまで続きます。感染したピアに 16 個のリモートピアが接続を完了すると、セカンダリのリストにあるピアは、感染したコンピュータが再起動されるまで接続しなくなります。ワーキングセットの 256 ピアによる通常の定期的な接続の一環としてリモートピアが応答すると、セカンダリのピアリストは追加を続行され、更新されます。この動作によって、ZeroAccess クライアントはすでに接続したことのあるピアの膨大なリストを冗長性のために保持し続けますが、ZeroAccess ネットワークを通じて悪質なペイロードを急速に拡散するために、256 ピアの小さいワーキングセットも引き続き使われています。

実行時のピア接続動作についてもうひとつの変更は、接続先ピアの状態テーブルが記録されることです。ZeroAccess のピアは引き続き大量の getL メッセージをリモートピアに送信しており、応答として retL メッセージを受信するものと想定します。retL 応答には、悪質なペイロードのメタデータと、新しいピアの IP アドレスが含まれています。6 月 29 日より前には、感染したピアは任意の IP アドレスから任意の UDP メッセージを受信していました。これは、感染したホストがそのリモート IP アドレスに以前に接続したことがあるかどうかを問いませんでした。6 月 29 日以降も、ZeroAccess のピアは任意のリモート IP から getL メッセージを受信しますが、retL メッセージについては、受信側のピアが以前に getL メッセージを送信したことがある IP アドレスからのみ受信します。基本的に、ZeroAccess ピアが getL メッセージをリモート IP アドレスに送信すると、そのリモート IP アドレスはメモリ内のテーブルに追加されます。ZeroAccess ピアが retL メッセージを受け取ると、以前に getL メッセージを送ったことがある送信先の IP アドレスのテーブルがスキャンされ、retL メッセージを送信したピアの IP アドレスがそのテーブルに存在しなければ、retL メッセージを受け取った ZeroAccess ピアはそれを無視します。この変更によって、大量送信される retL メッセージは無視されるので、悪質な IP アドレスを送信する手段として(以前のプロトコルで newL メッセージが使われていたのと同じように)retL メッセージを使うことは、ますます難しくなっているのです。
 

ペイロードファイル転送の耐性が向上

ZeroAccess のピアには、リモートホストから悪質なペイロードをダウンロードしないよう確認するチェックが含まれています。ペイロードファイルのメタデータは retL メッセージに含まれ、デジタル署名されているので容易には偽造されません。また、悪質なペイロードファイル自体もデジタル署名されており、ファイルのダウンロード後に署名がチェックされます。デジタル署名は、悪質なピアが実行可能な任意のモジュールを P2P ネットワークに引き込んでしまわないように防いでいます。6 月 29 日のコード変更で、TCP ファイル転送の完了までに時間がかかりすぎないよう確認するチェックも追加されました。この変更は、一種のサービス拒否攻撃を防ぐことを目的としていると考えられます。つまり、悪質なピアが ZeroAccess のピアを欺き、悪質なピアから大量のファイルをダウンロードするよう仕向けて、結果的にファイルの配信速度を遅らせるという攻撃です。この攻撃を使えば、感染したコンピュータ上ですべての TCP ポートを占有し、意図された悪質なペイロードをダウンロードできなくさせることが可能です。

 

* 日本語版セキュリティレスポンスブログの RSS フィードを購読するには、http://www.symantec.com/connect/ja/item-feeds/blog/2261/feed/all/ja にアクセスしてください。

ZeroAccess?P2P ???????????????

      No Comments on ZeroAccess?P2P ???????????????

ZeroAccess は、これまでも常に P2P プロトコルを使って侵入先のコンピュータに悪質なペイロードを拡散してきました。P2P プロトコルを使うと、悪質なペイロードを配布する際に中央のコマンド & コントロール(C&C)サーバーを管理する必要がなくなるからです。2011 年には、ZeroAccess の P2P プロトコルは TCP 上で通信されていましたが、2012 年の第 2 四半期に、UDP を使うように変更されました。2013 年 6 月 29 日を迎えるまで、ZeroAccess の P2P に対する大きい更新はこれが最終でした。

シマンテックは、発見以来 ZeroAccess の P2P ネットワークを厳重に監視し続けています。2013 年 6 月 29 日、シマンテックは ZeroAccess ピアで新しいモジュールが拡散していることを確認しました。このときの通信にはポート 16464 と 16465 で動作する UDP ベースの P2P ネットワークが使われていましたが、ZeroAccess はポート 16470 と 16471 で動作する UDP ベースネットワークも確保しています。ZeroAccess のピアは同じネットワークに接続された他のピアと通信するので、ピアどうしがネットワーク上で通信することはありません。

6 月 29 日に発見されたモジュールは、ZeroAccess の P2P 機能を更新し、P2P ネットワークの堅牢性を高くして外部からの操作に対する耐性を強化するものです。2013 年 6 月 29 日に実施され、ZeroAccess の P2P 機能に影響する主なコード変更を以下にまとめます。

  • サポートされる P2P プロトコルメッセージの数が、3 つから 2 つに減った。
  • セカンダリの内部ピアリストが使われるようになり、リストに含めることができるピアの IP アドレスが 256 個から 1,600 万個に増えた。
  • セカンダリの内部ピアリストは、Windows NTFS の代替データストリームとして格納されている。
  • ZeroAccess のピアが他のピアと通信する方法のロジックが変更された。
  • 悪質なファイルをダウンロードする TCP 接続に、エラーチェックとタイムアウトが追加された。

既存のピアについては UDP 16464/16465 のピアネットワーク上でコードの更新を利用できるほか、2013 年 6 月 29 日以降は、UDP 16464/16465 を対象としてコンピュータを ZeroAccess に感染させる ZeroAccess インストーラにも、新しい P2P プロトコルとコード変更が含まれていることが確認されています。

興味深いことに、ZeroAccess の UDP 16470/16471 ネットワークにはまだコード更新が適用されていません。UDP 16470/16471 を対象とする新しい ZeroAccess インストーラのサンプルにも、新しいコードは含まれていません。これまでは、UDP 16464/16465 と UDP 16470/16471 のネットワークはほぼ同じ時期に新機能とコード変更を適用されるのが通例でした。

ZeroAccess の作成者が今回の更新で実施したコード変更は、ZeroAccess に関して公開された研究に対応したため、または作成者がコード中に明らかな弱点を発見したためと考えられます。今回の変更は、ZeroAccess が今もなお鋭意開発中であり、依然として脅威であることの証拠とも言えます。シマンテックは、ZeroAccess の開発が今後も続くものと予測し、この脅威に変化が起きないかどうか全力で監視を続ける予定です。

次節では、P2P プロトコルについて技術的に詳しく説明し、ZeroAccess で実施された関連のコード変更についてもまとめます。
 

変更された P2P プロトコル

2012 年に発見されたとき、ZeroAccess の UDP ベース P2P プロトコルは getL、retL、newL の 3 つのメッセージタイプをサポートしていました。このメッセージについては多くのセキュリティ研究で説明されており、プロトコルの欠陥、特に newL メッセージタイプに関する欠陥も指摘されています。newL タイプのメッセージは、ZeroAccess がピア間で直接ルーティング可能な IP アドレス(スーパーノードまたはスーパーピアとも言う)を共有するために使われます。newL メッセージを受け取ったピアは、newL メッセージタイプに含まれている IP アドレスを内部のピアリストに追加します。ピアは newL メッセージを既知の他のピアにも転送し、メッセージの効果が増強されます。6 月 29 日より前には、newL メッセージを作成して ZeroAccess のピアに送信すると、感染した ZeroAccess ピアの内部ピアリストに悪質な IP アドレスを追加することができ、その悪質な newL メッセージを ZeroAccess ピアに拡散させることができました。

新しい P2P プロトコルではこの newL メッセージタイプが削除され、ボットネットが悪質なピアの IP を除外できるようになっています。
 

内部ピアリストの拡張

ZeroAccess の P2P プロトコルについて以前から指摘されていたもうひとつの欠点は、内部のピアリストが固定サイズだったことです。6 月 29 日の更新より前、ZeroAccess の内部ピアリストは上限が 256 ピアでした。同日以降はセカンダリのピアリストが追加されてメモリも確保され、1,600 万ピアの IP アドレスを保持できるようになっています。256 ピアのリストは引き続き、ピアの「ワーキングセット」として存続し、定期的にアクセスされています。セカンダリのピアリストは、冗長性の目的で使われているのです。

ピアリストの上限が 256 ピアだったときには、ZeroAccess を十分にクリーンアップすれば、ZeroAccess ピアを P2P ネットワークから切断することが現実に可能でした。256 個の既知のピアはいずれも、オンラインではなかったからです。また、ZeroAccess ピアの 256 個の内部ピアリストを悪質な IP アドレスに置き換えることも、理屈のうえでは可能でした。セカンダリのピアリストの追加で、このどちらも難しくなっています。

セカンダリのピアリストは、256 ピアのワーキングセットとともにディスクに書き込まれます。6 月 29 日より前には、内部ピアリストに記載された 256 個のピアは「@」という名前のファイルに保存されていました。同日以降も @ ファイルは存在し、ワーキングセットに含まれる 256 ピアの IP アドレスが記載されています。セカンダリのピアリストは、最大で 1,600 万個の IP アドレスを含み、@ ファイルの NTFS 代替データストリームとして保存されます。この NTFS 代替データストリームも、@ というファイル名を使っています。
 

実行時のピアの接続動作を変更

6 月 29 日より前には、ZeroAccess の内部ピアリストにある 256 ピアのうち 1 つに毎秒 getL を使って接続し、新しい悪質なモジュール上のデータと、新しい ZeroAccess ピアの IP アドレスを確認していました。この動作は同日以降にも続いていますが、いずれかのリモートピアがメッセージに応答する場合、応答しているそのピアの IP アドレスと応答時のタイムスタンプがセカンダリのピアリストに追加されます。

セカンダリの接続先リストにある IP には、ZeroAccess の最初の起動時にも接続されます。起動時には、セカンダリのピアリストから 1 秒ごとに 16 個もの IP アドレスが接続されます。このセカンダリのピアリスト通信は、感染したホストに少なくとも 16 個のリモートピアが応答するまで続きます。感染したピアに 16 個のリモートピアが接続を完了すると、セカンダリのリストにあるピアは、感染したコンピュータが再起動されるまで接続しなくなります。ワーキングセットの 256 ピアによる通常の定期的な接続の一環としてリモートピアが応答すると、セカンダリのピアリストは追加を続行され、更新されます。この動作によって、ZeroAccess クライアントはすでに接続したことのあるピアの膨大なリストを冗長性のために保持し続けますが、ZeroAccess ネットワークを通じて悪質なペイロードを急速に拡散するために、256 ピアの小さいワーキングセットも引き続き使われています。

実行時のピア接続動作についてもうひとつの変更は、接続先ピアの状態テーブルが記録されることです。ZeroAccess のピアは引き続き大量の getL メッセージをリモートピアに送信しており、応答として retL メッセージを受信するものと想定します。retL 応答には、悪質なペイロードのメタデータと、新しいピアの IP アドレスが含まれています。6 月 29 日より前には、感染したピアは任意の IP アドレスから任意の UDP メッセージを受信していました。これは、感染したホストがそのリモート IP アドレスに以前に接続したことがあるかどうかを問いませんでした。6 月 29 日以降も、ZeroAccess のピアは任意のリモート IP から getL メッセージを受信しますが、retL メッセージについては、受信側のピアが以前に getL メッセージを送信したことがある IP アドレスからのみ受信します。基本的に、ZeroAccess ピアが getL メッセージをリモート IP アドレスに送信すると、そのリモート IP アドレスはメモリ内のテーブルに追加されます。ZeroAccess ピアが retL メッセージを受け取ると、以前に getL メッセージを送ったことがある送信先の IP アドレスのテーブルがスキャンされ、retL メッセージを送信したピアの IP アドレスがそのテーブルに存在しなければ、retL メッセージを受け取った ZeroAccess ピアはそれを無視します。この変更によって、大量送信される retL メッセージは無視されるので、悪質な IP アドレスを送信する手段として(以前のプロトコルで newL メッセージが使われていたのと同じように)retL メッセージを使うことは、ますます難しくなっているのです。
 

ペイロードファイル転送の耐性が向上

ZeroAccess のピアには、リモートホストから悪質なペイロードをダウンロードしないよう確認するチェックが含まれています。ペイロードファイルのメタデータは retL メッセージに含まれ、デジタル署名されているので容易には偽造されません。また、悪質なペイロードファイル自体もデジタル署名されており、ファイルのダウンロード後に署名がチェックされます。デジタル署名は、悪質なピアが実行可能な任意のモジュールを P2P ネットワークに引き込んでしまわないように防いでいます。6 月 29 日のコード変更で、TCP ファイル転送の完了までに時間がかかりすぎないよう確認するチェックも追加されました。この変更は、一種のサービス拒否攻撃を防ぐことを目的としていると考えられます。つまり、悪質なピアが ZeroAccess のピアを欺き、悪質なピアから大量のファイルをダウンロードするよう仕向けて、結果的にファイルの配信速度を遅らせるという攻撃です。この攻撃を使えば、感染したコンピュータ上ですべての TCP ポートを占有し、意図された悪質なペイロードをダウンロードできなくさせることが可能です。

 

* 日本語版セキュリティレスポンスブログの RSS フィードを購読するには、http://www.symantec.com/connect/ja/item-feeds/blog/2261/feed/all/ja にアクセスしてください。

ZeroAccess Modifies Peer-to-Peer Protocol for Resiliency

ZeroAccess has always distributed its malicious payloads to infected computers using a peer-to-peer protocol. The use of a peer-to-peer protocol removes the need to maintain centralized command-and-control (C&C) servers to distribute malicious payloads. In 2011, ZeroAccess’ peer-to-peer protocol communicated over TCP, but in the second quarter of 2012 the protocol was modified to use UDP. This was the last significant update to the ZeroAccess peer-to-peer protocol until June 29, 2013.

Symantec has been closely monitoring the ZeroAccess peer-to-peer networks since its discovery. On June 29, 2013, we noticed a new module being distributed amongst ZeroAccess peers communicating on the UDP-based peer-to-peer network that operates on ports 16464 and 16465. ZeroAccess maintains a second UDP-based network that operates on ports 16470 and 16471. ZeroAccess peers communicate to other peers connected to the same network; peers do not communicate across networks.

The module discovered on June 29 modifies the peer-to-peer functionality of ZeroAccess to make its peer-to-peer network more robust and resilient against outside manipulation. The following is a summary of the key code changes made on June 29, 2013, affecting ZeroAccess peer-to-peer functionality:

  • The number of supported peer-to-peer protocol messages has been decreased from three to two.
  • A secondary internal peer list is now used that can hold over 16 million peer IP addresses, up from 256 IP addresses.
  • The secondary internal peer list is stored as a Windows NTFS alternate data stream.
  • The logic of how a ZeroAccess peer will contact other peers has been modified.
  • Error checks and timeouts have been added to the malicious file download TCP connections.

In addition to the code update being available on the UDP 16464/16465 peer network for existing peers, after June 29, 2013, we have observed new ZeroAccess installers for the UDP 16464/16465 network which infect computers with ZeroAccess also contain the new peer-to-peer protocol and code changes.

Interestingly, the ZeroAccess UDP 16470/16471 network has not yet received the code update. The new ZeroAccess installer samples for the UDP 16470/16471 network also do not contain the new code. In the past, both the UDP 16464/16465 and UDP 16470/16471 networks generally received new features and code modifications at approximately the same time.

Most of the code changes made by the ZeroAccess authors in this update seem to be in response to published research on ZeroAccess or other perceived weaknesses the authors found in the code. These changes are also further evidence that ZeroAccess continues to be actively developed and remains a threat. Symantec expects development of ZeroAccess to continue and will actively monitor the threat for those changes.

The following sections provide further technical details on the peer-to-peer protocol and related code changes made to ZeroAccess.
 

Modified peer-to-peer protocol

When discovered in 2012, ZeroAccess’ UDP-based peer-to-peer protocol supported three message types: getL, retL, and newL. A number of security researchers have described the messages and pointed out flaws in the protocol, especially regarding the newL message type. The newL message type is used by ZeroAccess to share directly routable IP addresses (often called super nodes or super peers) amongst its peers. When a peer receives a newL message it adds the included IP address within the newL message type into its internal peer list. The peer also forwards the newL message to other peers it knows about, magnifying the message’s effect. Prior to June 29, by crafting a newL message and sending it to a ZeroAccess peer it was possible to introduce a rogue IP address into an infected ZeroAccess peer’s internal peer list and have that rogue newL message distributed to other ZeroAccess peers.

The new peer-to-peer protocol removes the newL message type, allowing the botnet to filter out rogue peer IPs.
 

Expanded internal peer-list

Another flaw previously identified regarding ZeroAccess’ peer-to-peer protocol is the fixed internal peer list size. Prior to the June 29 update, a ZeroAccess’ internal peer list was capped at 256 peers. After June 29, a secondary peer list was added and memory reserved to hold up to 16 million peer IP addresses. The list of 256 peers continues to be the “working set” of peers that are periodically contacted. The secondary peer list is used for redundancy purposes.

When the peer list was only 256 peers in length it was feasible that a significant ZeroAccess clean-up action could cut off ZeroAccess peers from the peer-to-peer network because none of their 256 known peers were online. It also became theoretically feasible to replace a ZeroAccess peer’s 256 internal peer list with rogue IP addresses. The secondary peer list makes both of these actions more difficult.

The secondary peer list is written to disk, along with the 256 peer working set. Previous to June 29, the 256 peers from the internal peer list were stored in a file named “@”. After June 29, the @ file still exists and continues to contain 256 peer IP addresses from the working set of peers. The secondary peer list, containing up to 16 million IP address, is stored as an NTFS alternate data stream of the @ file. The NTFS alternate data stream also uses the @ filename.
 

Altered run-time peer contact behavior

Prior to June 29, one of the peers from the 256 peers in ZeroAccess’ internal peer list would be contacted using a getL each second to ask for any data on new malicious modules and new ZeroAccess peer IP addresses. This behavior continues after June 29. However, for any remote peer that responds to a message, that responding peer’s IP address and response time-stamp will be added to the secondary peer list.

The IP’s in the secondary contact list are also contacted when ZeroAccess first starts up. At startup, as many as 16 IPs from the secondary peer list will be contacted each second. This secondary peer list communication will continue until at least 16 remote peers have responded to the infected host. Once an infected peer has been contacted by 16 remote peers, peers from the secondary list will not be contacted until the infected computer is restarted. The secondary peer list will continue to be added to and updated as remote peers respond as part of the normal periodic contact with the 256 peers from the working set. This behavior allows a ZeroAccess client to keep a large list of previously contacted peers for redundancy and still operate with a small working set of 256 peers in order for malicious payloads to be quickly distributed throughout the ZeroAccess network.

Another runtime peer-contact behavior change is the keeping of a contacted-peer state table. ZeroAccess peers continue to send unsolicited getL messages to remote peers and expect to receive retL messages in response. The retlL responses contain malicious payload metadata as well as new peer IP addresses. Prior to June 29, an infected peer would accept any UDP message from any IP address, regardless of whether the infected host had contacted that remote IP address before or not. After June 29, a ZeroAccess peer will continue to accept getL messages from any remote IP, but will only accept a retL message from an IP address that the receiving peer had previously sent a getL message to. Basically, when a ZeroAccess peer sends a getL message to a remote IP address it will add that remote IP address to a table in memory. When a ZeroAccess peer receives a retL message, it will scan its table of IP addresses that it previously sent a getL message to, if the peer’s IP address that sent the retL message does not appear in the table the ZeroAccess peer that received the retL message will disregard it. This change ensures that unsolicited retL messages are ignored and makes using retL messages as a means of introducing rogue IP addresses (like newL messages could be used in the previous protocol) more difficult.
 

Improved payload file transfer resiliency

A ZeroAccess peer already contains checks to ensure it does not download a rogue payload file from a remote host. A payload file’s metadata in retL messages is digitally signed and cannot be easily forged. In addition, the malicious payload files themselves are digitally signed, the signature is checked after the file is downloaded. The digital signatures prevent a rogue peer from introducing an arbitrary executable module into the peer-to-peer network. The June 29 code change adds checks to ensure that TCP file transfers are not taking too long to complete. These changes seem to be designed to protect against a kind of denial-of-service attack where a rogue peer attempts to trick a ZeroAccess peer into downloading a large number of files from a rogue peer that would deliver the file data too slowly. Using this attack it would be possible to occupy all TCP ports on an infected computer, not allowing it to download the intended malicious payloads.

The Dangers of a Royal Baby: Scams Abound

Big news stories are always an opportunity for scammers and spammers, who attempt to redirect users to malicious exploit kits or other unwanted services. Britain’s royal baby is the latest news to offer cover for malware. We have already found a lot of spam messages regarding the birth and baby that lead users to the Read more…