Pumakit という Linux ルートキットを検出:高度な権限昇格とステルス性が特色

New stealthy Pumakit Linux rootkit malware spotted in the wild

2024/12/12 BleepingComputer — Pumakit と呼ばれる、新たな Linux ルートキット・マルウェアが発見された。このマルウェアは、高度な権限昇格とステルス性の技術を用いて、システム上で存在を隠し続けるという。このマルウェアは、複数のコンポーネントのセットである、その内容は、ドロッパー/メモリ常駐実行ファイル/カーネル・モジュール・ルートキット、共有オブジェクト・ユーザーランド・ルートキットなどである。

2024年9月4日付けの VirusTotal における、疑わしいバイナリ “cron” アップロード内で Pumakit を発見した Elastic Security であるが、それを用いる脅威アクターと、ターゲットにするものについては、現時点で不明であると報告している。

一般的に、これらのツールは、重要インフラとエンタープライズ・システムを標的とする APT により、スパイ活動/金銭窃取/混乱操作のために使用される。

Pumakit とは?

Pumakit が採用するのは、この “cron” というドロッパーから始まる、多段階の感染プロセスである。それにより、メモリから実行されるのは、エンベッドされたペイロードである “/memfd:tgt” および “/memfd:wpn” である。

子プロセスの中で実行される “/memfd:wpn” ペイロードは、環境をチェックしてカーネル・イメージを操作し、最終的に LKM (loadable kernel module) ルートキット・モジュール “puma.ko” をシステム・カーネルに展開する。

この LKM ルートキットには、Kitsune SO “lib64/libs.so” が埋め込まれており、ユーザーランド・ルートキットとして機能し、”LD_PRELOAD” を用いてプロセス内に自身を注入し、ユーザー・レベルでシステム・コールを傍受する。

Pumakit infection chain
Pumakit infection chain
Source: Elastic Security
ステルス的な権限昇格

このルートキットは、条件付きアクティベーションに従い、ロード前に特定カーネル・シンボル・セキュアブート・ステータスなどの前提条件をチェックする。

Elastic によると、Puma は “kallsyms_lookup_name()” 関数を用いて、システムの振る舞いを操作する。それが示すのは、Linux カーネルのバージョン 5.7 未満をターゲットにするよう、このルートキットが設計されていることである。新しい Linux カーネルのバージョンでは、この関数がエクスポートされなくなり、他のカーネル・モジュールでも使用されない。

Elastic の研究者である Remco Sprooten と Ruben Groenewoud は、「LKM ルートキットがシステムの動作を操作する能力は、syscall テーブルの使用と、シンボル解決のために依存する、kallsyms_lookup_name() への依存から始まる。 Linux カーネルのバージョン 5.7 以降をターゲットにする、最新のルートキットとは異なり、このルートキットでは kprobes が使用されない。それが意味するのは、古いカーネル向けに設計されていることである」と説明している。

Puma は ‘ftrace’ を使用することで、18 個の syscall と複数のカーネル関数をフックし、権限昇格/コマンド実行および、プロセスを隠すための機能を獲得する。

Using ftrace to hook syscalls
Using ftrace to hook syscalls
Source: Elastic Security

プロセス認証情報を変更し、特定のプロセスにルート権限を付与するために、カーネル関数である “prepare_creds” と “commit_creds” が悪用される。

Performing privilege escalation
Performing privilege escalation
Source: Elastic Security

このルートキットのステルス性により、カーネル・ログ/システム・ツール/ウイルス対策から、自身の存在を隠すことが可能となり、ディレクトリ内の特定のファイルやプロセス・リストからも、オブジェクトを隠せるようになる。

フックが中断されたケースにおいては、ルートキットによるフックの再初期化が行われ、悪意の変更に対する修復と、悪意のモジュールのアンロードが阻止される。

ユーザーランド・ルートキット Kitsune SO は、Puma と相乗的に動作することで、ステルス性および制御メカニズムを、ユーザー向けのインタラクションにまで拡張する。

それにより、ユーザー・レベルのシステム・コールが傍受され、ls/ps/netstat/top/htop/cat などの動作が変更されるため、ルートキットに関連付けられたファイル/プロセス/ネットワーク接続が隠される。

さらに、攻撃者が定義する基準に基づき、ファイル/ディレクトリを動的に隠すこと可能になるため、ユーザーやシステム管理者の視野から、悪意のバイナリは完全に隠される。

Kitsune SO は、C2 サーバーとの全ての通信を処理し、コマンドを LKM ルートキットに中継し、コンフィグとシステムの情報をオペレーターに送信する。

Elastic Security 公開したものには、ファイル・ハッシュに加えて、Pumakit 攻撃を検出するための YARA ルールがあり、それらにより、 Linux システム管理者をサポートする。