Kaspersky Labは4月17日(現地時間)、「Analysis of the SoumniBot Android banker|Securelist」において、Androidを標的とする新しいバンキング型トロイの木馬「SoumniBot」を発見したとして、注意を呼び掛けた。このマルウェアはマニフェスト難読化という型破りな分析妨害手法を使用するという。

Analysis of the SoumniBot Android banker|Securelist

○SoumniBotの分析妨害手法

Androidアプリケーションの配布に使用されるAPK(Android Package Kit)ファイルは特定のディレクトリーおよびファイル構造を持つZIPアーカイブとされる。APKファイルのルートディレクトリには「AndroidManifest.xml」というファイル名のマニフェストファイルが含まれており、このファイルにアプリの基本的な情報が保存されている。

Kaspersky Labによると、今回発見されたマルウェア「SoumniBot」はこのマニフェストファイルを難読化するという手法を用いてマルウェアの分析を妨害するという。具体的には次の3つの手法が確認されており、分析を妨害しながらアプリとして動作するとされる。

○手法1:無効な圧縮メソッド

AndroidにはZIPアーカイブのライブラリとして「libziparchive」が存在する。このライブラリはファイルの圧縮メソッドとして非圧縮(0x0000)およびzlibのdeflate圧縮(0x0008)の2つのみを許容しており、それ以外の値を指定するとエラーとなる。しかしながら、Androidのマニフェストパーサーの実装は異なっており、deflate圧縮以外の値をすべて非圧縮として扱う。

マルウェアはこの違いを悪用し、非圧縮およびdeflate圧縮以外の値を指定して非圧縮のマニフェストファイルをアーカイブする。このようにして作成されたAPKファイルのマニフェストファイルはマニフェストパーサーから非圧縮と認識されるため、問題なく展開およびインストールすることができる。しかしながら、それ以外のライブラリは破損したAPKファイルと認識するため、展開および分析することはできなくなる。

圧縮メソッドとして無効な0xEDEEを指定するアーカイブの例 引用:Securelist

○手法2:無効なファイルサイズ

圧縮メソッドとして非圧縮を指定しつつ、実際のファイルよりも大きなファイルサイズを指定してマニフェストファイルをアーカイブする。ZIPでは非圧縮で保存されたファイルを指定のサイズでアーカイブからコピーするため、マニフェストファイルの末尾に他のファイル情報などを含む壊れたマニフェストファイルを展開することになる。

実際のファイルサイズよりも大きなサイズを指定する例 引用:Securelist

Androidのマニフェストパーサーはマニフェストファイルの末尾に追加された不要な情報を無視するためエラーとならない。しかしながら、APKファイルの分析ツール「apkanalyzer」はエラーとなり分析できなくなる。

○手法3:長過ぎるXML名前空間

AndroidのマニフェストファイルはXML(Extensible Markup Language)と呼ばれるマークアップ言語で記述される。XMLは要素や属性に名前空間を指定できるが、その名前空間の名称に非常に長い文字列を指定することで分析を妨害する。

非常に長い名前空間を定義する例 引用:Securelist

Androidのマニフェストパーサーは名前空間を無視するため影響を受けないが、分析ツールはエラーとなり分析を妨害される可能性がある。

○マルウェア「SoumniBot」

Kaspersky Labによると、発見されたマルウェア「SoumniBot」はバンキング型トロイの木馬とされ、主に韓国のAndroidユーザーを標的にするという。マルウェアを実行するとアプリのアイコンを隠蔽し、窃取したデータの送信を開始する。送信するデータにはIPアドレス、国、連絡先とアカウントの一覧、ショートメッセージサービス(SMS: Short Message Service)およびマルチメディアメッセージングサービス(MMS: Multimedia Messaging Service)のメッセージ、被害者の識別IDが含まれる。また、攻撃者のコマンド&コントロール(C2: Command and Control)サーバーに接続し、写真、ビデオ、オンラインバンキングのデジタル証明書などを窃取する機能を持つとされる。

Kaspersky Labは、調査の過程で判明したセキュリティ侵害インジケーター(IoC: Indicator of Compromise)を公開しており、必要に応じて活用することが望まれている。