/toast

通过 ebpf(bcc) 在 TCP 包中插入 TOA,实现任意 TOA 伪造

Primary LanguagePythonMIT LicenseMIT

1. 搭建执行环境

用来执行 toast.py

系统环境(这里只列举我自己的环境用作参考,其他系统和内核需要自行匹配)

  • os: ubuntu 23
  • 内核版本: 6.5.0-14-generic (需要 >= 5.10
  • python: 3.11.6(最好 >= 3.10,ubuntu 23 自带 3.11.6)

安装依赖

  • sudo apt-get install bpfcc-tools linux-headers-$(uname -r)

执行 toast.py

  • 挂到根 cgroup: sudo python3 toast.py --ip 12.23.34.45,至此,本机所有 TCP 请求均会携带 TOA
  • 如果你只想影响限定的进程,可以创建一个 cgroup,然后用 --cg 来指定:
    • 运行: sudo python3 toast.py --ip 12.23.34.45 --cg toast
    • 再另外打开一个终端
    • 新建一个名叫 toast 的 cgroup: sudo mkdir /sys/fs/cgroup/toast
    • 将当前的 bash 挂到新建的 cgroup 里: sudo sh -c "echo $$ > /sys/fs/cgroup/toast/cgroup.procs"
    • 至此,新建的终端内执行的任意命令会受到 toast.py 的影响;当然,你也可以选择将其他进程放到新建的 cgroup 里

2. 搭建本地复现环境

用来验证 TOA 插入成功

注意⚠️:这里用腾讯云的 toa.ko 模块,因此在 toast 执行时需要修改 to 类型为 200:

sudo python3 toast.py --ip 12.23.34.45 --tot 200

  • 安装 toa.ko: bash -c "$(curl -fsSL https://thunder-pro-mainland-1258348367.cos.ap-guangzhou.myqcloud.com/TOA/compile_install_toa.sh),或者见 tencentyun 的教程
  • 确认 toa.ko 载入成功: lsmod | grep toa

    image

  • 安装 nginx: sudo apt install nginx -y
  • 确认已启动: sudo systemctl status nginx
  • 查看 nginx 日志: tail -f /var/log/nginx/access.log
  • 发起测试请求: curl 127.0.0.1

测试结果: image

License

Copyright © 2023 Macr0phag3.

This project is MIT licensed.

Others

Stargazers over time