fbpx

「8220 Gang」による新たな攻撃が展開 #aqua #セキュリティ #CVE202226134

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

New call-to-action

本ブログは「Aqua Security」社の技術ブログで2022年7月7日に公開された「 8220 Gang Deploys a New Campaign with Upgraded Techniques 」の日本語翻訳です。

「8220 Gang」による新たな攻撃が展開


最近、新たに発見された Confluence の重大な脆弱性(CVE-2022-26134)を悪用することで知られている、「8220 Gang」グループによるキャンペーンが、Aqua のハニーポットの 1 つを標的としました。このキャンペーンは、時間をかけて進化し、コンテナを意図的にターゲットにしています。攻撃者はいくつかの新しい攻撃手法を用いてスクリプトを一新しています。これにより、侵害されたホストを攻撃するための新しい機能を追加し、さらに別のホストに攻撃を広げました。このブログでは、この攻撃を分解し、そのテクニックを検証し、実行時の検知と防御ツールを使用して分析します。

ここで取り上げるのは、以下の通りです。

  • 初期アクセス
  • 実行と永続化の技術
  • 防御回避策
  • 探索技術
  • 横展開技術
  • C&C 技術
  • 影響増幅技術
  • マルウェア実行
  • 攻撃検知


図1:Jira?Confluence 攻撃フロー(8220 Gang)

初期アクセス

前述の攻撃では、攻撃者は設定ミスのある Docker デーモンを悪用して、alpine バニライメージと悪意のあるコマンドを組み合わせて実行し、攻撃をしかけました。このコマンドは、シェルスクリプト jira?confluence を介してリモートサーバからダウンロードする複数のコマンドで構成されています。このコマンド&コントロール(C2)サーバは、攻撃者が攻撃全体を通じて使用していたものです。

このシェルスクリプトの名前は、6月に発見された Confluence サーバ上でリモートコード実行が可能な新しい脆弱性を彷彿とさせるものであり、興味深いものです。この脆弱性は、CVE-2022-26134 として National Vulnerability Database(NVD)に追加されました。Confluence サーバとデータセンターの複数のバージョンに影響し、未認証の攻撃者が任意のコードを実行し、脆弱なバージョンを悪用できます。

調査中、Confluence の脆弱性を悪用した攻撃と、Aqua のハニーポットに対して捕捉された攻撃との間に、コードとアーティファクトの両方で(表示名は別として)類似性があることを発見しました。コード、バイナリ、および C2 インフラストラクチャの機能は、「8220 Gang」に最もよく関連するものです。

Aqua のハニーポットで実行されたコンテナコマンドは、ターゲットホスト上の関連アプリケーションが C2 サーバからメインペイロードをダウンロードできなかった場合のフォールバックとして、ダウンロード関数を実体化するスニペットを含んでおり、非常に興味深いものです。


図2:コマンドによるコンテナイメージの実行

上のスクリーンショットにあるように、攻撃者は alpine イメージからコマンドを実行しています。彼らは、chroot /mnt というコマンドを使って、ルートディレクトリを /mnt ディレクトリに変更し、curl、wget、lwp-download のどれかを使用して、ファイルをダウンロードしようとしています。lwp-download はあまり知られていませんが、ウェブから大きなファイルをダウンロードするコマンドです。ダウンロード失敗に備えて、上記コマンドでは /tmp/jira に一時ディレクトリを作成し、base64 でエンコードされたスニペットを書き込み、それをデコードして実行します。


図3:base64をデコード

上のスクリーンショットは、このコマンドに登場するスニペットをデコードしたものです。ご覧の通り、攻撃者は /var/tmp/.dat に一時ファイルを削除し、curl や wget の置き換え、すなわちウェブからのファイルダウンロードを目的とした関数を挿入しています。以下、/var/tmp/.dat にあるコードをご覧ください。


図4:download関数(jira?confluence スクリプトより)

最後に、このスニペットは、curl、wget、lwp-download が失敗した場合のフォールバックとして機能するダウンロード関数を実体化したものであることがわかります。

実行と永続化の技術

この攻撃における主なペイロードは、jira?confluence シェルスクリプトであり、この攻撃ではコンテナ内で実行されます。攻撃者は、悪意のあるシェルスクリプトの最初の実行を容易にするため、cron ジョブを使用してスケジュールジョブを作成します。このスクリプトにはフォールバックの機能もあり、攻撃者はこれを cron-job のバックアップとして使用し、侵害されたマシン上での悪質なコードの実行を保証します。

最終的に攻撃者は、C2 サーバからメインペイロードをダウンロードして実行することを目的とした、複数の cron ジョブを様々な場所に作成しようとしています。この攻撃者は、ランダム化機能を使用して起動時に自動的起動するようにして、マシン上でのシェルスクリプトの実行を保証しています。これにより、万が一攻撃が検知され、停止された場合でも、継続的に実行できます。


図5:makecron関数(jira?confluence スクリプトより)

下のスクリーンショットにあるように、攻撃者は、cron ジョブのバックアップとして、別の関数である cronbackup を使用しています。これは、ターゲットマシンへの足場を維持するという、攻撃者の目標から導き出された方法です。


図6:cronbackup関数(jira?confluence スクリプトより)

このフォールバック関数は、cron、crond、atd サービスの有効・無効をチェックします。cron か crond が有効の場合、この関数は何もせずに終了します。cron もしくは crond が無効で atd は有効の場合、cron 実行と同じ間隔でペイロードを実行するよう、atコマンドを使用してスケジュールします。cron、crond、atd のすべてが有効でない場合、4つのパスから1つをランダムで選択し、5分ごとにペイロードを実行する無限ループを設定します。

防御回避策

攻撃者は、Alibaba Cloud、Baidu Cloud、Google Cloud Platform(GCP)のセキュリティツールを停止させています。これは、検知を回避し、攻撃を成功させる確率を高めるために行われます。


図7: run関数(jira?confluence スクリプトより)

興味深いのは、judge と judge2 という関数で、ターゲットシステムでブロックされていないかどうかを確認しながらマルウェアを実行するようになっています。これらについては、後ほどマルウェア実行のセクションで触れます。


図8:judge 及び judge2関数(jira?confluence スクリプトより)

さらに、攻撃者は様々な防御回避技術も使用しています。その中には、uncomplicated firewall(UFW)プログラムを無効にしたり、C2 サーバとのインバウンドおよびアウトバウンドトラフィックを確保するための新しい iptables ルールを設定したりすることも含まれます。さらに、攻撃者は、setenforce 0 コマンドを使用して SELinux モードを permissive に変更し、あらゆるセキュリティポリシーをスキップできるようにします。SELinux は、Linux のセキュリティモジュールで、アクセス制御のセキュリティポリシーをサポートするための仕組みを提供します。


図9:防御回避策(jira?confluence スクリプトより)

さらに、攻撃者は /etc/ld.so.preload ファイルから属性を削除します。

  • ファイルを変更できるようにするオプションの設定
  • ファイルを開いて、追記モードでのみデータを書き込むことができるようにするオプションの設定

その後、攻撃者は /ect/ld.so.preload の内容も削除しています。おそらく、他のライブラリより先にロードされるように設定されているセキュリティコンポーネントをブロックするためでしょう。

侵害されたマシンにシェルスクリプトをダウンロードした後、それは /tmp ディレクトリに保存されます。これは、おそらく、tmp ディレクトリとメモリに書き込まれたファイルを対象としないエージェントレスソリューションによる検出を避けるために行われます。攻撃者は、任意のユーザが読み取り、書き込み、および実行権限を持つように、ディレクトリのアクセス許可を変更します。

まず、ドメイン名('jira[.]letmaker[.]top')に隠れている C2 サーバに ping を送信しようとします。ドメイン名がブロックされた場合、攻撃者は IP アドレスを直接使用することになります。次に、クリプトマイニングプールの dns 解決を試み、それがブロックされた場合は、コマンドオプションを事前に付与します。


図10:C2サーバ及びマイニングプールへの通信確認(jira?confluence スクリプトより)

最後に、攻撃者はシステム内の疑わしい活動を隠すために、ログファイルも削除します。

  • cron ログ
  • すべてのログインとログアウトの履歴を含む Wtmp ファイル
  • 認証・認可権限に関連する情報を含む、安全なログファイル
  • /var/spool/mail/root:危険にさらされたマシンへの攻撃中に実行され、その出力はこのパスに書き込んだタスクからのメッセージが含まれています。


図11:ログの削除(jira?confluence スクリプトより)

探索技術

このシナリオでは、攻撃者はローカルネットワーク内の更なるターゲットを見つけるために複数のスキャナーを実行します。ssh サービスへのブルートフォースや他のホストへ侵入するために、現在のターゲットから ssh キーを収集します。

以下のスクリーンショットでは、スキャン機能の一例として、攻撃者がローカル環境の ssh サービスに対してブルートフォースを行うため、masscan、spirit、px という3つのコンポーネントをダウンロードしている様子を見ることができます。強力なスキャナーである masscan を使用して、攻撃者はポート22でオープンな ssh サービスを起動するために10.0.0.0/8、172.16.0.12、192.168.0.0/16をスキャンします。

アスキーファイル px と pasx は、バイナリ spirit と spirit-pro の設定ファイルとして機能しています。ssh ブルートフォースについては、マルウェアのセクションで後ほど検証します。


図12: Scan関数(jira?confluence スクリプトより)

さらに、攻撃者は、uname -m コマンドを使用して、C2 内のバイナリをターゲットプロセッサのアーキテクチャにマッチングさせています。

横展開技術

攻撃者は攻撃を伝播させるため、追加のホストに対して攻撃を開始し、それらを悪用します。攻撃者は、先にダウンロードしたコンポーネントを利用し、悪意のあるコードを感染したマシンの内部環境を通じて拡散する手助けをします。

攻撃者は、2つの方法を使って攻撃を広めようとします。1つ目は、ssh のオープンポートを介して脆弱なホストを発見した後、これらのホストに対して ssh ブルートフォースを開始する方法です。このとき、攻撃者は悪意のあるシェルスクリプトを実行し、攻撃の拡散を継続します。

2番目の方法では、感染したマシンとリモートホストの間で確立された、過去の接続を悪用します。このデータは、ホスト上のさまざまなファイルに含まれていることがあります。たとえば、以前の ssh 接続のknown_hostsファイルなどです。ssh接続は両方のマシンに知られているキーを使用して確立されますが、known_hostsファイルは、接続が有効であることを識別するために使用されます。攻撃者は ssh 接続を確立するために、必要な侵害されたホストに保存された詳細、すなわちリモートホストの詳細とマシン間のペアリングのための ssh 鍵を使用します。

攻撃者は、ssh鍵、ホスト、ユーザの全ての組み合わせを生成するループを作成します。 以下の設定が正しい場合、攻撃者はリモートホストへの接続を構築します。

  • 鍵リストに対して読み取り権限を与え、他のすべての権限を削除します。
  • ホスト鍵のチェック方法(KeyHostKeyChecking)の設定を変更し、鍵が既知として定義されていない場合でも、クライアントホストの鍵を既知のホストのリストへ追加可能にします。
  • BatchMode の設定を変更し、リモートホストにログインして、パスワードなしでコマンドを実行できるようにします。

最後に、攻撃者は悪意のあるシェルスクリプトをリモートホスト上で実行し、攻撃を拡大させます。


図13:localgo関数(jira?confluence スクリプトより)

C&C 技術

また、攻撃者は、侵害されたマシンの制御を拡張するために、自身の C2 との通信チャネルを設定できます。攻撃者は、C2 サーバへの接続を利用してリバースシェルを開始し、感染したマシンにリモートアクセス可能にできます。

さらに攻撃者は、IRC サーバ(51[.]255[.]171[.]23)との接続を確認することで、マシン上で Tsunami マルウェアが現在実行されているかどうかを判断します。この接続がない場合、Tsunami マルウェアがダウンロードされ、実行されます。IP アドレス51[.]255[.]171[.]23は悪意のあるホストとしてマークされており、最新の Confluence CVE-2022-26134 を悪用するキャンペーンで確認されています。Tsunami マルウェアがどのように動作するかは、このブログの後半で見ていくことにします。


図14:IRCプロトコル利用可否の確認(jira?confluence スクリプトより)

影響増幅技術

攻撃者が攻撃を通じて使用してきたすべてのテクニックにより、マシンの CPU を使用してクリプトマイニングを実行するという最終目標に到達できました。

攻撃者は、sysctl の設定を変更し、OS がデフォルトよりも大きなメモリページをサポートする機能である HugePages を有効にします。この手法により、ハッシュレート(採掘速度)を 20~30% 加速させることができます。


図15:システムカーネルの属性を変更する(jira?confluence スクリプトより)

マルウェア実行

上記で確認した技術により、攻撃者は攻撃するための基盤を構築できました。このセクションでは、バイナリやファイル、および攻撃におけるそれらの役割について検証します。アーティファクトは最初に、関数 judge() と judge2() をダウンロードします。攻撃者は、マシンのアーキテクチャに応じてアーティファクトのダウンロードを調整し、それが適切に実行されることを確認します。

まず、攻撃者は dbused(md5=eb2f5e1b8f818cf6a7dafe78aea62c93 、 md5=780965bad574e4e7f04433431d0d8f63) という名前の、パックされた(upx)マルウェアをダウンロードします。このマルウェアは、クリプトマイナーとして機能し、「8220 Gang」に関連しています。

次に攻撃者は、Tsunami マルウェアとして知られる bashirc ファイル(md5: 63a86932a5bad5da32ebd1689aa814b3 、 md5: 0ba9e6dcfc7451e386704b2846b7e440) をダウンロードします。これは、感染マシンへ のリモートアクセスを可能にする Linux バックドアとして使用されます。Tsunami マルウェアは、インターネットリレーチャット(IRC)プロトコルを使用して、標的のシステムに対する分散型サービス拒否攻撃(DDoS)のクライアントとして制御するため、IRC ボットとみなされます。

関連するマシンを悪用し同様に感染させるために、攻撃者はスキャン機能を起動し、リモートサーバから以下のツールをダウンロードします。

  • Spirit バイナリファイル(md5:cba8efad5eda067ef9d10d372a9a9cab and md5: 9a934b00a07847c66b9ddf7268b07dd3)
  • px テキストファイル
  • Masscan ないなりファイル(md5: eefc0ce93d254982fbbcd26460f3d10d)

攻撃者は、感染したマシンと同じネットワーク上にある、より脆弱なマシンを探しています。Masscan ツールで内部ネットワークをスキャンすることで、開いている ssh ポート(22)を検索するのです。関連するホストのリストを持って、upx ファイルである Spirit バイナリは、ssh スキャナツールとして機能し、ユーザ名とパスワードの1万以上のレコードを含む px テキストファイルを使用します。そして、同じネットワーク内で発見された脆弱なホストに対してブルートフォース攻撃を開始し、攻撃を拡散してそれらにも感染させます。

また、攻撃者は、感染したマシンから過去に実行された接続から、既知のペアホスト鍵を使用して、リモートホストへの攻撃を広めようとします。接続が確立された場合、攻撃者は悪意のあるシェルスクリプトを実行し、それらのマシンにも感染させます。

この数日間、私たちは、攻撃者がこのスクリプトに加えたいくつかの変更について調べました。彼らは、悪意のある活動を隠して攻撃を成功させることができるように、より多くの機能を追加しました。

感染したマシンで攻撃を開始する jira?confluence シェルスクリプトは、以下の新しいコンポーネントで更新されていました。

  • ユーザとパスワードのファイル - 攻撃者は px ファイルを pasx (md5=3cd845610e49e11575b5c18596b38389) ファイルで更新しています。
  • ssh スキャナー - 攻撃者は spirit を使用している ssh スキャナーツールを spirit-pro (md5=389437dc4db73256913b8d89fab5e7bc および md5=7d72ccaf59619d0011ca02f97ecb1170) に更新しています。
  • ssh ブルートフォースツール - 攻撃者は、ssh ブルートフォース攻撃に使用される hxx(md5=f0551696774f66ad3485445d9e3f7214) という新しいツールを追加し、「8220 Gang」グループとの関連が判明しています。

攻撃検知

このキャンペーンの背景には、単純なストーリーがあります。新しい重大なゼロデイ脆弱性が検出されると、悪意のある攻撃者はできるだけ早くそれを悪用しようと急ぎ、本番環境のワークロードは直ちに危険にさらされることになります。脆弱性および悪用される可能性の有無を評価するために、これら脆弱性を1つづつ確認する必要があります。しかし、攻撃者はツールを微調整し、新しいエクスプロイトを巨大なボットネットに追加するだけでいいのです。そのため、多くの人はこの競争に負ける可能性があります。

Aqua の Cloud Native Detection and Response(CNDR)のようなランタイム検出・応答ツールは、悪意のある、あるいは疑わしい動作をランタイムで検出するように構築されています。

実行中のワークロードの1つが Confluence の脆弱性を持っている場合、CNDR は以下のような検出結果を表示させることができます。


図16: CNDRダッシュボード

まず、ダッシュボードから見てみましょう。この1時間の間に、私たちの環境でさまざまなインシデントが検出されました。インシデント画面に進むと、これら9つの検出が表示されます。


図17:CNDR インシデント

これらの検出を検査すると、先ほど説明した攻撃と一致していることがわかります。


図18:CNDR検出例

攻撃のキルチェーンは、簡単に再構築可能です。単なるインシデント対応では難しい作業ですが、CNDR では攻撃を詳細に確認できます。


図19: 攻撃のキルチェーン

MITRE ATT&CK フレームワークにマッピング

ここでは、攻撃の各要素を MITRE ATT&CK フレームワークの対応する技術にマッピングしています。

Mitre atta&ck framework

まとめ


この攻撃は、攻撃者の継続的な進化を強調するもので、セキュリティツールを回避するための新しい技術を追加し、追加のホストへの攻撃をうまく拡大し、影響を増幅しています。私たちが調査してきたシェルスクリプトは、わずか数日の間に、新しい機能とバイナリを獲得しています。このスクリプトの改良は、ローカルネットワークとリモートホストに攻撃をより効率的に拡散させるために行われたものです。

このような攻撃は、新しい機能やツールを伴い、その数と精巧さの両方が増加しています。このような攻撃から保護するために、以下のガイドラインに従うことをお勧めします。

  • 環境設定を適切に行い、不要なポートを公開しないようにする。
  • セキュリティに関するアナウンスメントに従い、システムを最新のリリースに更新する。
  • コンテナの活動を監視し、問題を迅速に緩和し、混乱を最小限に抑える。(これは、不審な活動が発生する可能性のあるランタイム環境にも適用されます)

今回のケースでは、ほとんどの組織が使用し、その環境での実行を許可しているバニライメージ alpine:latest を使用して攻撃が開始されました。Aqua の CNDR のようなランタイム保護ソリューションは、ランタイム中の未知の脅威や不審な動作を検出するように構築されています。さらに、Drift Prevention は、ランタイム中にリモートソースからダウンロードされた、元のコンテナイメージの一部ではないファイルの実行をブロックしていたでしょう。

Indicators of Compromise(IOCs)

Name

Type

Md5

dbuser (x86_64)

Binary

eb2f5e1b8f818cf6a7dafe78aea62c93

dbuser (i686)

Binary

780965bad574e4e7f04433431d0d8f63

bashirc (x86_64)

Binary

63a86932a5bad5da32ebd1689aa814b3

bashirc (i686)

Binary

0ba9e6dcfc7451e386704b2846b7e440

spirit (upx)

Binary

cba8efad5eda067ef9d10d372a9a9cab

spirit

Binary

9a934b00a07847c66b9ddf7268b07dd3

Spirit-pro (upx)

Binary

389437dc4db73256913b8d89fab5e7bc

Spirit-pro

Binary

7d72ccaf59619d0011ca02f97ecb1170

hxx

Binary

f0551696774f66ad3485445d9e3f7214

masscan

Binary

eefc0ce93d254982fbbcd26460f3d10d

px

Text file

26935a6763559c954cd247efcfa71a47

pasx

Text file

3cd845610e49e11575b5c18596b38389

jira?confluence

Shell script

ed325c84233a432e06a548c131a91a69

IPs and Domains

51[.]255[.]171[.]23

89[.]34[.]27[.]167

167[.]114[.]114[.]169

jira[.]letmaker[.]top

New call-to-action

New call-to-action

新規CTA