Tag Archives: Security Response

Rise of the Java Remote Access Tools

We recently came across an attack campaign which looked quite unusual compared to the standard attacks normally seen in the wild. This campaign is targeting government agencies by sending phishing emails with a malicious attachment. Nothing new so far,…

Spammers Playing in Wimbledon Court

The 127th edition of the Wimbledon Championships, and third Grand Slam event of the year, are coming to an end with the final being played July 7. When it comes to major sporting events we can expect large amount of gambling, and spammers take advantag…

Spammers Playing in Wimbledon Court

The 127th edition of the Wimbledon Championships, and third Grand Slam event of the year, are coming to an end with the final being played July 7. When it comes to major sporting events we can expect large amount of gambling, and spammers take advantag…

Google Play ???? Android ??????

      No Comments on Google Play ???? Android ??????

アプリストアから悪質なアプリを除外するのが難しいことは、先日のブログでもお伝えしたばかりです。本日、シマンテックの自動システムによって、Google Play でも別のミスリーディングアプリが公開されている例が見つかりました。

このアプリは Next Launcher 3D Pro という名前で、同じく Google Play で公開されている Next Launcher 3D という正規アプリの無償版であると謳っています。調べてみると、このアプリには一見して何かがおかしいとわかる明らかな特徴があります。正規版の開発元である Go Launcher Dev Team は、無償版と称するアプリの開発元である TuranPercin とは別です。偽のアプリをインストールすると、無償でアプリを使う前に何ページかの広告を閲覧する必要があると説明されます。

Fig2_275_0.png

図 1. インストール画面

広告表示を実行し終わるとようやく、悪質なアプリはダウンロードに進み、有償版の Next Launcher 3D をインストールするよう求めてきますが、Google Application Licensing サービスによって保護されているため、これは正しく処理されません。

Fig1_275_0.png

図 2. 正規の Next Launcher 3D アプリで表示されるメッセージ

シマンテックでは、同様の手口でユーザーを欺いて正規アプリの偽バージョンをインストールさせようとするアプリをさらに 752 種類特定しています。Google Play で特定されたアプリは 1 つだけで、このアプリが公開されていることは Google 社に通知済みです。

ノートン モバイルセキュリティなどのセキュリティアプリをインストールすることをお勧めします。ノートン モバイルセキュリティは、今回のアプリを Android.Fakeapp として検出します。

スマートフォンとタブレットの安全性に関する一般的なヒントについては、モバイルセキュリティの Web サイト(英語)を参照してください。

 

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

Another Fake Application for Android Found on Google Play

Recently we released a blog talking about the difficulties of keeping app stores free of malicious applications. Today our automated system flagged yet another example of a misleading application that was posted on the Google Play store.
The applicatio…

Another Fake Application for Android Found on Google Play

Recently we released a blog talking about the difficulties of keeping app stores free of malicious applications. Today our automated system flagged yet another example of a misleading application that was posted on the Google Play store.
The applicatio…

Java Autorun ??? Java.Cogyeka?? 3 ??

このブログシリーズの第 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 にアクセスしてください。

Java Autorun ??? Java.Cogyeka?? 2 ??

不明瞭化
前回のブログでは、Java.Cogyeka で用いられているステルス技術について説明しました。ユーザーやセキュリティ研究者を欺く効果はありませんが、こうしたステルス技術が利用されているのは、Java マルウェアが絶えず改良されていることの証です。

ステルス技術とは別に、Java.Cogyeka はさまざまな不明瞭化技術によってセキュリティ研究者の目をすり抜けるように設計されています。成功している手口もありますが、なかには過剰な手口もあり、過剰な不明瞭化は、多くの場合マルウェアの効果を損ねているようです。

Java.Cogyeka で使われている不明瞭化技術は以下の 3 つです。

1. autorun.inf の不明瞭化
autorun.inf ファイルは、リムーバブルドライブを介した Java.Cogyeka の拡散に関与しています。このファイルは、以下の 3 つの部分で構成されています。

  1. Action
  2. Icon
  3. ShellExecute

autorun.inf がリムーバブルドライブの Recycler フォルダで自身を実行するには、ShellExecute 関数が必要です。前回のブログで述べたように、Java.Cogyeka はフォルダアイコンを使い、「Open folder to view files(ファイルを表示するにはフォルダを開いてください)」というメッセージも表示します。

Java.Cogyeka は、不明瞭化技術を使うことで、セキュリティスキャナによって autorun.inf が検出されないようにしています。不明瞭化する際には、エントリ間に無意味なゴミデータが挿入されます。そのゴミデータを構成しているのは、0x00 ~ 0x1F の制御文字です。このような不明瞭化技術は、悪質な .inf または .html ファイルでしばしば見つかります。

Figure1_3.png

図 1. 不明瞭化技術で挿入されるゴミデータ

不規則性を生ませるために、ASCII 文字の大文字と小文字がランダムに使われています。ゴミデータのサイズは 0 ~ 50 バイトで、細工された autorun.inf ファイルにトークンとともに配置されているクラスタの中にあります。シマンテックは、Java.Cogyeka によって細工された autorun.inf ファイルを Java.Cogyeka!autorun として検出します。

2. Zelix 不明瞭化ツール
Java.Cogyeka は、15 個のクラスファイル(a.class から o.class)を持つ JAR ファイルとして自身を拡散する Java マルウェアです。本来これらのクラスは、各クラスの機能に基づいて名前が付けられていたと考えられます。Zelix KlassMaster という名前の Java 不明瞭化ツールで、クラス名、メソッド名、Java バイトコード、文字列を変更しています。

Figure2_1.png

図 2. XOR テーブルで暗号化され復号される文字列の Zelix ビットマップ

Java 不明瞭化ツール自体はマルウェアではなく、正規のツールです。Java の開発者は、Java クラスファイルに重要なデータやコードを隠そうとすることがあります。Zelix による不明瞭化が適用されている場合、Java クラスファイルを逆コンパイルするのは困難です。

このツールを使うオブジェクトは、Java.Cogyeka だけではありません。たとえば、Java の脆弱性を悪用した悪質な Java アプレットの多くが、やはりこのツールを使っています。

3. ネットワーク接続の不明瞭化
サーバー名とポート番号の決定
コマンド & コントロール(C&C)サーバーから追加のモジュールをダウンロードするために、Java.Cogyeka は C&C サーバーに接続しなければなりません。しかし、既存のサーバーに接続しつつ多くの偽サーバーにも接続しようとするのは困難です。このようにして追加のモジュールをダウンロードするには長い時間が掛かりますが、その難しさの原因になっているのは、複雑なサーバー名とポート番号です。

C&C サーバーのホスト名は 5 個から 8 個のランダムな文字から成り、ドメインは動的 DNS に基づいてランダムに選択されます。ランダムな文字の選択には、マルウェアが実行される時刻に基づいたランダムなシードを使います。ドメインは、ランダムな文字の取得に使われたものと同じランダムシードによって、22 の有名なドメインサービスから選択されます。ポート番号も、同じランダムシードによってランダムに生成されます。シードの数は、64 ビット整数に基づいています。

Figure3_1.png

図 3. ホスト名、ドメイン名、ポート番号の決定に使われるランダムなシード

生成された C&C サーバー名は、動的な DNS サービスで別のユーザーによってホストされている正規のサーバー名と同じになる可能性もあります。その場合、マルウェアは生成された TCP ポート番号でこのサーバー名に接続しようとします。サーバーがこのポートでの接続を拒否した場合、接続はただちに停止されますが、マルウェアは接続を確立できないことがわかるまで待機しなければなりません。

ネゴシエーション
追加モジュールのダウンロードに使われるプロトコルはオリジナルのもので、不明瞭化されています。このプロトコルは、擬似乱数ジェネレータによって作成されるストリーム暗号を使うため、セキュアな接続を確立する可能性があります。

Java.Cogyeka とサーバープログラムでは、ランダムシードも擬似乱数ジェネレータも同じです。マルウェアは、2 つのバイトストリームを交換してネゴシエートします。

Figure4_1.png

図 4. Java.Cogyeka とサーバープログラムのネゴシエーション

Java.Cogyeka は擬似乱数ジェネレータで 1 つ目のバイトストリームとその長さを生成し、TCP 接続を介してサーバーに送信します。次にサーバーがデータを受信しますが、このサーバーがマルウェア作成者によって作成されたものである場合には、実行されるサーバープログラムはマルウェアと同じランダムシードと擬似乱数ジェネレータを備えています。サーバーは、同じジェネレータを使うことでバイトストリームとその長さを検証できます。再確認のため、サーバーは 2 つ目のバイトストリームを作成します。マルウェアは 2 つ目のバイトストリームを受け取り、先に生成したバイトストリームでそのデータを検証します。

ネゴシエーションに成功した時点で、マルウェアはサーバーが同じランダムシードと擬似乱数ジェネレータを使っていることを確認できたことになります。

モジュールのダウンロード
ネゴシエーションに成功すると、Java.Cogyeka はダウンロードするモジュールのサイズなどの設定をダウンロードしますが、この設定はストリーム暗号によって暗号化されています。サイズを取得すると、ストリーム暗号によって暗号化されたモジュールをダウンロードします。この設定には、ダウンロードされるモジュールのハッシュ値などが含まれており、マルウェアはダウンロードの成否を SHA-512 で確認します。

作成の意図
ここまで、Java.Cogyeka で使われている不明瞭化の 3 つの技術について説明しました。これらの技術はいくぶん複雑ではあるものの、マルウェアの autorun.inf ファイルはセキュリティスキャナで簡単に検出されます。サーバー名とポート番号に使われる不明瞭化技術の一部は、不明瞭化が行き過ぎているために効果を発揮していません。ストリーム暗号は、ネットワークタイプのセキュリティスキャナに対して効果を発揮する可能性があります。この不明瞭化技術は、Java.Cogyeka が単なる趣味として作成されたものではなく、明確な意図を持って作成されたものであることを示しています。

次回は…
このシリーズの最終回となる次回は、Java.Cogyeka の目的と、どのような情報がいかにして取得されるかについて説明します。

 

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

?????????????????????????

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

米国の独立記念日は国民の祝日であり、7 月 4 日という日付はよく知られています。さまざまな祝典が催され、政治的演説やパレード、花火で祝うのが伝統です。スパマーは、この日を悪用しようとして独立記念日のイベントにちなんだ多くのスパムメッセージを送りつけています。確認されたスパムサンプルの多くは、車の在庫一掃セールをはじめとして、お買い得商品を宣伝するものです。
 

Spammers Independence 1.jpeg

図 1. 米国の独立記念日を狙ったスパム
 

このスパムメールは、7 月 4 日のイベントを前に 2013 年モデルの自動車が記録的な需要を示していると述べてユーザーを誘おうとしています。電子メールに記載されているリンクをクリックすると Web ページにリダイレクトされ、価格を比較したい自動車の種類を選択するように求められます。詳しい情報を入力すると、今度は個人情報、電子メールアドレス、支払い方法などを入力する Web ページに移動します。

独立記念日にちなんで一掃セールを謳うスパム攻撃では、以下のような件名が確認されています。

  • (July 4th) Independence Day Sale – Insane!((7 月 4 日)独立記念日セール – 前代未聞!)
  • Retrieve 4th of July Day Prices On All Cars Today(全車対象、7 月 4 日の限定価格は今日だけ!)
  • Every 2013 automobile is (50%-off) July 4th(2013 年モデルがどれも 50% オフ、7 月 4 日限り)
  • Summer Kickoff (4th of July deals start now)(夏のキックオフセール(本日より、7 月 4 日特別価格))
  • INCREDIBLE 4th of July Savings on New Cars in Your Area xxx!(7 月 4 日は、お近くの xxx で信じられないようなお買い得)

Spammers Independence 2.jpeg

図 2. 7 月 4 日を狙った特別セールスパム
 

最近、スパマーの間でトレンドになっているのが、ディスカウント用の偽のクーポンコードで商品を購入できると謳ってユーザーを誘う手口です。このスパム攻撃で使われているディスカウントコードは、JULY [ランダムな数字] などの形式で、独立記念日のセールを利用しようとするユーザーを誘導してリンクをクリックさせることを狙っています。

次に示すスパムメールのサンプルは、偽の広告でユーザーを煽って医薬品を購入させようとしています。URL をクリックすると、医薬品販売を騙る偽の Web サイトにリダイレクトされます。このような偽の広告には十分に注意する必要があります。
 

Spammers Independence 3.jpeg

図 3. 偽の医薬品販売 Web ページ
 

迷惑メールや心当たりのない電子メールの扱いにはご注意ください。シマンテックでは、最新の脅威に関する最新の情報をお届けできるよう、常時スパムの監視を続けています。

一緒に、独立記念日をお祝いしましょう!

 

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

The Java Autorun Worm, Java.Cogyeka (3 of 3)

As I wrote in parts one and two of this series of blogs, Java.Cogyeka uses an autorun.inf file to propagate and download an additional module. I was able to get the downloaded module, based on a Java application, even though it took over a week because of the difficulty in establishing a connection with the server. The downloaded module, like the main module, tries to protect itself through obfuscation with Zelix KlassMaster. After investigating the downloaded module, I discovered that the purpose of Java.Cogyeka is to steal information from a video game on the compromised computer.

The targeted game
The game being targeted by Java.Cogyeka is League of Legends, a free-to-play video game published by Riot Games. While the game is free-to-play, users can purchase additional characters and character skins with real money. Java.Cogyeka may target League of Legends because of these real money transactions.

Infostealer
The downloaded module attempts to steal the League of Legends player’s account information and keystrokes to gain control of their account. While the purpose of the threat is to steal information related to the League of Legends game, it may also steal additional information because of its keystroke-stealing capabilities.

Stealing keystrokes
The downloaded module drops two types of DLL files, a 32-bit version and a 64-bit version. This is done using the same technique that the threat uses for obtaining the drive letters of the removal drive in the main module, as described in the second Java.Cogyeka blog. The Java system does not permit Java applications to obtain keystroke information from other processes. The malware may steal passwords, but it needs a native call, so it drops the Windows DLL file from the Java application.

The SetWindowsHookEx API is used to log keystrokes and mouse operations while WH_KEYBOARD_LL and WH_MOUSE_LL are used as hook types. The stolen keystrokes and mouse operations are then sent to a remote server.

Fig1_1.png

Figure 1. Downloaded module steals keystrokes and mouse operations

Stealing account information
The malware steals keystrokes in the hopes of obtaining a player’s League of Legends user name and password. However, the League of Legends login window has an option to remember a player’s user name and, if a player has selected this option, Java.Cogyeka cannot obtain the player’s user name. To get around this, the malware also attempts to steal a file that contains the user’s account information.

Fig2_0.png

Figure 2. League of Legends login screen

To steal the user’s account information, the malware tries to search for the following folder on all drives:

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

This folder contains a folder with the name of the version number of the game, for example “0.1.2.0.” The malware traverses folders at the version folder searching for the following path:

  • deploy/preferences/global/global.properties

This file contains the game settings as well as the player’s user name that is used to log in to the game.

Sending the stolen information
Once the downloaded module has obtained the login information, it sends it to the domain Jkl.no-ip.biz on TCP port 1087.

This server name has been deactivated and is no longer accessible. However, both the server name and port number are hardcoded into the module unlike the command-and-control server name and port number, and the stolen information is encrypted.

Fig3.png

Figure 3. Malware observed worldwide as the targeted game is played all over the world

Conclusion
In this series of blogs, I have discussed the propagation and information-stealing functions of Java.Cogyeka and how it uses an obfuscation tool to protect itself from detection by security scanners. While the malware has a specific target, the video game League of Legends, other information may also be stolen through the captured keystrokes and mouse operations. Java.Cogyeka may also update itself because it downloads an additional Java module. We will continue to observe and investigate this malware.

I am left wondering why the malware requires the USB spreading functionality. The purpose of this malware is to steal information from an online game. The League of Legends is a type of game whereby users connect to a game server in order to play online. There is a possibility that it attempts to infect computers at Internet cafés. In this case, game players or administrators of the Internet café may use a USB storage device. On the other hand, a user may play the game with his or her friends at the same place and use USB storage devices to share files. It is possible that the malware aims to take advantage of such a situation.

Symantec detects these files as Java.Cogyeka, Java.Cogyeka!autorun, and Java.Cogyeka!gen1. We recommend  that users keep their security software up to date.