Singularity は、最新の 6.x カーネル向けに設計された強力な Linux カーネルモジュール(LKM)型 rootkit です。ftrace インフラストラクチャを用いた高度なシステムコールフックにより、包括的なステルス機能を提供します。
Singularity とは?
Singularity はカーネルレベルで動作する高度な rootkit で、以下の機能を提供します:
- プロセス隠蔽:任意のプロセスをシステムから完全に不可視化
- ファイル & ディレクトリ隠蔽:パターンマッチングを用いたファイルの秘匿
- ネットワーク・ステルス:TCP/UDP 接続およびポートの隠蔽
- 権限昇格:即座に root 権限を取得するための複数の手法
- ログのサニタイズ:カーネルログおよびシステムジャーナルをリアルタイムでフィルタリング
- 自己隠蔽:モジュール一覧やシステム監視から自身を削除
- リモートアクセス:ICMP トリガーによるリバースシェルと自動隠蔽
- アンチ検知:eBPF ツールや io_uring 操作をブロックし、モジュールのロードを阻止
- 監査回避:隠蔽されたプロセスに関する監査メッセージを netlink レベルでドロップ
機能
- シグナルおよび環境変数による環境トリガー型の権限昇格
- /proc および各種監視ツールからの完全なプロセス隠蔽
- ファイルおよびディレクトリに対するパターンベースのファイルシステム隠蔽
- netstat、ss、パケットアナライザからのネットワーク接続の秘匿
- dmesg および journalctl 向けのリアルタイムなカーネルログフィルタリング
- lsmod および /sys/module からのモジュール自己隠蔽
- カーネル taint フラグの自動正規化
- eBPF ベースの検知を防ぐための BPF システムコールインターセプト
- 非同期 I/O によるバイパスを防ぐ io_uring 保護
- 新たなカーネルモジュールのロード阻止
- カーネルメッセージおよびシステムログのマスキング
- 標準的な rootkit 検出ツール(unhide、chkrootkit、rkhunter)の回避
- tracepoint フックによる子プロセスの自動追跡および隠蔽
- マルチアーキテクチャ対応(x64 + ia32)
- 生ソケット保護を伴うネットワークパケットレベルのフィルタリング
- すべてのファイル I/O バリアント(read、write、splice、sendfile、tee、copy_file_range)に対する保護
- auditd による検知を回避するための netlink レベルでの監査メッセージフィルタリング
詳細な研究記事: Singularity: A Final Boss Linux Kernel Rootkit
EDR 回避ケーススタディ: Bypassing Elastic EDR with Singularity
インストール & 使い方
ソース: meterpreter.org