脅威リサーチ
FortiGuard Labsは先日、中国にあるC2サーバーに送信された悪意のあるトラフィックを検出しました。接続に使用されたのは、日本で最も有名な宅配便会社の1つのWebサイトに酷似していました。分析の結果、接続元のWebサイトは偽のもので、Androidマルウェアを拡散していました。
一見すると、AndroidファイルはTrend Microの研究者が2018年6月に発見したFakeSpyに似ています。しかし弊社のアナリティクスプラットフォームによると、サンプルのコードベースはFakeSpyに基づいていますが、この新しい亜種には新機能が含まれており、悪意キャンペーンが拡大していることがわかりました。
初期のサンプル分析でドメイン名が判明しました。
読者の皆さんはお気付きかもしれませんが、この偽サイトは日本の宅配便会社のWebサイトを模倣しています。ただし、よく見ると、SSL証明書がなく、ページレイアウトも崩れています。
ページソースを分析すると、最初に遭遇するのがMark of the Web(MOTW)コメントです。これはWindows XP SP2で初めて導入されたセキュリティ機能で、現在はWebページやスクリプトをローカルドライブにダウンロードする際に、ユーザーの安全性を向上するために各ブラウザで使用されています。
このコメントは、このページを最初にダウンロードし、その後アップロードして新しい「機能」をページに追加したことを示します。主な追加点は「kk」と呼ばれる関数を含むスクリプトです。また、キャンペーンが開発中であることを示すコメント付きのポップアップメッセージも確認できます。関数は非常にシンプルなものです。Webサイトの「pp.html」ページを開きます。ご覧のように、エンドユーザーがWebサイトをクリック(またはタップ)すると、関数が呼び出されます。
転送後、以下のような、セキュリティ上の理由で電話番号を使用して認証が必要であるという興味深いエラーメッセージが表示されます。
入力フィールドを処理するスクリプトを確認したところ、入力された携帯電話番号を送信するcookieフィールドを使用して、入力されたデータが悪意のあるサーバーに直接送信されていることがわかりました。その後、「pp2.html」という名前の次のページに進みます。ここでも、コードのコメント部分に開発中であることを示す記述があります。
次のページに進むと、悪意のあるWebサイトが確認コードの入力を求めてきます。
再度入力フィールドのソースを確認すると、そこにもコメント付きのコードがありましたが、今回は前のpp.html JavaScriptコード部分と非常に似ていました。これはおそらく作者がコードをコピー&ペーストし、本番導入前にコメントを削除し忘れたか、またはテスト用に残しているのでしょう。
スクリプトを見ると、関数「validate()」を呼び出すと同時に、提供されたコードが4桁だということを確認することがわかります。yes(4桁)の場合、コードをサーバーに送信し、「loding1.html」というページに転送します。残念ながら、サーバーからは応答がありませんでした。しかし、このエレメントを使用してユーザーに有料サービスに加入させたり、ユーザーが実際の電話番号を使用していることを確認し、一度だけ「サービスを提供」する可能性があります。
スクリプトの送信以外に、このページにはタイマー用にカスタムスクリプトがもう1つあります。ここで興味深いのは、中国語のコメントが含まれている点です。
次に、「loding1.html」のソースを確認すると、確認コードのチェック後、サーバーの応答を処理することになっている別なスクリプトがあります。ここにも中国語のコメントがあり、さらに韓国語のコメントもありました。これはコードの再利用、中国語からの翻訳漏れ、または中国と韓国のアクター間のコラボレーションを示している可能性があります。
コードパターンを検索する中で、興味深い類似点がありましたが、残念ながらフィッシングWebサイトの作者であることを証明するには不十分でした。フィッシングページの「setInterval('newArticleCheck()', 2000);」の行は、韓国のユーザー、「쥬리앙」(Juriang)が2015年にQ&A PHPフォーラムに投稿したコードの形式、関数名、構文と一致します。しかし、この新しいコードが同じ作者のものなのか、PHPフォーラムに投稿されたコードを誰か別な人が利用しただけなのかは特定できません。
Webサイトのメインロジックを分析後、ページソースのその他の機能を分析することにしました。すると興味深いことに、「sagawa.apk」というAndroidアプリケーションのインストールを促している部分を見付けました。
残念ながら、ファイルへのリンクは利用できませんでした。代わりに、中国語で書かれた404ページに誘導されました。
当初のWebサイト分析後、WHOISを使用してドメイン情報を確認しました。サーバーは台湾にあり、2018年7月16日に登録されていました。
驚いたことに、悪意のあるアクティビティに関連していたのはこのドメインだけではありませんでした。悪用された日本の宅配便会社の実際のWebサイトから最初または最後の部分だけを使用したドメインが、さらに347もあったのです。これらのドメインは3つの電子メールアドレスで登録されています。
リスト内の他のドメインも確認することにしました。ほとんどのWebサイトは登録されていましたが、使用はされていませんでした。一部はホスティングサーバーに接続されており、その大半が台湾にありましたが、Webページの接続はありませんでした。ただし、いくつかのWebサイトで同一のフィッシングページがありました。
「-iso.com」と「-wow.com」で終わっている類似のドメインを確認しました。これらのサイトを確認すると、「-ba.com」Webサイトで使用されていたものと非常に似ている別なスクリプトがありました。しかし、ユーザーを電話番号のプロンプトに誘導する代わりに、ユーザーがWebページをクリックまたはタップすると、「sagawa.apk」アプリケーションをドロップします。「-wow.com」で終わるドメインは携帯電話番号を収集せず、「-ba.com」ドメインのように、「pp.html」、「pp2.html」、「loding1.html」も含みません。さらに、このドメインは404ページで英語のテキストを使用しています。
ここにきてようやくファイルを取得できたので、さらに機能を分析することにしました。
参照用APKは92cd2e43bf85703f92a493668be3d777c3d3cfab3f674b62bd334ddc082ac50d
最初に、APKの内容を分析します。
以下の画像は社内の分析用ツールで生成されたレポートの一部です。各APK内にあるclasses.dexファイルに加え、パッケージ名がfang.tang.shaのアプリケーションには、各種アーキテクチャ用にコンパイルされたライブラリ(libxxn.so)とアセットファイル(nini.dll)が1つ含まれています。これはすでに要注意であることを示しています。Androidアプリを稼働するために、MS Windowsライブラリが必要になることは非常にまれです。
簡単にチェックすると、nini.dllが何らかの暗号化ファイルであることがわかります。さらに調査するため、apkファイルの分析を開始しました。
最初に、ほとんどのアプリ、「like」許可、アクティビティやサービスがリストされているAndroidManifest.xmlファイルを確認しました。最初に気付いたのは、アプリケーションから求められる疑わしい許可の数が膨大だという点でした。
ただし、もう1つ非常に重要なのは、クラスと関数のAndroidManifestがclasses.dexファイルには存在しない点でした。アプリが使用するすべてのアクティビティやサービスは、事前にManifestで宣言しておく必要があります。存在しないクラスを宣言しても意味がありません。実行中のある時点で別なコードが動的にロードされている、というのが論理的な結論です。
アプリを実行すると、偽装しようとしている宅配便会社のメインのWebページのようなWeb表示が現れます。SMSを処理するためのデフォルトアプリになり、バッテリーの最適化を無視して、バックグラウンドで実行するよう求めてきます。同時にアプリのアイコンが消え、バックグラウンドで実行を開始します。
ユーザーインタラクションの点ではあまり動きがないので、コードを見てみることにしました。
アプリの実行フローはかなりシンプルです。libxxn.soライブラリをロードし、共有オブジェクトのJava_taii_YANGG_runという名前の関数、run()を実行します。この関数はnini.dllファイルを復号化し、復号化したファイルをロードします。このファイルは私のデバイスでは「/data/user/0/fang.tang.sha/app_cache」フォルダにあります。「adb logcat」コマンドの出力からわかるように、次にこのファイルを動的にロードします。
そしてファイルはロード直後に削除され、検索が困難になります。幸い非常に使いやすく、柔軟なオープンソース計測スイートであるFRIDAを使用すれば、削除前で実行フローを停止させ、ファイルを復旧することができます。
FRIDAはAndroidのリバースエンジニアリング(この用途に限定されない)には非常に有効なツールで、複数のアーキテクチャに使用することができます。rooted/un-rootedの両方のデバイスに使用することができます(試行錯誤が必要ではあるが)。私が使用したスクリプトは以下のgithubページにあり、プロジェクト文書のメインページはここにあります。
ドロップされたmycode.jarファイルには、libxxn.soライブラリ内のDexClassLoader関数によってロードされたclasses.dexファイルが含まれています。
ペイロードは2018年6月に出現したマルウェア、FakeSpyの亜種のように見えます。ほとんどは前回のものと同じ機能ですが、新しいオプションも提供しています。
マルウェアはデフォルトSMSアプリケーションになることを求めてくるので、このアプリがSMSメッセージを傍受できるというのは当然のことです。メッセージを受信するたびに、アプリがメッセージに関するすべての情報をログに記録し、CC(コマンド&コントロール)に送信します。
さらに、このマルウェアはSMSを作成して他のデバイスに送信することもできます。事実この方法でマルウェアが拡散されます。感染すると、モバイルデバイスがCCと通信を開始して電話番号のリストを送信し、攻撃者がコントロールしているドメインへのリンクが記載されたSMSによってさらなる感染を試みます。
スクリーンショット21はFRIDAでandroid class SMSmanagerを測定し、対応するsendTextMessage()を変更して、実際に悪意のあるメッセージを送信する代わりに、ログだけを残すようにした結果、生成されたものです。
このマルウェアはデバイス上にインストールされた全アプリケーションのリストや、IMEIと電話番号などの情報も取得し、JSONファイルとしてCCに転送することもできます。これにより、攻撃者はデバイス状態の全貌を把握することができるのです。
最後に、マルウェアは完全なクラッシュレポートをサーバーに送信することもできます。
このサンプルにはおかしな点があるため、実際に開発途中ではないかと思えます。
CCは「URL」という名前でsharedPreferencesに保存されています。この値は最初125.227.0.22に設定されていますが、実行中にChangeIP()関数を使用して変更することができます。この関数は1分が経過したかどうかを確認し、経過した場合は暗号化された文字列から新しいCC IPアドレスを収集します。文字列はTwitterアカウントを指しています。Twitterユーザー名には新しいIPが含まれており、シンプルな文字列操作で復号化することができます。
ただし、dexファイルにコードが存在している場合でも、分析結果によると、そのコードが実際に使用されることはないようです。アプリはずっと最初のCCと通信し続けます。HTTPトラフィックを変更したCCアドレスに転送しようとしましたが、応答はありませんでした。
マルウェアには「/sdcard/new.apk」という名前のファイル記述も複数回あります。これによってURLが与えられたファイルをダウンロードすることができます。その後、インストールされていることを確認するために、デバイスに「ni.vb.bi」という名前のアプリが含まれているかどうかをチェックします。ただし、実行中にファイルをダウンロードする関数が呼び出されることはありません。
1つのクラスにmain()とSystem.out.println()関数が含まれています。いずれもandroid APKには不要なものですが、Javaファイルでは非常に一般的なものなので、テスト目的で実行したのか、他のソースからコピー&ペーストしてきたのかもしれません。
このマルウェアはDevice Admin権利も要求し、DeviceAdminReceiverクラスを含みますが、使用のための許可は求めてこないので、まったく無意味です。
最後に、分析中ほぼ毎日、証明書が更新されたサンプルを収集することができました。これは攻撃側でインフラストラクチャの保守を行っている人がいることを示しています。
分析結果をまとめると、このような悪意のあるアクティビティに関わっているアクターは、日本の宅配便会社のオリジナルドメイン名を偽装した膨大な数のドメインを所有しています。つまり、このキャンペーンに多大な時間とコストをかけていますが、どうやって多額の利益を得ようかと考えているところのようです。アクターの電子メールに登録されているドメインの多くはアクティブではありませんが、今後も使用されないとは限りません。Webサイト上のスクリプト、コメント、使用されていないリンクを見ると、アクターがまだキャンペーンを改善中で、様々な方法で目標達成を目指していることがうかがえます。
残念ながら、携帯電話番号を収集する理由は不明ですが、別な悪意のあるキャンペーンにこの情報を使用する、または別なアクターに販売するといった目的が予想されます。
このマルウェアとキャンペーンはまだ開発の初期段階のようです。マルウェア自体は既存のコードベースに基づいていますが、各種機能を追加することで改善を試みているようです。現時点では追加機能のすべてが使用されているわけではありませんが、今後長期的にどうなるのかはわかりません。
フォーティネットのクライアントはこうした攻撃から保護されています。
ドロッパー:
24072be590bec0e1002aa8d6ef7270a3114e8fe89996837a8bc8f6a185d9690e 92cd2e43bf85703f92a493668be3d777c3d3cfab3f674b62bd334ddc082ac50d 01caceb86d3e2a383eeab4af98c55a2ec7b82ae0972594866b13fc0c62c93d74
ペイロード:
b7f4850b243649cdba97fd3bb309aa76fe170af80fa9c6ee5edd623dac2ce4e2 00ce9ffe9cca59df86125747c3a2e548245bf1b0607bc8f080fd3c501d9fc3f0
C2:
sagawa-ba[.]com
sagawa-wow[.]com
sagawa-iso[.]com
その他の344のドメインは弊社のWeb Filterサービスによってフィルタリングされます。
-=FortiGuard Lion Team=-
最新の脅威に関する詳細については、四半期ごとの脅威レポートの最新版をご覧ください。
FortiGuard Labsでは、脅威インテリジェンス情報(英文)を毎週お届けしていますので、ぜひご購読ください。