
公開されたDocker APIを標的とする脅威者が、複雑なボットネットの基礎を築く可能性のある、より危険な機能を備えた悪意のあるツールを更新した。
この活動は、サイバーセキュリティ企業のトレンドマイクロにより 6 月に初めて報告されました。トレンドマイクロの研究者は、クリプトマイナーを使用し、Tor ネットワークを利用して身元を隠すスクリプトや悪質なコードを分析しました。
アカマイの研究者は、マイナーを展開するのではなく、侵害された Docker API へのアクセスをブロックできるより複雑なペイロードを展開する新しいツールを発見しました。
感染チェーン
攻撃者は脆弱なホスト上で公開された Docker API(2375 番ポート)を探し、base64 エンコードされたシェルコマンドを含む修正された Alpine Linux イメージを使用してコンテナ作成リクエストを送信します。
コンテナはデコードされたシェルコマンドを実行し、curlと torをインストールし、バックグラウンドでTorデーモンを起動し、SOCKS5プロキシ経由でAmazonのcheckip.amazonaws.comサービスにアクセスして接続の確認を待つ。
Torがアクティブになると、コンテナはcurlを使用してTorの隠しサービスから第2段階のシェルスクリプト(docker-init.sh)をダウンロードして実行する。
docker-init.shスクリプトは、マウントされたホストファイルシステム上の/root/.ssh/authorized_keysに攻撃者が管理する公開鍵を追加することで、持続的なSSHアクセスを可能にする。
ホスト上にbase64エンコードされたcronジョブを書き込み、このcronジョブは1分ごとに実行され、利用可能なファイアウォールユーティリティ(iptables、nftables、ufwなど)を使用してポート2375への外部アクセスをブロックする。
さらに、スキャン、伝播、回避をサポートするために、masscan、zstd、libpcap、torsocksなどのツールをインストールします。
次に、このマルウェアはZstandardで圧縮されたGoバイナリ(system-linux-ARCH.zst)をTor経由でダウンロードし、/tmp/systemに解凍して実行権限を付与し、実行します。
Goバイナリはドロッパーとして機能し、埋め込まれたセカンドステージバイナリを抽出して実行し、ホストのutmpファイルを解析してログインユーザーを特定します。

ソースはこちら:アカマイ
ボットネット構築の動作
このバイナリは、公開されている他の Docker API をスキャンし、同じコンテナ作成方法で感染を試み、アクセス後に競合するコンテナを削除します。
この自己複製メカニズムは、通常、外部からの指示を必要とせずに自律的に新しいノードに感染するボットネットエージェントの中核的な特徴です。

ソースはこちら:アカマイ
アカマイは、デフォルトのルーター認証情報を使用して Telnet(ポート 23)を悪用し、Chrome のリモートデバッグインターフェース(ポート 9222)とやり取りするための非アクティブなロジックの存在を強調しています。
これは、クレデンシャルの窃盗、ブラウザのセッションハイジャック、リモートファイルのダウンロード、分散型サービス拒否(DDoS)攻撃など、将来的に拡大する可能性があることを示唆しています。
「この亜種は、複雑なボットネットの初期バージョンであると考えられる基礎的なメカニズムがいくつかあります。
アカマイの発見は、日和見的な Docker の悪用から、横方向への移動、永続性、そして(今のところ休眠状態である)クレデンシャルの盗難やブラウザのハイジャックといったオプションを備えたマルチベクトルの脅威への進化を示しています。
.ia_ad { background-color:#width: 95%; max-width: 800px; margin: 15px auto; border-radius: 8px; border:1px solid #d6ddee; display: flex; align-items: stretch; padding: 0; overflow: hidden; }:0; overflow: hidden; } .ia_lef { flex: 1; max-width: 200px; height: auto; display: flex; align-items: stretch; } .ia_lef a { display: flex; width: 100%; height: 100%; } .ia_lef a img { width: 100%; height: 100%; object-fit: cover; border-radius: 8px 0 0 8px; margin: 0; display: block; } .ia_rig { flex: 2; padding:display: flex; flex-direction: column; justify-content: center; } .ia_rig h2 { font-size: 17px !important; font-weight: 700; color:#line-height: 1.4; font-family:margin: 0 0 14px 0; } .ia_rig p { font-weight: bold; font-size: 14px; margin: 0 0 clamp(6px, 2vw, 14px) 0; } .ia_button { background-color:#border:1px solid #3b59aa; color: black; text-align: center; text-decoration: none; border-radius: 8px; display: inline-block; font-size: 16px; font-weight: bold; cursor: pointer; padding:width: fit-content; } .ia_button a { text-decoration: none; color: inherit; display: block; } @media (max-width: 600px) { .ia_ad { flex-direction: column; align-items: center; } .ia_lef { max-width: 100%; } .ia_lef a img { border-radius: 8px 8px 0 0; } .ia_rig { padding:15px;
width: 100%;
}
.ia_button {
width: 100%;
margin: 0px auto;
}
}




Comments