Singularity Linuxカーネルルートキット、klogctl検出回避機能を搭載し、そのステルス性を強化

Singularity:次世代Linuxカーネルルートキット

現代の6.xカーネルを標的とするステルス重視のLinuxカーネルモジュール(LKM)ルートキット「Singularity」が、検出をさらに困難にする強力なログ回避機能を追加しました。これは、従来のklogctlなどのカーネルロギングインターフェースからの検出を阻止することを目的としています。ディフェンダーにとっての「最終ボス」と評されるSingularityは、深層カーネルフッキング、高度なログサニタイズ、EDR回避技術を特徴とし、侵害されたシステム上で不可視性を維持します。

Singularityは、6.8.0-79-genericや6.12のようなカーネルを実行する最新のディストリビューション向けに開発され、ftraceベースのシステムコールおよび関数フッキングを使用して、完全にカーネル空間で動作します。一度ロードされると、モジュールは自身を隠蔽し、再起動なしにはアンロードできず、一般的なインシデント対応および検出ワークフローを積極的に無効化します。その作成者のタグライン「フォレンジックに少し仕事を与えましょうか?」は、Linux上でのDFIRおよび脅威ハンティングの基準を引き上げるというプロジェクトの明確な目標を反映しています。

klogctl検出を回避するログサニタイズ機能

最新の機能強化は、klogctlおよび/proc/kmsgに依存するカーネルログ検査ツールによる検出を阻止することに焦点を当てています。Singularityは、複数のログソースから機密性の高い文字列や識別子をリアルタイムでフィルタリングします。対象となるログソースは以下の通りです。

  • /proc/kmsg
  • /var/log/kern.log
  • syslog
  • auth.log
  • /proc/kallsyms
  • /proc/vmallocinfo
  • /sys/kernel/debug/tracing/* などのカーネルトレースパス

「singularity」、「Singularity」、「matheuz」、「zer0t」、「obliviate」、「kallsyms_lookup_name」、「taint」のようなルートキット関連の識別子への参照は、ユーザー空間に到達する前に削除されます。これにより、dmesgjournalctl、またはklogctlに基づくツールを使用して悪意のあるカーネルアクティビティを発見しようとするアナリストを実質的に盲目にします。

Singularityの広範なステルス機能

このログサニタイズは、Singularityの広範なステルス機能の一部に過ぎません。ルートキットは、/procpstophtop、その他の監視ツールからプロセスを完全に隠蔽し、sched_process_forkトレースポイントを介して子プロセスを自動的に追跡・隠蔽します。また、設定可能なパターンに基づいてファイルやディレクトリを隠蔽し、隠蔽されたパスへのchdirをブロックします。

さらに、ssnetstatlsof、および/proc/net/*からTCP/UDP接続とポートを隠蔽します。選択されたポート上のネットワークトラフィックは、RAWソケット層でフィルタリングされ、ICMPトリガーのリバースシェルは完全に隠蔽されたリモートルートセッションを提供します。

特権昇格とEDR回避

特権昇格機能も組み込まれており、攻撃者は特殊な環境変数(例:MAGIC=mtzでシェルを起動)を設定するか、特定のシグナル(例:kill -59 $$)を送信することでroot権限を獲得できます。これらのメカニズムはカスタマイズ可能で、オペレーターは「マジックワード」、ICMPシーケンス、隠蔽ポート、パターン、プロセス名、スレッド名を変更して、シグネチャベースの検出や脅威インテリジェンスのフィンガープリントを回避できます。

現代のテレメトリおよびEDRツールに対抗するため、Singularityは監視メカニズムを積極的に妨害します。eBPF関連のシステムコールを傍受・ブロックし、トレース、kprobe、LSMプログラムのロードを阻止します。これには、BPF_PROG_LOADBPF_ITER_CREATEBPF_PROG_GET_NEXT_IDBPF_RAW_TRACEPOINT_OPENのような操作が含まれます。また、ftraceコントロールを保護し、トレースの無効化やftrace_enabledの変更の試みを透過的にブロックします。これらの保護をバイパスしようとするio_uringベースの試みに対する特別な処理も含まれており、Traceebpftracebpftool、io_uringベースのモニターなどのセキュリティツールを明確に標的にしています。

検出回避能力とセキュリティへの警鐘

実際には、Singularityは、unhidechkrootkitrkhunter、プロセスおよびファイルシステムモニター、tcpdumpやWiresharkなどのパケットアナライザー、lsmod/proc/modules/sys/moduleなどのモジュール検査ツール、そして公開されたケーススタディで文書化されているいくつかのLinux EDRソリューションを含む、広範な従来の検出ツールおよび最新の検出ツールをバイパスできます。一例として、プロセス隠蔽、ログサニタイズ、テレメトリ妨害を組み合わせることで、ElasticのEDR機能をバイパスできることが示されています。

その高度な機能にもかかわらず、著者はSingularityが完全に検出不能ではないと指摘しており、熟練したフォレンジックアナリストは特定の条件下で痕跡を発見できる可能性を示唆しています。それでも、klogctlおよび関連するログチャネルからの可視性を阻止し、監査およびカーネルメッセージを積極的にフィルタリングし、一般的な監視パスを無効にすることで、このルートキットは検出の労力を大幅に複雑化します。

ディフェンダーにとって、SingularityはLinuxカーネルレベルの脅威が急速に進化していること、そしてユーザー空間のログ、標準ツール、または保護されていないeBPF/ftraceベースの検出にのみ依存することはもはや不十分であるという厳しい警鐘となります。


元記事: https://gbhackers.com/singularity-linux-kernel/