Video Screencast Help
Security Response

Java Autorun ワーム Java.Cogyeka(第 3 回)

Created: 04 Jul 2013 08:55:40 GMT • Updated: 04 Jul 2013 08:57:01 GMT • Translations available: English
Kazumasa Itabashi's picture
0 0 Votes
Login to vote

このブログシリーズの第 1 回第 2 回でお伝えしたように、Java.Cogyeka は autorun.inf ファイルを使って拡散し、追加のモジュールをダウンロードします。サーバーとの接続を確立するのが難しかったため 1 週間以上掛かってしまいましたが、シマンテックは Java アプリケーションベースのダウンロードされるモジュールを入手することに成功しました。ダウンロードされるモジュールは、メインモジュールと同様に、Zelix KlassMaster による不明瞭化によって自身を隠そうとします。ダウンロードされるモジュールを調べたところ、Java.Cogyeka の目的は侵入先のコンピュータ上にあるゲームから情報を盗み出すことだとわかりました。

標的となるゲーム
Java.Cogyeka が標的とするゲームは、Riot Games 社が運営している『League of Legends(リーグオブレジェンズ)』という無料オンラインゲームです。このゲームは無料ですが、追加のキャラクターやキャラクタースキンを実際のお金で購入することができます。Java.Cogyeka がこのゲームを狙うのは、このように現実の金銭取引があるためでしょう。

Infostealer
ダウンロードされたモジュールは、『League of Legends』のプレイヤーのアカウント情報とキーストロークを盗み出して、そのアカウントを自由に制御しようとします。Java.Cogyeka の目的は、このゲームに関連する情報を盗み出すことにありますが、キーストロークを盗む機能があるので、それ以外の情報も盗み出される恐れがあります。

キーストロークの窃盗
ダウンロードされたモジュールは、32 ビット版と 64 ビット版の 2 種類の DLL ファイルを投下します。このとき利用されるのは、メインモジュールでリムーバブルドライブのドライブ名を取得するときに使われたのと同じ手口です(Java.Cogyeka に関する最初のブログを参照)。Java システムでは、Java アプリケーションが他のプロセスからキーストロークを取得することが許可されていません。Java.Cogyeka はパスワードを盗み出すことができますが、それにはネイティブコールを必要とするため、Java アプリケーションから Windows DLL ファイルを投下します。

キーストロークとマウス操作を記録するために、フックタイプとして WH_KEYBOARD_LL と WH_MOUSE_LL が使われているときに SetWindowsHookEx API を使います。盗み出されたキーストロークとマウス操作は、リモートサーバーに送信されます。

Fig1_1.png

図 1. ダウンロードされたモジュールがキーストロークとマウス操作を盗み出す

アカウント情報の窃盗
Java.Cogyeka がキーストロークを盗み出すのは、『League of Legends』のプレイヤーからユーザー名とパスワードを取得するためです。しかし、ゲームのログインウィンドウにはプレイヤーのユーザー名を記憶しておくオプションがあるため、このオプションが選択されている場合、Java.Cogyeka はユーザー名を取得できません。この問題を回避するために、Java.Cogyeka はユーザーのアカウント情報が記録されているファイルも盗み出そうとします。

Fig2_0.png

図 2. 『League of Legends』のログイン画面

ユーザーのアカウント情報を盗み出すために、Java.Cogyeka はすべてのドライブ上で以下のフォルダを検索します。

  • Riot Games/League of Legends/RADS/projects/lol_air_client/releases

このフォルダの中に、「0.1.2.0.」のようにゲームのバージョン名が付いたフォルダがあります。Java.Cogyeka は、バージョンフォルダでそれらのフォルダを走査して、以下のパスを検索します。

  • deploy/preferences/global/global.properties

このファイルには、ゲーム設定のほか、ログインに使われるプレイヤーのユーザー名が記録されています。

盗み出した情報の送信
ダウンロードされたモジュールによって取得されたログイン情報は、TCP ポート 1087 で Jkl.no-ip.biz というドメインに送信されます。

このサーバー名はすでに無効化されており、現在はアクセスできませんが、このサーバー名とポート番号はモジュールにハードコード化されており、その点でコマンド & コントロールサーバーの名前やポート番号とは異なります。また、盗み出された情報は暗号化されます。

Fig3.png

図 3. 標的となったゲームが全世界でプレイされているので、マルウェアも世界各地で確認されている

まとめ
このブログシリーズでは、Java.Cogyeka の拡散機能および情報窃盗機能と、不明瞭化ツールを使ってセキュリティスキャナによる検出をすり抜ける方法について説明してきました。はっきり狙われているのは『League of Legends』というオンラインゲームですが、取得されたキーストロークとマウス操作を通じて、それ以外の情報も盗み出される恐れがあります。追加の Java モジュールをダウンロードすることから、Java.Cogyeka には自身を更新する機能もあるかもしれません。シマンテックは、このマルウェアについて今後も監視と調査を続ける予定です。

Java.Cogyeka が、USB による拡散機能を必要としている理由は不明なままです。このマルウェアの目的はオンラインゲームから情報を盗み出すことにあります。『League of Legends』は、ユーザーがゲームサーバーに接続してオンラインでプレイするタイプのゲームなので、もしかすると、インターネットカフェのコンピュータに感染することを狙っているのかもしれません。その場合、プレイヤーやインターネットカフェの管理者は、USB メモリを使う可能性があります。あるいは、ユーザーが友人と同じ場所でプレイすることも考えられ、ファイルを共有するために USB メモリを使う可能性もあります。Java.Cogyeka は、そのような状況を利用しようとしているのかもしれません。

シマンテックは、これらのファイルを Java.CogyekaJava.Cogyeka!autorunJava.Cogyeka!gen1 としてそれぞれ検出します。セキュリティソフトウェアは常に最新状態に保つようにしてください。

 

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