製品のカーネルモジュールロード監視から得られるテレメトリを抑制することで、Singularity LinuxルートキットがElastic Defendを回避する新たな手法が実証されました。
matheuzsecurity氏がまとめた調査では、悪意あるLinuxカーネルモジュールを挿入する際に、ルートキットローダーがElasticのtrusted_pids eBPFマップを悪用し、モジュールロードイベントの生成そのものを防ぐ手口が明らかにされています。
Elastic Defendはバージョン8.14前後から、BPFベースのmodule_loadイベントを使用してきました。バージョン9.5.0では、このイベントにtaint_flagsフィールドが追加され、それに対応するEQLルール「Kernel Module Loaded with Tainting Flags」も導入されています。
このフィールドは、カーネルモジュールの初期化ルーチン実行後にそのteint(汚染)状態から収集され、署名なしモジュールや外部でビルドされたモジュール、その他何らかの形でtaint状態にあるモジュールを防御側が特定する助けとなります。
研究者は、6.8.0-138-genericカーネルを動かすUbuntu上のElastic Defend 9.5.2に対してこの手法を検証しました。
分析によると、ElasticのeBPFトレーシングプログラムは、モジュールをロードしたプロセスが、信頼済みプロセスIDに紐づく内部ハッシュマップに存在するかどうかを確認します。
当該プロセスがそこに存在する場合、BPFプログラムはモジュールのメタデータ収集やテレメトリイベントの作成を行う前に終了します。今回の概念実証(PoC)は、固定のマップ識別子に依存するのではなく、該当するElasticのBPFプログラムとマップを動的に特定していると報告されています。
この点が重要なのは、マップ識別子がElasticエージェントの再起動後に変化しうるためです。カーネルモジュールのロード操作の前にローダープロセスを一時的に「信頼済み」としてマークすることで、ルートキットはElasticのtaintベースの検知ルールを支えるmodule_loadイベントの発生を回避できるとされています。
このバイパスが対処するのは検知層の一つに過ぎません。Singularityは、ファイルベースおよびログベースのセキュリティ制御も標的にしています。ElasticのYARAスキャンは、既知のルートキット文字列やシンボル、関数名、コードパターンをカーネルモジュールファイルがロードされる前に検知できます。
このプロジェクトのソース難読化コンポーネントは、識別子のランダム化やソースファイルのリネーム、識別可能な文字列の改変を行い、静的シグネチャによる検知を減らしているとされています。
別のレガシーElasticルールは、署名なしモジュールがシステムをtaint状態にした際に生成されるカーネルメッセージについて、syslogレコードを監視します。この調査では、Singularityが関連するカーネルログ出力をフィルタリングし、taint状態を示すメッセージがFilebeatによってElasticへ転送される可能性を減らしていると主張されています。
さらに研究者は、正規のサードパーティ製ドライバービルドでDKMSが一般的に使用するパスを含め、Elasticのカーネルモジュール作成検知ロジックにおける除外設定についても指摘しています。
Matheuzsecurity氏は、Linuxエンドポイント検知が抱えるより広範な課題として、十分な権限を持つ攻撃者がセキュリティイベントを生成するカーネルレベルの仕組みを操作した場合、テレメトリパイプライン自体が侵害されうる点を挙げています。
ルートキットの運用者は、必ずしもエンドポイントエージェントを完全に無効化する必要はありません。特定のイベントソースを抑制するだけで、個々の分析ロジックを機能不全に陥らせるには十分な場合があります。
防御側は、信頼済みプロセスマップ、eBPFプログラムのアタッチメント、カーネルモジュール作成パス、エージェントのテレメトリの欠落を、優先度の高い調査対象として扱うべきです。
セキュリティチームはまた、カーネル監査ログやSecure Boot・モジュール署名ポリシー、パッケージ管理の記録、ファイルシステムの完全性監視、集中ログ収集といった独立した証拠と、エンドポイントのイベントとを突き合わせて検証すべきです。
Elasticの顧客企業は、信頼済みPIDの処理が信頼されないプロセスによって悪用されうるかどうかを見直すとともに、予期しないeBPFマップの変更を調査し、正規のドライバーワークフロー向けの除外設定が悪意ある.koファイルの確実な隠れ場所とならないよう確認する必要があります。
不審な活動をより迅速に調査し、ビジネスへの影響が拡大する前に脅威を封じ込めるための可視性とコンテキストを、セキュリティチームに提供しましょう。ANY.RUNで調査を強化する
翻訳元: https://cyberpress.org/linux-rootkit-abuses-elastic-trusted_pids-ebpf-map/