今月はじめに我々は有料課金型のSMSトロイの木馬に関する記事を掲載した。「Trojan:Android/FakeNotify.A」として検出したものだ。現在、同トロイの木馬がアップデートされ、分析と検出をより厄介にする変更が加えられていることが分かっている。

署名証明書から分かるように、新バージョンは同じ開発者が作成したものだ。トロイの木馬の全体的なふるまいに変更は無いが、コーディングアプローチはかなり変わっており、静的解析ツールなどを失敗させるのに十分だ。

例えば分析中、私はオリジナルと現行バージョン双方からのSMS送信ルーチンを比較したが、以前のよりシンプルなコーディングアプローチがよりダイナミックになっていることに気づいた。

「FakeNotify」のオリジナルバージョンでは、ルーチンはそれが何であるか、非常に簡単に「読む」ことができる単純な方法で実装されていた:

fakenotify_original_send_470px

FakeNotify.A

しかし新バージョンは、アナリストがコードを「読む」ことをより難しくするとともに、同じ目標を達成するためにJava言語のReflection/Dynamic Invocation機能を利用している。

開発者たちは、自身のエンコーディング/デコーディングアルゴリズムを使用して、ストリング引数を混乱させることによりさらに歩を進めている(これはシンプルな換字式的な暗号に過ぎないが)。以下でコード化されたフォームを見ることができる:
fakenotify_update_decoded_470px

FakeNotify.B, SHA1: df866cf4312cf9c929a9a7dc384eebb19d2b2c2d
コーディングアプローチの変更は、大部分の静的解析ツールを容易に無効化することができる。

覚書:分析中、私は突然、Windows LoadLibraryとGetProcAddress combo API関数およびJava Reflectionのいくつかの機能との類似点に気づいた。他のAPI関数アドレス(Windows)およびクラス、もしくはObject handleのメソッド(Java)に関しては、双方とも開発者が最近獲得した方法もしくは関数をコールするか、実行することを可能にする。

いずれにせよ、Androidの世界に戻ろう。新たなFakeNotifyバージョンの分析を容易にするため、私はシンプルなPythonスクリプトを作成し、難読化されたストリングのインスタンスを、悪意あるアプリケーションでデコンパイルされているJavaソース全ての平文ものと入れ替えた。

続きを読む

エフセキュアブログを読む
エフセキュア公式ページ

本当に役立つセキュリティの記事をもっとみる
不要なJavaには別れを告げよう
大迷惑!Anonymousによる慈善活動
Facebookの新機能にトラブル?
FacebookとTwitterで100万人規模のスパム ――被害はインドとフィリピンに集中
トロイの木馬を買う政府はどこ?招待者限定の秘密イベントに潜入

エフセキュア インターネットセキュリティ 2012 3PC 3年版エフセキュア インターネットセキュリティ 2012 3PC 3年版
エフセキュア(2011-11-07)
販売元:Amazon.co.jp
クチコミを見る