「8220 Gang」による新たな攻撃が展開 #aqua #セキュリティ #CVE202226134
この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
本ブログは「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 技術
- 影響増幅技術
- マルウェア実行
- 攻撃検知
初期アクセス
前述の攻撃では、攻撃者は設定ミスのある Docker デーモンを悪用して、alpine バニライメージと悪意のあるコマンドを組み合わせて実行し、攻撃をしかけました。このコマンドは、シェルスクリプト jira?confluence を介してリモートサーバからダウンロードする複数のコマンドで構成されています。このコマンド&コントロール(C2)サーバは、攻撃者が攻撃全体を通じて使用していたものです。
このシェルスクリプトの名前は、6月に発見された Confluence サーバ上でリモートコード実行が可能な新しい脆弱性を彷彿とさせるものであり、興味深いものです。この脆弱性は、CVE-2022-26134 として National Vulnerability Database(NVD)に追加されました。Confluence サーバとデータセンターの複数のバージョンに影響し、未認証の攻撃者が任意のコードを実行し、脆弱なバージョンを悪用できます。
調査中、Confluence の脆弱性を悪用した攻撃と、Aqua のハニーポットに対して捕捉された攻撃との間に、コードとアーティファクトの両方で(表示名は別として)類似性があることを発見しました。コード、バイナリ、および C2 インフラストラクチャの機能は、「8220 Gang」に最もよく関連するものです。
Aqua のハニーポットで実行されたコンテナコマンドは、ターゲットホスト上の関連アプリケーションが C2 サーバからメインペイロードをダウンロードできなかった場合のフォールバックとして、ダウンロード関数を実体化するスニペットを含んでおり、非常に興味深いものです。
上のスクリーンショットにあるように、攻撃者は alpine イメージからコマンドを実行しています。彼らは、chroot /mnt というコマンドを使って、ルートディレクトリを /mnt ディレクトリに変更し、curl、wget、lwp-download のどれかを使用して、ファイルをダウンロードしようとしています。lwp-download はあまり知られていませんが、ウェブから大きなファイルをダウンロードするコマンドです。ダウンロード失敗に備えて、上記コマンドでは /tmp/jira に一時ディレクトリを作成し、base64 でエンコードされたスニペットを書き込み、それをデコードして実行します。
上のスクリーンショットは、このコマンドに登場するスニペットをデコードしたものです。ご覧の通り、攻撃者は /var/tmp/.dat に一時ファイルを削除し、curl や wget の置き換え、すなわちウェブからのファイルダウンロードを目的とした関数を挿入しています。以下、/var/tmp/.dat にあるコードをご覧ください。
最後に、このスニペットは、curl、wget、lwp-download が失敗した場合のフォールバックとして機能するダウンロード関数を実体化したものであることがわかります。
実行と永続化の技術
この攻撃における主なペイロードは、jira?confluence シェルスクリプトであり、この攻撃ではコンテナ内で実行されます。攻撃者は、悪意のあるシェルスクリプトの最初の実行を容易にするため、cron ジョブを使用してスケジュールジョブを作成します。このスクリプトにはフォールバックの機能もあり、攻撃者はこれを cron-job のバックアップとして使用し、侵害されたマシン上での悪質なコードの実行を保証します。
最終的に攻撃者は、C2 サーバからメインペイロードをダウンロードして実行することを目的とした、複数の cron ジョブを様々な場所に作成しようとしています。この攻撃者は、ランダム化機能を使用して起動時に自動的起動するようにして、マシン上でのシェルスクリプトの実行を保証しています。これにより、万が一攻撃が検知され、停止された場合でも、継続的に実行できます。
下のスクリーンショットにあるように、攻撃者は、cron ジョブのバックアップとして、別の関数である cronbackup を使用しています。これは、ターゲットマシンへの足場を維持するという、攻撃者の目標から導き出された方法です。
このフォールバック関数は、cron、crond、atd サービスの有効・無効をチェックします。cron か crond が有効の場合、この関数は何もせずに終了します。cron もしくは crond が無効で atd は有効の場合、cron 実行と同じ間隔でペイロードを実行するよう、atコマンドを使用してスケジュールします。cron、crond、atd のすべてが有効でない場合、4つのパスから1つをランダムで選択し、5分ごとにペイロードを実行する無限ループを設定します。
防御回避策
攻撃者は、Alibaba Cloud、Baidu Cloud、Google Cloud Platform(GCP)のセキュリティツールを停止させています。これは、検知を回避し、攻撃を成功させる確率を高めるために行われます。
興味深いのは、judge と judge2 という関数で、ターゲットシステムでブロックされていないかどうかを確認しながらマルウェアを実行するようになっています。これらについては、後ほどマルウェア実行のセクションで触れます。
さらに、攻撃者は様々な防御回避技術も使用しています。その中には、uncomplicated firewall(UFW)プログラムを無効にしたり、C2 サーバとのインバウンドおよびアウトバウンドトラフィックを確保するための新しい iptables ルールを設定したりすることも含まれます。さらに、攻撃者は、setenforce 0 コマンドを使用して SELinux モードを permissive に変更し、あらゆるセキュリティポリシーをスキップできるようにします。SELinux は、Linux のセキュリティモジュールで、アクセス制御のセキュリティポリシーをサポートするための仕組みを提供します。
さらに、攻撃者は /etc/ld.so.preload ファイルから属性を削除します。
- ファイルを変更できるようにするオプションの設定
- ファイルを開いて、追記モードでのみデータを書き込むことができるようにするオプションの設定
その後、攻撃者は /ect/ld.so.preload の内容も削除しています。おそらく、他のライブラリより先にロードされるように設定されているセキュリティコンポーネントをブロックするためでしょう。
侵害されたマシンにシェルスクリプトをダウンロードした後、それは /tmp ディレクトリに保存されます。これは、おそらく、tmp ディレクトリとメモリに書き込まれたファイルを対象としないエージェントレスソリューションによる検出を避けるために行われます。攻撃者は、任意のユーザが読み取り、書き込み、および実行権限を持つように、ディレクトリのアクセス許可を変更します。
まず、ドメイン名('jira[.]letmaker[.]top')に隠れている C2 サーバに ping を送信しようとします。ドメイン名がブロックされた場合、攻撃者は IP アドレスを直接使用することになります。次に、クリプトマイニングプールの dns 解決を試み、それがブロックされた場合は、コマンドオプションを事前に付与します。
最後に、攻撃者はシステム内の疑わしい活動を隠すために、ログファイルも削除します。
- cron ログ
- すべてのログインとログアウトの履歴を含む Wtmp ファイル
- 認証・認可権限に関連する情報を含む、安全なログファイル
- /var/spool/mail/root:危険にさらされたマシンへの攻撃中に実行され、その出力はこのパスに書き込んだタスクからのメッセージが含まれています。
探索技術
このシナリオでは、攻撃者はローカルネットワーク内の更なるターゲットを見つけるために複数のスキャナーを実行します。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 ブルートフォースについては、マルウェアのセクションで後ほど検証します。
さらに、攻撃者は、uname -m コマンドを使用して、C2 内のバイナリをターゲットプロセッサのアーキテクチャにマッチングさせています。
横展開技術
攻撃者は攻撃を伝播させるため、追加のホストに対して攻撃を開始し、それらを悪用します。攻撃者は、先にダウンロードしたコンポーネントを利用し、悪意のあるコードを感染したマシンの内部環境を通じて拡散する手助けをします。
攻撃者は、2つの方法を使って攻撃を広めようとします。1つ目は、ssh のオープンポートを介して脆弱なホストを発見した後、これらのホストに対して ssh ブルートフォースを開始する方法です。このとき、攻撃者は悪意のあるシェルスクリプトを実行し、攻撃の拡散を継続します。
2番目の方法では、感染したマシンとリモートホストの間で確立された、過去の接続を悪用します。このデータは、ホスト上のさまざまなファイルに含まれていることがあります。たとえば、以前の ssh 接続のknown_hostsファイルなどです。ssh接続は両方のマシンに知られているキーを使用して確立されますが、known_hostsファイルは、接続が有効であることを識別するために使用されます。攻撃者は ssh 接続を確立するために、必要な侵害されたホストに保存された詳細、すなわちリモートホストの詳細とマシン間のペアリングのための ssh 鍵を使用します。
攻撃者は、ssh鍵、ホスト、ユーザの全ての組み合わせを生成するループを作成します。 以下の設定が正しい場合、攻撃者はリモートホストへの接続を構築します。
- 鍵リストに対して読み取り権限を与え、他のすべての権限を削除します。
- ホスト鍵のチェック方法(KeyHostKeyChecking)の設定を変更し、鍵が既知として定義されていない場合でも、クライアントホストの鍵を既知のホストのリストへ追加可能にします。
- BatchMode の設定を変更し、リモートホストにログインして、パスワードなしでコマンドを実行できるようにします。
最後に、攻撃者は悪意のあるシェルスクリプトをリモートホスト上で実行し、攻撃を拡大させます。
C&C 技術
また、攻撃者は、侵害されたマシンの制御を拡張するために、自身の C2 との通信チャネルを設定できます。攻撃者は、C2 サーバへの接続を利用してリバースシェルを開始し、感染したマシンにリモートアクセス可能にできます。
さらに攻撃者は、IRC サーバ(51[.]255[.]171[.]23)との接続を確認することで、マシン上で Tsunami マルウェアが現在実行されているかどうかを判断します。この接続がない場合、Tsunami マルウェアがダウンロードされ、実行されます。IP アドレス51[.]255[.]171[.]23は悪意のあるホストとしてマークされており、最新の Confluence CVE-2022-26134 を悪用するキャンペーンで確認されています。Tsunami マルウェアがどのように動作するかは、このブログの後半で見ていくことにします。
影響増幅技術
攻撃者が攻撃を通じて使用してきたすべてのテクニックにより、マシンの CPU を使用してクリプトマイニングを実行するという最終目標に到達できました。
攻撃者は、sysctl の設定を変更し、OS がデフォルトよりも大きなメモリページをサポートする機能である HugePages を有効にします。この手法により、ハッシュレート(採掘速度)を 20~30% 加速させることができます。
マルウェア実行
上記で確認した技術により、攻撃者は攻撃するための基盤を構築できました。このセクションでは、バイナリやファイル、および攻撃におけるそれらの役割について検証します。アーティファクトは最初に、関数 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 は以下のような検出結果を表示させることができます。
まず、ダッシュボードから見てみましょう。この1時間の間に、私たちの環境でさまざまなインシデントが検出されました。インシデント画面に進むと、これら9つの検出が表示されます。
これらの検出を検査すると、先ほど説明した攻撃と一致していることがわかります。
攻撃のキルチェーンは、簡単に再構築可能です。単なるインシデント対応では難しい作業ですが、CNDR では攻撃を詳細に確認できます。
MITRE ATT&CK フレームワークにマッピング
ここでは、攻撃の各要素を MITRE ATT&CK フレームワークの対応する技術にマッピングしています。
まとめ
この攻撃は、攻撃者の継続的な進化を強調するもので、セキュリティツールを回避するための新しい技術を追加し、追加のホストへの攻撃をうまく拡大し、影響を増幅しています。私たちが調査してきたシェルスクリプトは、わずか数日の間に、新しい機能とバイナリを獲得しています。このスクリプトの改良は、ローカルネットワークとリモートホストに攻撃をより効率的に拡散させるために行われたものです。
このような攻撃は、新しい機能やツールを伴い、その数と精巧さの両方が増加しています。このような攻撃から保護するために、以下のガイドラインに従うことをお勧めします。
- 環境設定を適切に行い、不要なポートを公開しないようにする。
- セキュリティに関するアナウンスメントに従い、システムを最新のリリースに更新する。
- コンテナの活動を監視し、問題を迅速に緩和し、混乱を最小限に抑える。(これは、不審な活動が発生する可能性のあるランタイム環境にも適用されます)
今回のケースでは、ほとんどの組織が使用し、その環境での実行を許可しているバニライメージ 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 |