トレンドマイクロは11月6日、「百度(Baidu)」のソフトウェア開発キット「Moplus(Moplus SDK)」にバックドアが仕込まれていたとして、注意喚起を行った。

Moplus SDKには「Wormhole」と呼ばれる脆弱性が含まれていることが以前からわかっている。これに加えて、トレンドマイクロの調査ではMoplus SDK自体にバックドア機能が備わっていたという。問題は、Moplus SDKの「アクセス許可制御」と「アクセスの制限方法」にあるとのことで、バックドア機能によってユーザー権限なく第三者が以下の項目の行動を実行できる可能性がある。

  • フィッシングサイトへの誘導

  • 任意の連絡先の追加

  • 偽のショート・メッセージ・サービス(SMS)送信

  • リモートサーバへのローカルファイルのアップロード

  • アプリをAndroid端末にインストール

このバックドアは、1億人のAndroidユーザが影響を受ける可能性がある。また、「不正プログラム」に分類されるアプリが、Moplus SDKをすでに利用している状況にあるという。

同社は、Moplus SDK の不正なコードとAndroid端末に及ぼす危険についてさらに詳細に解説している。

Moplus SDKを利用して、端末にユーザに気付かれずに自身をインストールする不正プログラム

トレンドマイクロでは、異なる2つのアプリ「Baidu Map(com.baidu.BaiduMap, 8.7.0)」と「簡体字のアプリ(com.ufo.dcb.lingyi, 1.3)」を解析した。SDKのバージョンは違っていたが、コードはほぼ同じであった。

「com.ufo.dcb.lingyi」に組み込まれたMoplus SDK

「com.baidu.BaiduMap」 に組み込まれた Moplus SDK

Moplus SDKは、独立したプロセスで取り入れられており、「com.baidu.android.moplus.MoPlusService」と呼ばれる主要サービスが、端末の起動中を含め、さまざまなBroadcastReceiverによって開始する。

Moplus は独立したバックグラウンドで組み込まれるため、端末を起動する度に不正なプロセスが自動起動する

ユーザーがアプリを起動すると、Moplus SDKは自動的にローカルのHTTPサーバーバックグラウンドで設定する。HTTPサーバ設定には、簡易なオープンソースのHTTPサーバ「NanoHttpd」を利用する。Moplus SDKは、ソケットを通過するメッセージを監視し続けるため、NanoHttpd を組み込み、HTTPサーバを変更する。

NanoHttpd を組み込み HTTPサーバを変更する Moplus SDK

HTTPサーバが接続する TCPポートはいつも同じではなく、今回の調査時には、com.ufo.dcb.lingyi と接続したポート番号は6259で、com.baidu.BaiduMap に対しては、ポート番号40310が接続したことを確認した。

ローカルの HTTPサーバに接続する TCPポートはいつも同じではない

HTTPサーバは TCPポートを待機し続け、他の端末から送信されたメッセージを受信し解析する。新しい HTTP要求があれば、そのメッセージのヘッダと本文を受信して解析し、NanoHttpdドキュメントで指定された関数「server」を上書きして、自身のタスクを呼び出す。

ソケット接続から HTTP要求を監視

関数「server」を上書きし自身の不正タスクを呼び出す

これは典型的なコマンド&コントロール(C&C)攻撃モデルで、従来型のC&C攻撃と異なる点は、サーバーがユーザー側にあり、攻撃するクライアントはどこにでも存在し得ることだという。ファイルのダウンロードやアップロードなど、SDKに関連した不正な機能があるが、それぞれが1つのクラスファイルとして機能している。

Moplus SDK がサポートする不正な機能

不正コマンドと、対応するソースクラスのマップ

マップのアプリの場合、攻撃者は遠隔から位置情報や検索ボックス情報、パッケージ情報、その他の個人情報をユーザの端末から収集できる。遠隔からユーザの端末に連絡先を追加したり、ダウンロードされたファイルを検索したり、特定のファイルをアップロードしたりすることも可能で、こうした不正活動は HTTPリクエストを送信するだけで、どこからでも簡単に実行できる。

バッチ処理で任意の連絡先を追加している例

また、「sendintent」と呼ばれる特別なコマンドを利用して、端末上にローカルのインテントを送信できる。そのため、ユーザの同意を得ぬまま、遠隔から電話をかけたり、偽のメッセージを送ったり、任意のアプリをインストールすることが可能となる。

「sendintent」と呼ばれるコマンドを利用することによって、攻撃者はユーザ端末上で不正な制御を実行できる

また、SDKはAPKファイルをユーザに気付かれることなくインストールし、ルート権限のある端末を識別する。

SDK はアプリをユーザに気付かれずにインストールする

ルート権限を持つユーザ識別し、さらに強力な攻撃を実行する

トレンドマイクロでは、最新のAndroid6.0を搭載したNexus6上でテスト。Baidu Mapを起動すると、不正なサービス「bdservice_v1」が常時バックグラウンドで動作することが確認できた。

不正なサービス「bdservice_v1」がバックグラウンドで常時動作している

携帯端末に連絡先が追加されていく様子

携帯端末に連絡先が追加されていく様子

携帯端末に連絡先が追加されていく様子

Moplus SDKによって設定されたローカル HTTPサーバーでは識別認証が行われないため、アプリ開発者のみならず、誰でも攻撃を開始することが可能になる。コマンドひとつで、攻撃者あるいはサイバー犯罪者は、感染した端末を遠隔から制御できる。

ポートステータスがオープンであると示されたAndroid端末はすべて遠隔で制御可能でるため、同じ3G、4Gネットワーク上にある端末だけでなく、同じLAN上にあるすべての端末が攻撃される可能性があることに注意する必要だという。

なお、日本法人のWebサイトによると、SimejiについてはMoplusのSDKは利用していないとしている。