Roaming Mantis パート4:Apple iOS向けの悪意ある構成プロファイル、アップデートされた悪意あるapkファイル(MoqHao/XLoader)の再拡散

Roaming Mantisが、新たな手法を取り入れた活動を見せています。

※2019年4月4日:IPアドレスの一部に欠損があったのを修正しました。

攻撃活動「Roaming Mantis」を最初に紹介してから約1年が経過した今年2月、当社では新たな活動を検知しました。この記事では、この攻撃者が利用するツールや手法に関するアップデート情報についてレポートします。

iOSデバイスを狙う悪意ある構成プロファイル

攻撃者はiOSデバイスを侵害する方法を模索し続けています。今回発見されたのは、iOSデバイスの利用者向けに作成された、新たなランディングページです。iPhoneからこのランディングページにアクセスすると、悪意あるiOS構成プロファイルのダウンロードを促すメッセージが現れます。

ダウンロードを促す通知と構成プロファイルのインストール画面

ダウンロードを促す通知と構成プロファイルのインストール画面

この構成プロファイルをインストールすると、フィッシングサイトが自動的にブラウザーで開き、デバイスのデータ(DEVICE_PRODUCT、DEVICE_VERSION、UDID、ICCID、IMEI、MEID)が攻撃者のサーバーへ送られます。

構成プロファイル内のXMLおよび証明書

構成プロファイル内のXMLおよび証明書

この証明書には、開発者のものと思われるメールアドレス「zeeyf79797@yahoo.co[.]jp」が含まれており、悪意ある活動に使われていた可能性があります。

私たちは調査用にテストアカウントを作成し、このアカウントのログイン情報をフィッシングサイトに入力しました。ログインIDとパスワードを受け取った攻撃者はただちに反応し、このアカウントに対して香港からログインを試みました。フィッシングサイトにログイン情報を入力した後は、2段階認証コードを盗もうとする別のページに誘導されました。

Apple IDと2段階認証情報を盗もうとするフィッシングページ

Apple IDと2段階認証情報を盗もうとするフィッシングページ

 

アップデートされたsagawa.apk「タイプA」(MoqHao/XLoader)の拡散

Androidに目を転じると、当社で「Trojan-Dropper.AndroidOS.Wroba.g」と検知する悪意あるapkファイルの拡散が、当社のテレメトリデータによって確認されています。

sagawa.apk「タイプA 」の拡散が2月26日より始まる

sagawa.apk「タイプA 」の拡散が2月26日より始まる

このapkファイルを解析したところ、悪意あるsagawa.apk「タイプA」の亜種であることが確認できました。タイプAのsagawa.apkは「MoqHao」(McAfee)またはXLoader(TrendMicro)の名でも知られ、SMSを通じて拡散されるマルウェアとして以前より日本で観測されています。

これに加え、攻撃者によるルーターのDNS設定の改竄も起きていること、以下2点にアップデートが加えられていることを確認しました。

  • Trojan-Dropperモジュール内の暗号化ペイロード用復号アルゴリズム
  • 実際の指令サーバーのアドレスを入手するためのアクセス先およびアカウント

Trojan-Dropperモジュール内の暗号化ペイロード用復号アルゴリズム

以前のバージョンと比較すると、このTrojan-Dropperの復号機能にはわずかな変化が加えられています。変更されているのは、以下の図で紫色にハイライトされた箇所です。

暗号化されたデータの先頭から4バイト無視するコードが追加されている

暗号化されたデータの先頭から4バイト無視するコードが追加されている

なぜこうした変更が加えられたのか。当社の過去の記事では、暗号化されたペイロードを抽出するためのPythonスクリプトを公開しています。攻撃者がこれに気づき、セキュリティ製品やリサーチャーによる検知を避けようとマイナーチェンジを加えたものと思われます。

この変更を受け、当社では以前ご紹介したPythonスクリプトを以下のとおりアップデートしました。

  • apk_typeA_payload_extractor_1.01.py
#!/usr/bin/env python

import sys
import zlib
import base64

data = open(sys.argv[1],”rb”).read()
dec_z = zlib.decompress(data[4:])            # open.skip(4);
dec_b = base64.b64decode(dec_z)

with open(sys.argv[1]+”.dec”,”wb”) as fp:
fp.write(dec_b)

指令サーバーアドレスの入手先と入手用アカウント

以前の検体では、実際の通信先となる指令サーバーのアドレスを入手するためにメールサービスを利用しており、検体中に「@outlook.com」と共に、3つのアカウント(haoxingfu11、haoxingfu22、haoxingfu33)が格納されていました。一方新しいバージョンでは、指令サーバーのアドレスを入手する手段として、メールサービスではなくTwitterが使われていました。

マルウェア内に見られる文字列「https://twitter.com/%s」

マルウェア内に見られる文字列「https://twitter.com/%s」

利用されているTwitterアカウントは3つあり、その情報は、以前の検体と同様、アカウントIDが「|」で区切られた形で検体内に格納されていました。

「|」で区切られた3つのアカウントID

「|」で区切られた3つのアカウントID

本当の通信先である指令サーバーを抽出するための復号アルゴリズムは、以前の検体とまったく同じで、マルウェアは抽出した指令サーバーアドレスにWebソケット経由でアクセスします。先に述べた3つのアカウントに加え、当社は新たに以下のアカウントを発見しました。

  • lucky88755
  • lucky98745
  • lucky876543
  • gyugyu87418490
  • luckyone1232
  • sadwqewqeqw

本当の指令サーバーのアドレスを漢字文字列から抽出するための復号アルゴリズムには、変化がありませんでした。したがって、以前の記事で紹介したスクリプトの復号処理は現在も有効です。アカウントはすべて、同一のIPを指します(ポート番号は異なる)。例として、アカウント「@luckyone1232」での遷移を時系列で示します。

日時(UTC) 暗号化されたデータ 復号された指令サーバーIP
February 25 2019 11:30 傘傠傘偠傈傠偠傠傐傸偘储傀傐僨傀僨僸傸傀 114.43.155[.]227:28855
February 26 2019 08:00 傀傸傸偠傠傠傠偘傘储偘傰傠僠僨傀僨僸傸傀 220.136.47[.]169:28855
March 02 2019 01:00 傀傸傸偠傠傠傠偘傘僘偘傰傈傐僨傀僨僸傸傀 220.136.49[.]137:28855
March 05 2019 06:00 傀傸傸偠傠傠傠偘傠僘偘傰僀傸僸僐傀傐 220.136.39[.]1:28855
March 07 2019 03:00 傘傠僸偠傠傈僐偘傰傈储偈傀傰傈僀傸僸僐傀傐 118.168.130[.]236:28855
March 09 2019 10:00 傠傠偈傀傰傸偠傸傰傐偘储傀僨僨傀僨僸傸傀 61.230.210[.]228:28855
March 13 2019 01:00 傘傸傐偠傸储储偘傰储傈偈傈傀僨傀僨僸傸傀 125.227.174[.]35:28855
March 21 2019 01:00 傘偘傰傠僠偈傀储傠偠傈僸僀傸僸僐傀傐 1.169.203[.]48:28855

また、新たなバックドアコマンド「getPhoneState」が追加されていることも確認しました。以下は、古い検体との比較を示したものです。変更があった部分は赤文字で記しています。

ルーターのDNS設定改竄、再び

2月下旬、当社は悪意あるDNSチェンジャー(DNS設定の改竄を行う不正プログラム)のURLクエリを検知しました。以下に例を示します。

悪意あるDNSチェンジャーのURLクエリ

悪意あるDNSチェンジャーのURLクエリ

ルーターの配下にあるデバイスが上記URLクエリを読み取った場合、以下の条件下でルーターのDNS設定が改竄される可能性があります。

  1. ルーターの管理パネルに対してローカルネットから認証なしでアクセス可能である
  2. ルーターの管理パネルに対してデバイスが管理者権限のセッションを保持した状態である
  3. ルーターの管理パネルのログイン用IDおよびパスワードが単純である(または既定のままである)※例)ID、パスワード共に「admin」

当社の観測によると、この悪意あるDNS IPを指すように改竄されたルーターは数百台に上ります。

上記コードは、ルーターのDNS設定を以下の不正なDNSサーバーのIPアドレスに書き換えます。

  • 171.244.33[.]114
  • 171.244.33[.]116

地域的拡大

Kaspersky Security Network(KSN)の統計情報によると、sagawa.apk(タイプA)の新種「Trojan-Dropper.AndroidOS.Wroba.g」は実環境で検知されています。以下の図は、2019年2月25日〜3月20日のデータを図示したものです。

KSN の統計情報

KSN の統計情報

検知が多かった国はロシア、日本、インド、バングラデシュ、カザフスタン、アゼルバイジャン、イラン、ベトナムです。この期間中、当社製品による検知数は6,800を超え、ユニーク数は950以上でした。このデータは攻撃の一部を反映するにすぎず、実際の規模はもっと大きいものと当社では考えています。

まとめ

2019年2月下旬以降、当社ではsagawa.apk(タイプA)の配信増加を観測しています。今回の動きで特徴的なのは、ルーターのDNS設定の改竄が今でも活発に利用される一方で、悪意ある構成プロファイルを利用したフィッシングという新しい攻撃手法が取り入れられている点です。悪意ある構成プロファイルは利用者にとって深刻な問題となり得るもので、警戒が必要です。以前に公開されたブログ記事では「プロファイルはデバイスが悪意あるプロキシまたはVPNを使用するように設定することが可能であり、このため攻撃者があらゆるものをモニタリングできるようになる」と指摘されています(リンク先はいずれも英語、翻訳はKaspersky Lab)。

Kaspersky Labは、以下の対策を推奨します。

  • ルーターの既定のIDとパスワードを変更し、必要なセキュリティパッチを適用する
  • Android利用者向け:公式のストア以外からapkファイルをダウンロードしない
  • iOS利用者向け:信頼できるリソース以外から構成プロファイルをインストールしない

Roaming Mantisに関しては、これまでに以下の記事を公開しています。併せてご覧ください。

カスペルスキー製品では、このAndroidマルウェアを以下の検知名で検知およびブロックします。

  • HEUR:Trojan-Banker.AndroidOS.Wroba
  • HEUR:Trojan-Dropper.AndroidOS.Wroba

最後に、Roaming Mantisの活動に関する調査にご協力いただいた@ninoseki氏および@papa_anniekey氏に感謝を申し上げます。

脅威存在痕跡(IoC)

悪意あるホスト:
114.43.155[.]227 (実際のC2)
220.136.47[.]169 (実際のC2)
220.136.49[.]137 (実際のC2)
220.136.39[.]1 (実際のC2)
118.168.130[.]236 (実際のC2)
171.244.33[.]114 (不正なDNS)
171.244.33[.]116 (不正なDNS)
61.230.153[.]211 (ランディングページ)
154.223.62[.]130 (ランディングページ)
ffakecg[.]com (ランディングページ)
sagawa-mwm[.]com (ランディングページ)
sagawa-mqd[.]com (ランディングページ)
sagawa-bz[.]com (ランディングページ)
nttdocomo-qae[.]com (ランディングページ)
nttdocomo-qat[.]com (ランディングページ)

疑わしいTwitterアカウント:
luckyone1232
sadwqewqeqw
gyugyu87418490
lucky88755
lucky98745
lucky876543

sagawa.apk タイプA とそのファイル:
417a6af1172042986f602cc0e2e681dc (apkファイル)
651b6888b3f419fc1aac535921535324 (apkファイル)
0a4e8d3fe5ee383ba3a22d0f00670ce3 (apkファイル)
870697ddb36a8f205478c2338d7e6bc7 (apkファイル)
7e247800b95c643a3c9d4a320b12726b(\classes.dex)
7cfb9ed812e0250bfcb4022c567771ec (\classes.dex)
8358d2a39d412edbd1cf662e0d8a9f19 (\classes.dex)
7cfb9ed812e0250bfcb4022c567771ec (\classes.dex)
af2890a472b85d473faee501337564a9 (復号済みdexファイル)
c8d7475a27fb7d669ec3787fe3e9c031 (復号済みdexファイル)
d0848d71a14e0f07c6e64bf84c30ee39 (復号済みdexファイル)
e2b557721902bc97382d268f1785e085 (復号済みdexファイル)

ヒント