Tux malware

perfctl」と名付けられたLinuxマルウェアは、少なくとも3年前からLinuxサーバーやワークステーションを標的としており、高度な回避技術とルートキットの使用により、ほとんど発見されていない。

perfctlを発見したAqua Nautilusの研究者によると、このマルウェアは近年、数百万台のLinuxサーバーを標的とし、そのうちの数千台で感染を引き起こした可能性があるという。

これは、オンライン・ディスカッション・フォーラムに 提出された、このマルウェアの被害者による多数の報告に基づいており、すべての報告には、perfctlの活動のみに関連する侵害の指標が含まれている。

Aqua Nautilusによると、perfctlの主な目的はクリプトマイニングであり、侵害されたサーバーを使用して、追跡が困難なMonero暗号通貨を採掘する。しかし、より有害な操作に使用される可能性もある。

感染チェーン

Aqua Nautilusは、脅威者は設定ミスや公開された秘密を悪用してLinuxサーバーに侵入すると考えている。これらの設定ミスは、認証情報を含む一般にアクセス可能なファイルから、露出したログイン・インターフェースまで多岐にわたる。

Misconfigurations sought by perfctl for initial access or lateral movement
初回アクセスまたは横移動のために perfctl が求める設定ミス
出典:Aquaautilus:Aqua Nautilus

研究者はまた、Apache RocketMQバージョン5.1.0およびそれ以前に影響を与えるリモートコマンド実行のCVE-2023-33246、およびPolkitの特権昇格の欠陥であるCVE-2021-4034(PwnKit)の悪用も観測している。

最初のアクセスが確立されると、”httpd “と名付けられたパックされ難読化されたペイロードが攻撃者のサーバーからダウンロードされ、実行される。そして、/tmpディレクトリに「sh」という名前で自分自身をコピーし、元のバイナリを削除します。

新しいプロセスは同じ名前(”sh”)を名乗り、基本的に通常のLinuxシステム操作に紛れ込む。

さらに、クリーンアップの際の永続性を確保するため、「/root/.config」、「/usr/bin/」、「usr/lib」など、システムの他の場所にも追加のコピーが作成される。

Locations where the malware drops files
マルウェアがファイルをドロップする場所
Source:Aqua Nautilus

主な動作と回避メカニズム

起動すると、perfctlは内部通信用のUnixソケットを開き、TORを介して脅威行為者のサーバーと暗号化されたチャネルを確立し、やりとりの解読を不可能にします。

その後、「libgcwrap.so」という名前のルートキットをドロップし、さまざまなシステム機能にフックして認証メカニズムを変更し、必要に応じてネットワーク・トラフィックを傍受して回避を促進する。

さらにユーザーランドのルートキットも展開され、ldd、top、crontab、lsofユーティリティをトロイの木馬化されたバージョンに置き換える。

最後に、XMRIGマイナーがシステムに投下され、サーバーのCPUリソースを使用してMoneroを採掘するために実行されます。

Overview of perfctl attack flow
perfctl攻撃フローの概要
ソースはこちら:Aqua Nautilus

クリプトマイナーはTORを介してセットマイニングプールと通信するため、ネットワークトラフィックは不明瞭になり、利益を追跡することはできません。

また、Aqua Nautilusは、Bitping、Repocket、Speedshare、およびその他の類似サービスを通じて未使用のネットワーク帯域幅を販売することで、攻撃者に追加の収益化ルートを提供するプロキシジャッキングソフトウェアの展開を確認したケースもあります。

ほとんどのユーザーは、暗号通貨のマイニングによってCPUの使用率が100%になっていることに気づくと、サーバーが感染しているのではないかと疑うようになる。

しかし、このマルウェアは非常に回避能力が高く、ユーザーがサーバーにログインするまでマイニングを実行し、すぐに停止してサーバーがアイドル状態に戻るまで待機する。

「私がこのマルウェアに気づいたのは、私のモニタリング・セットアップが100%のCPU使用率を警告したからです。

「しかし、SSHやコンソールでログインすると、プロセスはすぐに停止した。しかし、私がSSHやコンソール経由でログインすると、プロセスはすぐに停止した。”私がログアウトするとすぐに、マルウェアは数秒から数分で実行を再開した。

ルートキットを使用すると、プロセスがユーザーランドのユーティリティや通常のマルウェア除去技術から隠されてしまうため、除去も難しくなる。一般的には、ファイルシステムを検査するためにオフラインにするか、ライブCD経由で起動する必要がある。

しかし、感染は正規のLinuxファイルを変更したり置き換えたりするため、デバイスをワイプして再インストールし、何も残さないようにするのが最善の方法です。

perfctl の検出と停止

Aqua Nautilusは、perfctlを検出し停止させるためのいくつかの方法を提案しており、それらは4つの主要なカテゴリに分類されます:システム監視、ネットワークトラフィック分析、ファイルとプロセスの整合性監視、および予防的緩和。

検出に関して、Aqua Nautilus は以下のヒントを提供しています:

  • tmp、/usr、/root ディレクトリを定期的に検査し、正規のシステム・ファイルを装った疑わしいバイナリがないか確認する。
  • CPU使用率が急上昇していないか、httpdやshのようなプロセスが予期せぬ場所から実行されていないか監視する。
  • ~/.profile、~/.bashrc、/etc/ld.so.preloadに不正な変更がないか精査する。
  • ネットワーク・トラフィックをキャプチャし、外部IPへのTORベースの接続を分析する。
  • 既知のクリプトマイニングプールやプロキシジャッキングサービスへのアウトバウンド接続を探す。
  • レポートのIoCセクションで共有されたIPをブロックリストに追加し、悪意のあるホストとの通信を妨害する。

システム管理者は、RocketMQサーバー(CVE-2023-33246)やPolkit(CVE-2021-4043)など、インターネットに面したアプリケーションの既知の欠陥すべてにパッチが適用されていることを確認する必要がある。

また、使用していないHTTPサービスをオフにし、役割ベースのアクセス制御を使用し、「/tmp」や「/dev.shm」のような重要なディレクトリに「noexec」オプションを適用することも効果的だろう。