Nagios XIサーバーが攻撃者のために仮想通貨のマイニングをしていないか確認を

This post is also available in: English (英語)

概要

2021年3月16日、Unit 42のリサーチャーは、攻撃者がNagios XIソフトウェアをターゲットとして、脆弱性CVE-2021-25296を悪用していることを確認しました。これは、Nagios XIバージョン5.7.5に影響を及ぼすリモート コマンド インジェクションの脆弱性であり、被害者のデバイスにクリプトジャッキング攻撃を仕掛けて、XMRig仮想通貨マイニングマルウェアを導入することが可能になります。本稿の執筆時点では、この攻撃はまだ継続しています。

Nagios XIは、普及しているソフトウェアであり、エンタープライズ サーバー ソリューションとネットワーク モニタリング ソリューションを提供します。悪用されているNagios XIの機能は、「設定ウィザード: Windows Management Instrumentation (WMI)」です。

XMRigは、オープンソース、クロスプラットフォームのコインマイナー(仮想通貨マイニングマルウェア)です。攻撃に成功すると、侵害されたデバイスにXMRig仮想通貨マイニングマルウェアが導入されます。

Nagios XIを最新バージョンにアップグレードすると、脆弱性が軽減されます。Nagios XIの最新バージョンを使用できないユーザーは、以下の脆弱性分析セクションに概要を示すファイル/usr/local/nagiosxi/html/includes/configwizards/windowswmi/windowswmi.inc.phpを更新することができます。

デバイスが侵害され、XMRigマイニングマルウェアが動作しているかどうかを調べるには、以下のいずれかを行います。

  • コマンド
    ps -ef | grep 'systemd-py-run.sh\|systemd-run.py\|systemd-udevd-run.sh\|systemd-udevd.sh\|systemd-udevd.sh\|workrun.sh\|systemd-dev'  を実行して、結果をチェックする。上記のスクリプトのプロセスが実行されている場合、デバイスが侵害されている可能性があります。
  • /usr/lib/devフォルダと/tmp/usr/libフォルダ内のファイルをチェックして、上記のスクリプトがあるかどうかを確認する。このスクリプトがある場合、デバイスが侵害されている可能性があります。

デバイスが侵害されていることが判明した場合、プロセスを強制終了し、スクリプトを削除するだけで、攻撃によって導入されたXMRigは消されます。

脅威防御WildFireURLフィルタリングのセキュリティサブスクリプションに加入しているパロアルトネットワークスの次世代ファイアウォールをご使用のお客様は、この攻撃から保護されています。

攻撃の概要

この攻撃は、悪意のあるサーバー118[.]107[.]43[.]174から取得した悪意のあるbashスクリプトを実行しようとします。確認されたペイロードの1つを、図1に示します。

悪意のあるbashスクリプトの実行後に確認されたペイロードを示す図
図1 実際の悪用

攻撃者によってドロップされるbashスクリプトは、そのスクリプトがホストされている同じサーバーからXMRigマイニングマルウェアをダウンロードし、バックグラウンドでXMRigマイニングマルウェアを実行するために、一連のスクリプトを展開します。攻撃が成功すると、デバイスはクリプトジャックされます。

CVE-2021-25296: Nagios XIの脆弱性分析

コマンドインジェクションの脆弱性を悪用して、攻撃者は、元のコマンドに予期されない文字や任意のコマンドを挿入し、挿入されたコマンドを実行することができます。たとえば、元のコマンドが以下の形式であるとします。

ping $target_ip

変数$target_ipがユーザーによって制御される場合、攻撃者は$target_ip変数を127[.]0[.]0[.]1; sleep 5に設定することができます。この結果、以下のコマンドが実行されます。

ping 127[.]0[.]0[.]1; sleep 5

sleepコマンドが、pingコマンドに加えて実行されます。

「設定ウィザード: Windows WMI」コンポーネントでは、設定のユーザー入力が検証されないため、Nagios XIバージョン5.7.5では、リモート コマンド インジェクションの脆弱性CVE-2021-25296が悪用されやすくなります。認証されたユーザーは、設定データにコマンドを追加して、そのデータがバックエンドで処理されるときに、コマンドを実行させることができます。

サーバーとネットワークのモニタリングソフトウェアとして、Nagios XIは、ユーザーがデバイス、サーバー、アプリケーション、サービスをセットアップするために、図2に示すインターフェイスを提供します。関連するウィザードを選択すると、ユーザーは、指定した設定でモニタリングの対象をセットアップできます。

Nagios XIの「設定ウィザード: Windows WMI」コンポーネントのスクリーンショットを示す画像
図2 設定ウィザード

脆弱性は、Windows WMIの設定ウィザードにあります。図3に示すように、このウィザードはWMIをセットアップするためにユーザーから入力をいくつか受け取ります。ユーザーが[Next(次へ)]をクリックした後に、図4に示すようにHTTP POST要求がバックエンドに送信されます。

設定ウィザード: Windows WMIワークフローのステップ1のスクリーンショットを示す画像
図3 設定ウィザード: Windows WMI.
Post要求の出力を示す画像
図4設定ウィザード: Windows WMI要求

要求のUniform Resource Identifier(ユニフォームリソース識別子 - URI)に従って、Webサーバーディレクトリ内のファイル/html/config/monitoringwizard.phpで要求の処理が実行されます。しかし、コードはSG11で暗号化されているため、読み取ることができません。回避策として、弊社は、要求のパラメータを分析し、ファイル/html/includes/configwizards/windowswmi/windowswmi.inc.php内のコードを見つけました。

ファイルwindowswmi.inc.phpで、(図5に示す)要求から抽出されたplugin_output_lenの値は、コマンドが実行される前に、(図6に示す)コマンドに直接追加されます。これにより、コマンドインジェクションの脆弱性が生じます。

Nagios XIのファイルwindowswmi.inc.phpの内容を示す画像。一番下の行には、plugin_output_lenのテキストが示されています。
図5 脆弱なコードの分析
Nagios XIのコードビューを示す画像。コールアウトボックスは、plugin_output_lenが既存のコマンドに直接追加されることを強調しています。
図6 脆弱なコードの分析

最新バージョンのNagios XIで、この脆弱性は図7に示すようにescapeshellarg()関数でユーザー入力を検証することにより修正されました。この関数は、$plugin_output_lenの値が元のコマンドに対する引数として確実に処理されるようにして、コマンドインジェクションの脆弱性を軽減します。

修正のコードビューを示す画像。ユーザー入力を検証するescapeshellarg()関数があることを示しています。
図7 正式な修正

悪意のあるスクリプトの分析

弊社がキャプチャしたトラフィックは、攻撃者が侵害された被害者のデバイスでrun.shという名前の悪意のあるスクリプトのダウンロードと実行を試みていることを示しています。

run.shスクリプトのコードビューを示す画像
図8 スクリプトrun.sh

スクリプトrun.shは以下の処理を実行します。

  1. 現在のユーザーの特権をチェックし、これに応じてワークスペースフォルダを作成する。
  2. サーバー118[.]107[.]43[.]174からアーカイブファイルxmrig.tar.gzをダウンロードし、ワークスペースフォルダに解凍する。
  3. 図9に示すコードで、XMRigのconfig.jsonファイルを更新する。
  4. 図10に示すロジックで、XMRigマイニング マルウェア プロセスがバックグラウンドで常に実行されるように、以下のBashスクリプトとPythonスクリプトを作成する。
  • workrun.sh
  • systemd-udevd.sh
  • systemd-udevd-run.sh
  • systemd-run.py
  • systemd-py-run.sh
config.jsonファイルに挿入されるコードを示す画像
図9 スクリプトによる設定の更新
スクリプトの名前を記載したボックスをすべて相互に接続したフローチャートを示す画像
図10キープアライブチェーン

ダウンロードされたXMRigファイルのSHA256値を比較することにより、実行可能ファイルがXMRig GitHubリポジトリで公開されたファイルと同じであることが確認されました。

また、スクリプトによってconfig.jsonファイルが更新されるときに、run.shによってウォレットアドレスに有効なアドレスが入力されないことが判明しました。これが原因で、記帳が失敗します。しかし、攻撃者は、悪意のあるサーバー上でconfig.jsonを更新するだけでこれを有効化し、マイニングマルウェアに感染したデバイスに動作の指示を開始することができます。また、このスクリプトは、攻撃者のサーバーから最新のrun.shのダウンロードを試み、攻撃者がこれを更新してスクリプトやコマンドを実行できるようにします。

結論

Nagios XI 5.7.5をターゲットとする実際の攻撃は、CVE-2021-25296を悪用して仮想通貨マイニングマルウェアをドロップし、旧式のNagios XIソフトウェアが導入されているシステムのセキュリティを脅威にさらしています。

クリプトジャッキングマルウェアに感染したデバイスでは、パフォーマンスが低下することがあります。また、攻撃者がオンラインでスクリプトを変更することにより、侵害されたデバイスに新しいスクリプトが自動的にダウンロードされ、実行され、さらなるセキュリティ上の影響が生じる可能性もあります。

パロアルトネットワークスの次世代ファイアウォールをご使用のお客様は、以下のセキュリティサブスクリプションにより、この脆弱性から保護されます。

  • 脅威防御は、脅威防御シグネチャ90873を使用したベストプラクティスにより、攻撃をブロックできます。
  • WildFireは、静的シグネチャを検出してマルウェアを阻止します。
  • URLフィルタリングは、悪意のあるマルウェアドメインをブロックできます。
  • Cortex XDRのBTPルールは、このような悪意のあるエクスプロイトを検出できます。

IoC

IPアドレス

118[.]107[.]43[.]174

ドロッパ
ファイル名 URL SHA256値
xmrig http://118[.]107[.]43[.]174/upload/files/xmrig 54b45e93cee8f08a97b86afa78a78bc070b6167dcc6cdc735bd167af076cb5b3
config.json http://118[.]107[.]43[.]174/upload/files/config.json 2c923d8b553bde8ce3167fe83f35a40a712e2bed2b76ebaf5e3e63642d551389
run.sh http://118[.]107[.]43[.]174/upload/files/run.sh c711bb6cf918b1f140f4162daab37844656eba2e16c25c429606e4c69c990f99
xmrig.tar.gz http://118[.]107[.]43[.]174/upload/files/xmrig.tar.gz 4079b3b34caa86dce0edc923a3292f5814dd555f28e8e6ec4c879a2c50a80787