Azure Security Center で仮想通貨マイニング活動を検出


執筆者: Yaniv Zohar (Security Researcher and Software Engineer, Azure Security Center)

このポストは、2019 4 8 日に投稿された Azure Security Center exposes crypto miner campaign の翻訳です。

 

Azure Security Center で、Azure のお客様のリソースで実行されていた仮想通貨マイニング操作が新たに検出されました。
この操作は、よく知られたオープン ソース CMS の古いバージョンの脆弱性を悪用したもので、リモートからコードを実行される既知の脆弱性 (CVE-2018-7600 (英語)) をエントリ ポイントにして、CRON ユーティリティで永続化してから、オープン ソース仮想通貨マイニング ツール “XMRig” の新種のコンパイル済みバイナリで仮想通貨 “Monero” のマイニングを行っていました。

Azure Security Center (ASC) はこの攻撃をリアルタイムで検出し、影響のあったユーザーに以下のアラートで注意喚起しました。

  • 不審なファイルのダウンロード wget を使用して不審なファイルがダウンロードされていた疑いがあります。
  • 不審な CRON ジョブ – 不審なスケジューリング タスクにアクセスしていた疑いがあります。
  • 不審な挙動 – 不審なソースからファイルが定期的にダウンロード、実行されていた疑いがあります。
  • 不審な場所からのプロセス実行

Azure Security Center alert on a file downloaded and executed.

エントリ ポイント

攻撃者の痕跡を追跡した結果、このマルウェアのエントリ ポイントが判明し、人気のオープン ソース CMS の既知のリモート コード実行脆弱性 (CVE-2018-7600 (英語)) が悪用されているとの結論に至りました。

問題の脆弱性はこの CMS の古いバージョンに存在するもので、該当するバージョンを使用している Web サイトが多数影響を受けているものと見られます。脆弱性の原因は、API 呼び出し時の入力検証が不十分であることです。

以下は、攻撃された Linux マシンで検出された 1 つ目の不審なコマンド ラインです。

Base64 encoded bash command line (details censored).

このコマンド ラインの base64 の部分を解読したところ、CRON ユーティリティを使用して定期的に bash スクリプト ファイルをダウンロードして実行するロジックが見つかりました。

Base64 decoded bash command line (details censored) – wget | sh.

この URL パスには CMS 名への参照も含まれていました。これがエントリ ポイントと攻撃者を特定する手掛かりになりました。

また、感染したマシンから収集したテレメトリから、1 つ目のコマンド ラインが “apache” ユーザー コンテキストで実行されること、該当する CMS の作業ディレクトリ内で実行されることが明らかになりました。

感染したマシンはいずれも修正プログラムが適用されていないバージョンの CMS を実行していたため、非常に重大なセキュリティ リスクを抱えた状態でした。それが脆弱なリソース上で攻撃者から不審なコードを実行される原因となっていました。

マルウェアの分析

このマルウェアは、CRON ユーティリティ (Unix のジョブ スケジューラ) を使用し、CRON テーブル ファイルに以下の行を追加して永続化します。

Cron command running wget | sh.

これで bash スクリプト ファイルを 1 分ごとにダウンロードして実行し、攻撃者が bash スクリプトでコマンドの実行や制御を行えるようにしています。

The malicious bash script file (details censored).

今回捕捉した bash ファイルは、上図のようにバイナリ ファイルをダウンロードして実行します。
マシンが既に感染しているかどうかを判断して、バイナリ ファイルを HTTP 1.1 POST メソッドでダウンロードし、マシンのプロセッサ数に応じて、別のバイナリ ファイルもダウンロードします。

Malicious network traffic sniff.

一見すると、2 つ目のバイナリは明らかに難読化されているため、調査が難しそうに見えます。しかし、難読化ではなく圧縮を重視した圧縮ソフト UPX が使用されていたのが幸いしました。

Malicioud binary packed with UPX packer.

バイナリを解読した結果、オープン ソース仮想通貨マイニング プログラム “XMRig” のバージョン 2.6.3 がコンパイルされていることがわかりました。このマイニング ツールには構成が含まれていて、マイニング用プロキシ サーバーからマイニング ジョブをプルするため、クライアント数や攻撃者が得た売上を割り出すことはできませんでした。

XMRig assembly code.

マイニング活動の全貌

マイクロソフトがこれまで複数の仮想通貨マイニング プログラムの挙動を分析してきた結果、マイニング プログラムによる攻撃を示す明確な特徴が 2 つ存在することが明らかになっています。

  1. 競合するプログラムを停止させる – 仮想通貨マイニング攻撃の多くは、競合するプログラムにマシンが既に感染していることを想定し、それらを停止させてコンピューティング能力を奪おうとします。このとき、プロセス リストの以下の項目に目を付けています。
  2. プロセス名 (有名なオープン ソースのマイニング プログラムから、知名度の低いマイニング活動まで、あらゆるものが対象)
  3. コマンド ライン引数 (既知のプール ドメイン、暗号化ハッシュ アルゴリズム、マイニング プロトコルなど)
  4. CPU 使用率

このほかに、CRON タブをリセットするという手法もよく見られます。これは、コンピューティング能力を使用する他の競合プログラムが存在する場合に永続化の手法としてよく使用されます。

  1. マイニング プール – 仮想通貨マイニング ジョブを管理しているマイニング プールは、複数のクライアントを束ね、全体の売上を各クライアントに分配しています。攻撃者の多くは、デプロイや利用が簡単なパブリック マイニング プールを使用しています。ただし、攻撃が発覚した攻撃者のアカウントはブロックされるようです。最近は、独自のマイニング用プロキシ サーバーを使用する攻撃者が増えていることがわかっています。この方法だと、ホスト内のセキュリティ製品による検出 (Azure Security Center Linux 向け脅威検出機能など) と、パブリック マイニング プールによる検出の両方から、攻撃者は匿名性を守りやすくなります。

結論と防止策

今回の攻撃は、最新のセキュリティ更新プログラムをインストールするだけで簡単に防止できます。さらに SaaS (サービスとしてのソフトウェア) を使用すれば、Web サーバーやソフトウェア環境全体のメンテナンスが不要になります。

仮想通貨マイニング活動ではリソースが大量に消費されるため、ほとんどの場合は検出が容易です。
Azure Security Center (英語) などのクラウド セキュリティ ソリューションを活用することで、マシン、ネットワーク、Azure サービスのセキュリティを常に監視し、異常な挙動が見られる場合にはアラートで通知を受け取ることができます。

 

Comments (0)

Skip to main content