Tag Archives: worm

Grupo cibercriminoso Ramnit é atingido por grande operação de forças de segurança

Com a assistência da Symantec e outros parceiros da indústria, a Europol confiscou grande parte da infraestrutura da gangue.

Read More

?????????????? Linux ???

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

シマンテックは、「モノのインターネット」を狙う目的で設計されたと思われる新しい Linux ワームを発見しました。このワームは、従来のコンピュータだけでなく、さまざまな種類の小型のインターネット対応デバイスも攻撃する機能を備えています。家庭用ルーター、セットトップボックス、防犯カメラといったデバイスに通常搭載されているチップアーキテクチャごとに亜種が存在します。このようなデバイスへの攻撃はまだ確認されていないものの、その危険性があることに多くのユーザーは気付いていません。これは、自分が所有するデバイス上で Linux が稼働していることを知らないためです。

ワーム Linux.Darlloz は、PHP の脆弱性を悪用して自身を拡散します。ここで利用されているのは、「PHP の「php-cgi」に存在する情報漏えいの脆弱性」(CVE-2012-1823)で、2012 年 5 月にはパッチが公開されている古い脆弱性です。攻撃者は最近、2013 年 10 月末に公開された概念実証(PoC)コードに基づいてこのワームを作成したようです。

Linux.Darlloz は、実行されるとランダムに IP アドレスを生成し、よく使われている ID とパスワードの組み合わせでデバイス上の特定のパスにアクセスして、HTTP POST 要求を送信します。これが脆弱性を悪用しています。標的にパッチが適用されていない場合には、悪質なサーバーからワームをダウンロードして次の標的を探します。現在、このワームは Intel x86 系システムにしか感染しないようです。というのは、悪用コードのダウンロード URL が、Intel アーキテクチャ用の ELF バイナリにハードコード化されているからです。

Linux は、最もよく知られているオープンソース OS で、各種のアーキテクチャに移植されています。Intel ベースのコンピュータに限らず各種の CPU を搭載した小型デバイス、たとえば家庭用ルーターやセットトップボックス、防犯カメラから、産業用制御システムなどでも稼働しています。デバイスによっては、Apache Web サーバーや PHP サーバーなど、設定や監視に使う Web ベースのユーザーインターフェースも用意されています。

シマンテックは、この攻撃者が、同じサーバー上で ARM、PPC、MIPS、MIPSEL など Intel 以外のアーキテクチャ用の亜種をすでにホストしていることも確認しています。

ARM_0.png

図. ELF ヘッダーの “e_machine” 値を見ると、このワームが ARM アーキテクチャ用であることがわかる

これらのアーキテクチャのほとんどは、前述したようなデバイスで使われています。攻撃者は、Linux が稼働している各種のデバイスに攻撃範囲を広げることで、感染の可能性を最大限に拡大しようと試みているようですが、PC 以外のデバイスに対する攻撃はまだ確認されていません。

組み込みのオペレーティングシステムとソフトウェアを使うデバイスの製造元では、ユーザーに確認することなく製品を設定しているので、事態が複雑になっています。多くのユーザーは、家庭やオフィスで脆弱なデバイスを使っているとは認識していません。デバイスの脆弱性を仮にユーザーが認識していたとしても、製品によっては製造元から更新版が提供されないという別の問題もあります。これは、デバイスのメモリが不足していたり CPU が低速すぎたりして新しいバージョンのソフトウェアをサポートできないなど、旧式の技術やハードウェアの制限が原因となります。

Linux.Darlloz への感染を防ぐために、以下の処理を実行することをお勧めします。

  1. ネットワークに接続されているすべてのデバイスを確認する。
  2. デバイスのソフトウェアを最新のバージョンに更新する。
  3. デバイスで使用できる場合には、セキュリティソフトウェアを更新する。
  4. デバイスに強力なパスワードを設定する。
  5. 以下のパスに対する着信 HTTP POST 要求が不要な場合には、ゲートウェイまたは各デバイスで遮断する。
  • -/cgi-bin/php
  • -/cgi-bin/php5
  • -/cgi-bin/php-cgi
  • -/cgi-bin/php.cgi
  • -/cgi-bin/php4

 

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

Linux Worm Targeting Hidden Devices

      No Comments on Linux Worm Targeting Hidden Devices

Symantec has discovered a new Linux worm that appears to be engineered to target the “Internet of things”. The worm is capable of attacking a range of small, Internet-enabled devices in addition to traditional computers. Variants exist for chip architectures usually found in devices such as home routers, set-top boxes and security cameras. Although no attacks against these devices have been found in the wild, many users may not realize they are at risk, since they are unaware they own devices that run Linux.

The worm, Linux.Darlloz, exploits a PHP vulnerability to propagate itself in the wild. The worm utilizes the PHP ‘php-cgi’ Information Disclosure Vulnerability (CVE-2012-1823), which is an old vulnerability that was patched in May 2012. The attacker recently created the worm based on the Proof of Concept (PoC) code released in late Oct 2013.

Upon execution, the worm generates IP addresses randomly, accesses a specific path on the machine with well-known ID and passwords, and sends HTTP POST requests, which exploit the vulnerability. If the target is unpatched, it downloads the worm from a malicious server and starts searching for its next target. Currently, the worm seems to infect only Intel x86 systems, because the downloaded URL in the exploit code is hard-coded to the ELF binary for Intel architectures.

Linux is the best known open source operating system and has been ported to various architectures. Linux not only runs on Intel-based computers, but also on small devices with different CPUs, such as home routers, set-top boxes, security cameras, and even industrial control systems. Some of these devices provide a Web-based user interface for settings or monitoring, such as Apache Web servers and PHP servers.

We have also verified that the attacker already hosts some variants for other architectures including ARM, PPC, MIPS and MIPSEL on the same server.

ARM_0.png

Figure: The “e_machine” value in ELF header indicates the worm is for ARM architecture.

These architectures are mostly used in the kinds of devices described above. The attacker is apparently trying to maximize the infection opportunity by expanding coverage to any devices running on Linux. However, we have not confirmed attacks against non-PC devices yet.

Vendors of devices with hidden operating systems and software, who have configured their products without asking users, have complicated matters. Many users may not be aware that they are using vulnerable devices in their homes or offices. Another issue we could face is that even if users notice vulnerable devices, no updates have been provided to some products by the vendor, because of outdated technology or hardware limitations, such as not having enough memory or a CPU that is too slow to support new versions of the software.

To protect from infection by the worm, Symantec recommends users take the following steps:

  1. Verify all devices connected to the network
  2. Update their software to the latest version
  3. Update their security software when it is made available on their devices
  4. Make device passwords stronger
  5. Block incoming HTTP POST requests to the following paths at the gateway or on each device if not required:
  • -/cgi-bin/php
  • -/cgi-bin/php5
  • -/cgi-bin/php-cgi
  • -/cgi-bin/php.cgi
  • -/cgi-bin/php4

Android App Contains Windows Worm

      No Comments on Android App Contains Windows Worm

When developers are unaware of security they open the door to threats against their customers and users. We are not just talking about exploitable vulnerabilities in their code, but about something much more obvious than that. Here is the curious case of an Android application on Google Play that contains some traces of malware, but Read more…

Is Your Mobile Device Misbehaving? How to Catch Common Malware Misbehaviors

Nothing in life is free, and that’s especially true when it comes to mobile apps. Thousands of free apps are flooding the marketplace—most are legitimate and available at no initial cost. But they often come at the price of offering up data from your smartphone or tablet that you might not be aware of or Read more…

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 にアクセスしてください。