Linuxの構成管理ツールを用いて感染拡大するコインマイナーを確認

トレンドマイクロは、2020年5月、Linuxの構成管理ツールを用いて感染拡大するコインマイナー(「Coinminer.Linux.SYSTEMDMINER.C 」として検出)を確認しました。今回確認されたコインマイナーは、Ansible, Chef, SaltStack, pssh といったインフラストラクチャの構成管理ツールを用いて、多数のホストに感染させるためのスクリプトを一斉に実行させます。このため、1台が感染すると、瞬時に内部ネットワークにある他のLinuxホストに感染を広げる可能性があります。

このマルウェアは大きく感染スクリプト、ワーム実行ファイル、マイニング実行ファイルの3つで構成されています。このマルウェアがどのように被害ホストに侵入するかは不明ですが、他のLinuxマルウェアと同じように、ホスト上で動作しているサーバアプリケーションの脆弱性を利用した攻撃や、パスワードブルートフォース攻撃などの手法で侵入後、感染スクリプトが送り込まれて実行される可能性が考えられます。

なお、このマルウェアは、先日360 Netlab Blogにて解析されていたマルウェアと似ていますが、別の亜種であることを確認しました。併せてこの記事も参照することを推奨します。(SystemdMiner,when a botnet borrows another botnet’s infrastructure

■感染スクリプトの動作

初めに被害ホストで実行される感染スクリプトは、C&Cサーバに接続してワーム実行ファイルをダウンロードします。ここで、図 1に示すように、実行されるコマンドはbase64 で符号化された文字列になっており、実行時に復号します。(以下、図中で攻撃者の保持するホストなど、危険につながる文字列はマスクしてあります。)

図1:初めに被害ホストで実行されるシェルスクリプト

そこで、このbase64文字列を復号すると実際に実行されるスクリプトがわかります。

図2:初段のスクリプトを復号した結果

このスクリプトを実行すると、TOR (The Onion Router) ネットワーク上にあるC&Cサーバにcurl コマンドを用いて接続し、ホストのアーキテクチャにあうワームの実行ファイルをダウンロードするようになっています。なお、確認時点では、x86_64 アーキテクチャに関するバイナリのみしかダウンロードできませんでした。続いて、ダウンロードしたデータを、dateコマンドの出力のMD5ハッシュ値をファイル名としたファイルに保存します。最後に、そのファイルに実行権限を与えて、実行し、削除します。

ここでダウンロードされた実行ファイルはダウンローダとワームとしての機能を持っていました。これについて以下で説明します。

■ワーム+ダウンローダ

ダウンロードされた実行ファイルはUPXの変種でパッキングされていました。そこでパッキングを解除し解析を続けたところ、アンパック後の実行ファイルにはさらにbase64文字列を復号して実行するシェルスクリプトと見られる文字列が複数含まれていました。

図3:アンパック後の実行ファイルに含まれていた base64 文字列を復号して実行するシェルスクリプト (一部)

これらの文字列は、復号したところそれぞれ異なる機能を持っていることがわかりました。これらの機能を以下の表に示します。

スクリプト番号     

スクリプトの機能
1 永続化のために、初段のシェルスクリプトと類似したシェルスクリプトをユーザのホームディレクトリ、/opt以下にそれぞれ設置し、ユーザのcrontab 設定と/etc/cron.d以下の設定ファイルに自動起動するよう設定を書き込む。
2 cron, curl, wget をインストールし、aegis, qcloud, stargate, YunJing などのモニタリングツールを削除する。その後、C&Cサーバより2種類の実行ファイルをダウンロードする(確認時点でこれらのファイルはダウンロードできませんでした)。その後、ansible, knife(Chefのコマンド), salt (SaltStackのコマンド), pssh, ssh を用いて、ネットワーク経由のコマンド実行が可能なホストに感染スクリプトを実行させ、感染を拡大する。
3 過去に感染した自身のマルウェアのプロセスや、ライバルと思われる攻撃者の使うマルウェアのプロセス、暗号通貨採掘のためのマイニングプールに接続しているプロセスを終了し、crontabの設定、/etc/hosts などの設定項目も削除する。また、ライバルの攻撃者が使うマルウェアを妨害するため/etc/hostsに設定項目を書き込み、そのマルウェアがC&Cサーバやマイニングプールへ接続できないようにする。
4 C&Cサーバからマイニング実行ファイルをダウンロードして実行する (なお、ダウンロードして確認できた実行ファイルはx86_64アーキテクチャのものでした)。
5 C&Cサーバからシェルスクリプトをダウンロードして実行する。
6 感染レポートとして、ホストから外に出るグローバルIPアドレス、実行ユーザ情報、ホストのアーキテクチャ、ホスト名、ホストの持つIPアドレスのMD5ハッシュ値、crontabの設定内容をC&CサーバにHTTP POSTで送信する (感染ホストの識別子として用いる可能性がある)。その後、C&Cサーバから実行ファイルをダウンロードして実行する(確認時点でファイルはダウンロードできませんでした)。
7 /tmp/.X11-unix を削除し空ディレクトリに置き換える (ユーザがGUIを使用するのを妨害する意図があると考えられる)。

また、実行ファイルを解析したところ、これらのbase64文字列を復号したあと、シェルスクリプトとして実行するコードを確認しました。

図4:base64文字列を復号してシェル経由で実行するコード

この実行ファイルが実行するスクリプトのうち、スクリプト2では、ネットワーク上へのホストへ感染拡大する動作として、図 5に示すように、構成管理ツールとして著名な Ansible、Chef、SaltStack、pssh を悪用していることを確認しました。これらのツールはネットワーク上の多数のホストで、指定したスクリプトを一斉に実行する機能があり、このスクリプトではその機能を悪用して、瞬時に感染を拡大させることを意図しています。また、このスクリプトは、これらの構成管理ツールのみならず、sshで証明書を用いた (パスワード入力が不要な) ログインが可能なホストを列挙し、それらのホストに対するログインおよび感染コマンド実行も試行します。

図5:スクリプト2 で感染拡大を行う部分

また、スクリプト3において、他の攻撃者の使うマルウェアの終了や動作妨害を行っているという点も興味深い動作です。このマルウェアの作成者は過去に感染を広げたコインマイナーに対しての調査を行っていると考えられます。

図6:他の攻撃者の使うマルウェアの終了や動作妨害を行うスクリプト(一部)

スクリプト5において、C&Cサーバからダウンロードしたシェルスクリプトを確認したところ、CPUの使用率が高いプロセスや特定の文字列を含むIPアドレスに接続しているプロセスを検出して強制終了するスクリプトでした。ここで検出しているIPアドレスにはマイニングプールのアドレスが含まれています。従ってこのスクリプトは、コインマイナーが動作しているときに強制終了することを目的としていると考えられます。

図7:スクリプト5実行時に実行する、C&Cサーバから配信されたシェルスクリプト
■暗号通貨のマイニングを行う実行ファイル

前段のダウンローダがダウンロードする実行ファイルは、XMRig 5.11.1 のコードを内部に含む実行ファイルで、調査時点で最新のXMRigリリースが用いられていました。マイニングに関する設定は実行ファイル内部に保持されています。実行ファイルの内部の文字列を調べると、実行ファイルが接続するマイニングプールのURLを確認できます。この設定では、XMRigが匿名性の高い暗号通貨「Monero」をマイニングするよう設定されていました。

この実行ファイルは XMRig そのままではなく、プロセス名をランダムなものに変更したり、実行時に自身の実行ファイルを削除したりするなど、検出妨害のための改造がなされています。従って、攻撃者はXMRigのソースコードを入手して改造し、自分でビルドしたものと考えられます。

図8:XMRig が使われていることを推測させる文字列
図9:マイニング実行ファイルの main関数の逆コンパイル結果 (一部)
図10:XMRigの設定データ (一部)
■まとめ

本記事で解説したマルウェアは、システムにインストールされている構成管理ツールを悪用して感染を広げる機能を持っていました。このように、攻撃者が侵入後に正規のツールを悪用してマルウェア感染を広げようとするケースは頻繁に発生しています。Linux、Windows問わず、リモートからのコマンド実行をパスワードなしで可能にするツールを利用する場合、悪用されるリスクを認識し、十分検討する必要があると考えます。

■被害に遭わないためには

Linux OSを狙うマルウェアはWindowsに比べれば少ないため、安全と考えている利用者の方は多いかもしれません。しかしそれはあくまでもWindowsと比較しての話です。逆に、安全を過信することにより必要な防護が行われていなかった場合、攻撃者にとって狙いやすい環境になってしまいます。2020年2月26日付の本ブログ記事でもお伝えしているように、Linuxを狙う攻撃者は実際に存在し、その被害は発生し続けています。特に法人においてサーバ用途で使用する場合、侵害のリスクを低減させる侵入防御、変更監視、仮想パッチなどの技術的対策を施すことが重要です。

■トレンドマイクロの対策

統合型サーバセキュリティソリューション「Trend Micro Deep Security™」は、幅広いセキュリティ機能で攻撃者の侵入を防ぎます。特に、仮想パッチ機能によって脆弱性を狙う攻撃からサーバを防御します。トレンドマイクロ製品に組み込まれたクロスジェネレーション(XGen)セキュリティアプローチは、高度な機械学習型検索を活用しエンドポイントのデータとゲートウェイおよびアプリケーションを守ります。XGenは、従来の検出技術を回避し、既知、未知および未公開の脆弱性を突くなどの今日の目的に特化した脅威からユーザを保護します。

トレンドマイクロのネットワーク挙動監視ソリューション「Deep Discovery™」は、ネットワーク内に侵入した標的型攻撃などの脅威による活動の兆候を可視化することができます。今日の気づけない標的型攻撃や巧妙化する脅威をリアルタイムで検出できます。専用のエンジンとカスタムサンドボックス機能を使用し、攻撃のライフサイクル全体に対する相関分析を可能にします。

■侵入の痕跡(Indicators of Compromise、IoC)

今回の記事に関する侵入の痕跡はこちらを参照してください。