Hide and seek――Citadelの解析から見る近年のマルウェア動向:セキュリティ業界、1440度(8)(1/2 ページ)
2013年後半から、日本でもインターネットバンキングを狙ったマルウェアによる被害が急増している。その手段としてしばしば使われているマルウェア、「Citadel」を独自に解析した結果を紹介する。
Citadelマルウェアとは
「Citadel」とは、「Zeus」と呼ばれるボットマルウェアを元に開発された新しいマルウェアです。Zeus同様に感染したPCでボットネットを構成し、C&Cサーバーからの指令に従ってユーザーの挙動を監視、攻撃に利用されます。
特にインターネットバンキングにアクセスした際の挙動を監視し、振込先や振込額の書き換えといった不正な処理を行うMITB(Man In The Browser)攻撃に利用されています。日本では、Citadelによる金融機関のインターネットバンキングを狙ったMITB攻撃が増加しています(関連記事)。
Citadelマルウェアには、セキュリティ技術者による解析や対策を困難にするため、特定環境でしか動作しないようにする機能や解析対策機能が多く実装されています。今回は、FFRIで入手したCitadelマルウェアを解析した結果から見えてきた解析対策機能などについて解説します。
Citadelマルウェアの基本構造
今回解析したCitadelマルウェアの基本構造は、以下の図1のようになっていました。
ファイルシステム上には復号用実行ファイルの形式で保存されており、実際のC&Cサーバーとの通信を行う処理などは、本体実行イメージとして暗号化されて格納されていました。これは、マルウェアをパッカーでパックしている今までの構造と同様の構造です。
ただ、従来は、解析する際に実行ファイルのヘッダー部分を確認するだけで、パッカーでパックされていることが分かるものがほとんどでした。しかし、今回解析したCitadelマルウェアのパッカー部分(上図での「復号用実行ファイル」)は、一般的なプログラムと同じような構造を持っていました。
本体実行イメージは、それ自体が1つの実行ファイルの形式を持っていました。Citadelマルウェアを実行すると、復号用実行ファイルが本体実行イメージをメモリ上に展開し、本体の処理が実行されるという流れになっています。
環境情報埋め込み用データ領域は、Citadelマルウェアが感染する際に書き換えられる領域です。Citadelマルウェアは感染する際、対象PCから収集した情報を使用して、この領域に固有データを書き込んでから感染します。このためCitadelマルウェアでは、感染するPCごとに実行ファイルの内容が一部異なります。
実際に、感染前のCitadelマルウェアと感染後のCitadelマルウェアのバイナリイメージを比較した結果、図2のようになりました。左側が感染前のマルウェアのバイナリイメージで、右側が感染後のマルウェアのバイナリイメージです。異なっている箇所は、バイナリイメージの中の一部分であることが分かります。
違いがあるのは一部分ですが、上記検体のそれぞれのSHA1ハッシュ値を取得し、VirusTotalにて検体の検索を行ったところ、感染前マルウェアについては検体が既に登録されていました。一方、感染後マルウェアは検体が登録されていませんでした。
感染前マルウェアは感染の入り口となるため、広く流通すると考えられます。そのため、パターンファイルでの検知も可能です。
しかし、感染後マルウェアは感染PCのみでしか動作しないようになっているため、検体の入手も困難になります。これにより、パターンファイルでの検知ができない可能性があります。感染PCごとに異なるバイナリが感染するため、パターンファイルによる検知・駆除ができない――これが、被害が拡大した一因ではないかと考えています。
また、今回解析したCitadelマルウェアを入手経路ごとに分類し、復号用実行ファイルと本体実行イメージのPEヘッダーのタイムスタンプ値を比較した結果、以下のようになりました。下の表では、タイムスタンプ値から年月日の箇所のみを抜き出しています。
今回は3種類の入手経路から合計4検体を対象に比較しています。入手経路Aは2検体を対象としました。
タイムスタンプ | 入手経路A(1) | 入手経路A(2) | 入手経路B | 入手経路C |
---|---|---|---|---|
復号用実行ファイルタイムスタンプ | 2011/2/7 | 2011/6/3 | 2013/10/22 | 2011/5/22 |
本体実行イメージタイムスタンプ | 2012/10/6 | 2012/10/6 | 2012/6/16 | 2013/5/28 |
上の表のように、復号用実行ファイルのタイムスタンプと本体実行イメージのタイムスタンプとでは違いがあることが分かりました。この理由としては、復号用実行ファイルは過去のものを流用している可能性が考えられます。
また、入手経路Aの2つの検体は、復号用実行ファイルのタイムスタンプが異なる値となっているのに対して、本体実行イメージのタイムスタンプは同じです。攻撃対象が同一であることから、本体実行イメージは同じものとなっていますが、復号用実行ファイルを複数用意することで、マルウェアの種類を多くなるように見せているのではないかと考えられます。
入手経路ごとの復号用実行ファイルのタイムスタンプを比較すると、入手経路Bのものは他のものよりも新しいタイムスタンプとなっています。解析の結果でも、入手経路Bのものは他と異なる復号ロジックを使用しており、新しい手法が使用されていました。
本体実行イメージのタイムスタンプの比較では、入手経路Cの検体が他に比べて新しいものになっています。これも解析の結果、入手経路Cのみに搭載されている機能があることが分かり、マルウェアも日々進化していることを実感しました。詳細については後述します。
復号ロジックの変化
ここでは復号ロジックの変化について説明します。前述の比較表での入手経路A、Cでの復号用実行ファイルの復号処理では、復号用実行ファイル内に埋め込まれている本体実行イメージを自プロセスのメモリ空間上に展開します。この処理は、今までのパッカーでも見られた復号ロジックとなります。
これに対して、入手経路Bの検体の復号ロジックの概要を以下に示します。
復号手順としては、今までは自プロセス内に復号していたのを別プロセスに復号するようになっています。
まず、自分自身の子プロセスを一時停止状態で生成します。その後、子プロセスのメモリ空間にマップされた実行イメージを一度アンマップし、本体実行イメージで書き換え、一時停止していたプロセスを再開することで実行させます。
これは“Hollow Process Tricks”と呼ばれ、マルウェアが正常なプロセス内で悪意のあるコードを実行させる場合などに利用される手法です。この場合、マルウェアがメモ帳などの標準的なプロセスを一時停止状態で起動させ、マップされたメモ帳の実行イメージをマルウェア自身に書き換えることで、プロセス一覧上では「notepad.exe」と表示された状態でマルウェアを実行する手法として利用されています。
Copyright © ITmedia, Inc. All Rights Reserved.