fbpx

脅威:コンテナ内で実行されるファイルレスマルウェア #aqua #コンテナ #セキュリティ #マルウェア #DTA #動的解析 #コンテナイメージ

この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。

本ブログは「Aqua Security」社の技術ブログで2020年12月2日に公開された「 Threat Alert: Fileless Malware Executing in Containers 」の日本語翻訳です。

脅威:コンテナ内で実行されるファイルレスマルウェア


Aqua のサイバーセキュリティ研究チーム Team Nautilus は、コンテナ内のメモリから直接マルウェアを実行する新しいタイプの攻撃を検出しました。これは一般的な防御や静的スキャンを回避します。このマルウェアは rootkit を使用して実行中のプロセスを隠蔽し、メモリからクリプトマイナーを実行することでリソースをハイジャックしています。これは、攻撃者がより多くのダメージを与えることができるバックドアを残すことを意味します。ファイルレスマルウェア攻撃を実行するように設計された4つのコンテナイメージは Docker Hub レジストリ内に存在していました。

業界のレポートによると、このタイプのマルウェア攻撃の件数は年々増加しているとのことなので、ファイルレス攻撃は特に注意が必要です。このタイプのマルウェア攻撃は、ファイルベースの攻撃と比較して、マシンへの感染に成功する確率が10倍高いとする報告もあります。今や攻撃者がこのような高度に洗練された、難読化された技術を使用しているため、セキュリティ担当者はそれに応じて対策のレベルを上げていかなければなりません。

ファイルレスマルウェア攻撃とは?

最近までコンテナでは2種類の攻撃を目の当たりにすることが多く、どちらもファイルベースの攻撃でした。1つ目のタイプは、悪意が明確なコンテナイメージで、従来の静的なセキュリティソリューションを使用して検出できます。このタイプは、通常はツールのシグネチャをもとにしてスキャンします。2つ目のタイプは、攻撃者の C2 サーバからマルウェアをダウンロードするように設定されたものです。 ENTRYPOINT から悪意のあるスクリプトを実行する、一見は無害なイメージです。このタイプの攻撃はより高度なもので、この形態のマルウェアを検出するためには、実行開始後にディスクへ書き込まれたファイルをスキャンできるような動的なスキャナーが必要です。分類については、Aqua の 2020 Cloud Native Threat Report で詳しく紹介しています。

しかし、ファイルレスマルウェア攻撃では、マルウェアはメモリにロードしてから実行されます。メモリから直接悪意のあるコードを実行することで、攻撃者は静的スキャンや一部の動的スキャンによる検出を回避します。メモリからファイルを読み取ることができないためです。実行中のシステムのプロセスを分析する、より洗練された動的スキャンだけが、これを検出できます。

検出方法

私たち Team Nautilus では、洗練された Aqua DTA(動的脅威分析)スキャンを使用して Docker Hub に存在するコンテナイメージをスキャンする場合があります。Aqua DTA は、安全なサンドボックス環境内でイメージをコンテナとして実行し、その動作を分析することでイメージに隠れた悪意のある要素を検出することを目的に構築されています。

この技術を使って、様々な悪意のあるイメージを含む2つの Docker Hub アカウント(「portaienr」と「lifengyi1323」)を検出しました。私たちの調査で、これらのアカウントが Team TNT にリンクされていることがわかりました。このグループによる攻撃は、以前にも確認しています。私たちは先日のブログで「portaienr」というアカウントについて報告しました。そのブログで記載した内容に加え、Aqua DTA によってファイルレスマルウェア攻撃を実行するために設計された4つのコンテナイメージを発見しました。私たちはこれらのコンテナイメージを徹底的に調査しました。

ENTRYPOINT

コンテナイメージ「lifengyi1323/traband」は 6 つのレイヤーで構築されていました。そのうち2つのレイヤーには busybox(様々な UNIX ユーティリティを提供)が含まれ、残りのレイヤーには Team TNT による悪意のあるバイナリとスクリプトが含まれています(後述します)。コンテナは、ディスク上にある init.sh ファイルの実行によって開始されます(MD5= 2a42cc706d451a64b5d2cbf80e5d61ec)。

シェルファイル「Init.sh」は、3つのファイルを実行する環境を準備するために設計された、短くてシンプルなファイルです。まず、スクリプトはいくつかのファイルの属性定義を変更します。これは「root/sbin(MD5= f42be0d5a0da02a4d6bfc95b62d1838e)」と「/root/traband(MD5= 37902136fe513879ee7fee9208cdb40a)」に実行権限を与えます。「sbin」と「traband」はパッケージ化されたファイルであり、ファイルやURLを解析して悪意のあるコンテンツを検出するオンラインサービス「VirusTotal」では検出が困難です。これらのファイル内の検出が困難なことから、この技術はアンチウィルススキャナに対して非常に有効であることを意味します。さらに深く分析した結果、「traband」は UPXezuri がパッケージ化されており、「sbin」は ezuri がパッケージ化されているようです。

攻撃者は、防御策に対する回避テクニックとしてパッケージを使用することがよくあります。コードや機能に影響を与えることなくマルウェアファイルを圧縮し、セキュリティスキャン時に無害なファイルに見せかけることができるためです。また、攻撃者(Team TNT)のためにバックドアを開くための第4のファイル「muser」も存在します。このスクリプトは、ホストの Cron ジョブを消去し、ホストにマウントされた Cron で「muser」ファイルを実行するように設定します。

ペイロードをメモリにロードし実行

上述したように、ファイル「sbin」と「traband」のいずれも、実行中にメモリ上でペイロードを復号して実行されます。

ファイル「traband」

はじめに「traband」が解凍され、復号されたバイナリペイロードがメモリに書き込まれて実行されます。次に「kthreadd」という名前のプロセスを実行しているメモリから システムコール execve()が表示されますが、これは実際には LD Preload を使用した rootkit であり、「kthreadd」に関連するすべてのプロセスを隠蔽するためのものです。

さらに、バイナリ elf もメモリ上で実行されます。これは Team TNT よく使用するもので、 Tsunami マルウェア(MD5= 48c056a1bf908a424d472f121ccaf44b)として VirusTotal によって分類されています。Tsunami マルウェアは、攻撃者が感染したホストにリモートからファイルをダウンロードしたり、シェルコマンドを実行することを可能にします。さらに、攻撃者は感染したホストから DoS 攻撃を仕掛けることもできます。最後に、Tsunami マルウェアは IRC プロトコルを介して、Team TNT の C2 サーバ(ircbd[.]anondns[.]net / irc[.]teamtnt[.]red)である 164[.]68[.]106[.]966697 に接続します。

ファイル「sbin」

ファイル「sbin」が実行されると、メモリにバイナリペイロードが書き込まれます。その後、解凍処理と「kthreadd」を argv として使用した別の システムコール execve() が表示されます。実行された両方のバイナリで同じ名前が使用されるため、こちらも rootkit によってプロセスが隠蔽されます。コードは base64 で暗号化されており、実行時に復号して実行されます。復号された base64 の出力はディスクに書き込まれ、tar ファイル「kube.tar.gz」としてアーカイブされます。これは解凍されると、「kube」ファイルとして保存されますが、実体は Tsunami マルウェア(MD5=df386df8c8a376686f788ceff1216f11)です。

他にもメモリから クリプトマイナー を実行するために別の システムコール execve() が呼び出されています。最終的に、マイニングプール(gulf[.]moneroocean[.]stream / 18[.]210[.]126[.]40)との接続を確認しました。

まとめ


コンテナにおける初期の攻撃は、シンプルにマイニングコマンドを実行したり、コンテナからホストへの乗っ取りを試みるものでした。今回、rootkit を使用することで痕跡を隠蔽し、こっそりとクリプトマイニングを実行し、攻撃者のバックドアを開けるというコンテナ内でのファイルレス攻撃が初めて確認されました。

これらの新しく大胆な攻撃は、より優れた、強力なソリューションを利用することの重要性を強く表しています。以下に推奨事項を記載しています。これらを実践することで、このような種類の攻撃に対抗する手助けとなるはずです。

  1. 使用しているコンテナイメージをすべてスキャンしましょう。それらのイメージの中身と用途をよく把握し、root ユーザや特権モードを避けるなど、最低限の権限で使用しましょう。Trivy(OSS)のような静的脆弱性スキャナーを使用しましょう。
  2. Tracee(OSS)を使用して、コンテナ内で実行されている疑わしいプロセスや異常なプロセスを検出しましょう。さらに Aqua DTA によって動的スキャンをすることで、デプロイ前にイメージ内のマルウェアを安全に発見できます。
  3. ログを調査し、主にユーザのアクションを中心に、異常なアクションを探しましょう。
  4. セキュリティ戦略を策定してポリシーを強化し、高度なクラウドセキュリティツールを使用してセキュリティ範囲を改善することを検討しましょう。

MITRE ATT&CK Framework

mitre table

New call-to-action

Indications of Compromise:

Container Image:
lifengyi1323/simple:latest
lifengyi1323/speedrun:latest
lifengyi1323/monkey:latest
lifengyi1323/bindoc:latest
lifengyi1323/kubeconfig:latest
lifengyi1323/traband:latest

Binaries:
The file ‘usr/bin/xmrig’ (MD5= 5888e17810aa1846c0c013804e181624) was detected in container image ‘lifengyi1323/simple’

The in-memory file (MD5= e01d8a1656e41ec3b7de722424286ce9) was detected in runtime memory while running ‘lifengyi1323/simple’

The file ‘root/sbin’ (MD5= f42be0d5a0da02a4d6bfc95b62d1838e) was detected in container image ‘lifengyi1323/bindoc’

The file ‘root/xmrig’ (MD5= 91a915ce774a9103c17e2786fb6d7424) was detected in container image ‘lifengyi1323/kubeconfig’

The in-memory file (MD5= d180c45a49e3d338c4cd7fb1781453d7) was detected in runtime memory while running ‘lifengyi1323/kubeconfig’

Domains / IP Addresses:
ircbd[.]anondns[.]net
irc[.]teamtnt[.]red
164[.]68[.]106[.]96

New call-to-action
新規CTA