threat-research

BianLian:新たな亜種の登場

FortiGuard Labs発表の脅威リサーチ速報

先頃行ったマルウェア分析の日次ルーチンにおいて、FortiGuard Labsチームのメンバーは見慣れないAndroidサンプルに遭遇しました。


分析結果

一見したところ、このAPKには明らかに高度な難読化が施されており、これまで見たこともない手法でパッケージ化されている可能性がありました。ただし、必ずしも非常に複雑な手法が使われているとは限りません。さまざまなランダム関数を使用して、サンプルが持つ本当の機能を隠しているようでした。


また、最初の検証で生成された雑多な関数の中で興味深いコードが見つかったため、FortiGuardの社内APKサンドボックス分析システムでサンプルを実行し、静的 / 動的両方の分析からさらなる情報を収集することにしました。


サンドボックス分析の結果

サンドボックス分析の結果から、サンプルに関して理解を深めることができました。まずは、Dexオペレーションセクションです。これは、動的にロードされたファイルのログが記録されるセクションであり、エントリが2つありました。最初のエントリは、メインアプリケーション自体のロードに関する内容、2番目のエントリは、「payload.apk」と呼ばれるファイルに関する内容です。これは、このサンプルの実行中に別のアプリケーションがインストールされる可能性が高いことを意味します。ところが、情報の持ち出しや接続の初期化といった注目すべき呼び出しのほとんどは、最初のアプリケーション内のコードから実行されているのです。

この情報と、最近登場したマルウェアファミリーから、「このサンプルはマルウェアではないか」という直感が働きました。とはいえ、まずは難読化を解除する必要がありました。


難読化手法の分析

コードベースのほとんどはランダムに生成された無意味なデータで構成されており、非常に厄介でした。幸運なことに、テンプレートはとても識別しやすいものでした。クラスのほとんどは意味をなさず、実際の機能をまったく持っていなかったのです。ところが、このアプリケーションを分析してみたところ、膨大な数のクラスは使い物にならないことがわかりました。ただし、意味のないクラスのテンプレートは、予測が極めて容易なものだったのです。

この無意味なクラスには、ランダムな大文字と小文字を組み合わせた名前が付いています。

図1:ランダム生成された無意味なクラス

図1:ランダム生成された無意味なクラス

さらに、無意味なクラスと、使用されたコードを含むクラスには、明らかな違いがありました。好都合なことに、使用コードを含むクラスはすべてオリジナルの名前を保持していたのです。ところが、事態はさらに複雑であることが判明します。正当な関数やパッケージには、それぞれ無意味な計算を行う関数やパッケージが7つ付いていたのです。

コード内の文字列のほとんどは、バイト配列のXOR復号を実装する関数で生成されています。これは、シンプルでありながら比較的有効なソリューションです。各文字列は、引数を取らない関数に対応しており、この関数は「文字列型」のオブジェクトを返します。

以下の分析セクションで使用したスクリーンショットでは、難読化を解除したバージョンのコードが示されています。このコードは単調で簡単な方法で取得できるため、このレポートではそのプロセスの説明は割愛します。不要な関数の除外と、必要な文字列の生成を実行するだけで、簡単に作成できます。

ここで、Max 'Libra' Kerstenと彼のAndroidProjectCreatorに感謝したいと思います。このツールにより、難読化を解除する作業を予想よりも大幅に簡素化できました。彼のプロジェクトについてご存知ない方は、以下をご覧ください。


マルウェア分析

このブログ記事のタイトルからわかるように、難読化されたサンプルはBianLianマルウェアファミリーの1つです。このマルウェアについては、2018年のThreatFabricで初めて解説されています。

当初、BianLianは他のマルウェアのドロッパーでしたが、トルコのバンキングアプリケーションを主な標的とする独自の有害コードが開発され、急速に拡大を始めました。

Androidマルウェアは、まずアイコンを非表示にし、アクセシビリティサービス機能を悪用するために、実行権限の割り当てを何度もリクエストします。

図2:実行権限のリクエスト

図2:実行権限のリクエスト

権限を得ると、すべてのモジュールが起動を開始します。2018年のバージョンと比べると、新たな機能がいくつか追加されています。アクセシビリティサービスの悪用に加えて、次のモジュールが追加されています。このリストには、BianLianの旧モジュール群と、新バージョンに加えられたモジュールが含まれます。

  • text:SMSメッセージの送信、受信、ログ記録に使用するモジュール
  • ussd:USSDコードの実行と呼び出しに使用するモジュール
  • injects:オーバーレイ攻撃(主にバンキングアプリケーション)の実行に使用するモジュール
  • locker:画面のロックに使用するモジュール(ユーザーがデバイスを使用できなくなるようにする)

上記のモジュールに加えて、このBianLianサンプルには以下で詳しく説明するように次のモジュールも含まれています。

  • screencast
  • socks5

Screencastモジュール

Screencastは、マルウェアがデバイスの画面を記録するためのモジュールです。Androidパッケージであるandroid.media.projection.MediaProjectionを使用して、スクリーンキャストする仮想ディスプレイを生成します。

まず、画面がロックされているかどうかをチェックします。ロック状態になっている場合、ロックを解除し、記録を開始します。記録は、他の機能と同様にFCM(Firebase Cloud Messaging)を使用してリモートで開始されます。

図3:Screencastモジュール

図3:Screencastモジュール


Socks5モジュール

これは、JSCH(Java Secure Channel)を使用して、デバイス上にSSHサーバーを作成するモジュールです。JSCHは、SSH2をPure Javaで実装するライブラリです。BianLianはこのツールを使用し、ポート34500でリモートポート転送を使用してSSHセッションを実行するプロキシを設定します。これは、C&Cとの通信を検知しにくくするという点で、2017年のMilkyDoorマルウェアと類似した実装です。

図4:Socks5モジュール

図4:Socks5モジュール


ドロップされるファイル

BianLianは当初、ドロッパーとして開発されました。したがって、このサンプルにペイロードがあるのは驚くべきことではありません。BianLianの旧バージョンでは、ペイロードはAPKアセットから復号されますが、このバージョンではC&Cからダウンロードされます。

ドロップされたAPKには特筆すべき点はなく、それ自体はマルウェアではありません。コードベースは非常に小さく、関数を1つだけ実行します。Google SafetyNet APIを使用して、Google Playプロジェクトがアクティブかどうかをチェックします。このコードは、Javaリフレクションにより、メインアプリケーションによってロードおよび使用されます。

図5:Payload.apkの実行

図5:Payload.apkの実行

このペイロードは別のマルウェアではなく、むしろBianLianが使用するツールだと言えます。


まとめ

BianLianは、活発な開発が現在も進行していると考えられます。完全なオリジナルではないものの、さまざまな機能が追加されており、危険なマルウェアファミリーになる可能性があります。BianLianのコードベースと戦略は、猛威を振るう他のバンキングマルウェアと同等のレベルだと言えます。

また、新たな難読化手法はあまり複雑ではないとは言え、文字列ベースの検知を迂回する可能性があり、最初に実行される静的分析だけでは検知はかなり難しくなるでしょう。

これに類似したマルウェアと言えば、同じ難読化アルゴリズムを使ったAnubisのサンプルがいくつか検知されています。おそらく、難読化ツールの作者は、このツールをハッキングフォーラムに売却したか、この2つのマルウェアファミリーのソースコードに手を加えたと考えられます。

FortiGuard Labsは、このマルウェアファミリーが初めて検知されたときから監視しており、今後も新たな脅威への対策を継続します。

-= FortiGuard Lion =-


ソリューション

フォーティネットのお客様は以下のシグネチャによって保護されています。

  • 分析されたBianLianサンプルは、Android/Agent.AMJ!trとして検知
  • Anubisサンプルは、Android/Agent.JA!trとして検知

IOC

BianLian: ac32dc236fea345d135bf1ff973900482cdfce489054760601170ef7feec458f
Payload: 75e162dc291e15d13b0f3202a66e0c88ff2db09ec02922ee64818dbddcb78d6d
Anubis: a99eb900d03aa1dd70d7712da7c42cc37ee2f2e21d763acd6ddf71a4027ed504

C&C:

hxxps://tombaba[.]club
hxxps://tomcatdomains[.]page[.]link

標的となるバンキングアプリケーション:

com.akbank.android.apps.akbank_direkt
com.albarakaapp
com.binance.dev
com.btcturk
com.denizbank.mobildeniz
com.finansbank.mobile.cepsube
com.garanti.cepsubesi
com.ingbanktr.ingmobil
com.kuveytturk.mobil
com.magiclick.odeabank
com.mobillium.papara
com.pozitron.iscep
com.teb
com.thanksmister.bitcoin.localtrader
com.tmobtech.halkbank
com.vakifbank.mobile
com.ykb.android
com.ziraat.ziraatmobil
finansbank.enpara
tr.com.hsbc.hsbcturkey
tr.com.sekerbilisim.mbank


FortiGuard LabsおよびFortiGuardセキュリティサービスのポートフォリオの詳細については、こちらをご覧ください。FortiGuard Labsは、脅威インテリジェンスブリーフ(英文)を毎週お届けしています。ぜひご購読ください。

セキュリティ監査とベストプラクティスを提供するFortiGuard セキュリティレーティングサービスについては、こちらをご参照ください。

Ransomware zones in on high-value accounts