alexrf45/SCRT

GitHub: alexrf45/SCRT

基于 Kali 的容器化安全研究环境管理工具,通过 CLI 实现多项目持久化工作区管理、远程实验室部署和团队协作,解决安全研究人员环境配置繁琐和依赖冲突的痛点。

Stars: 2 | Forks: 0

# 安全研究容器工具包 ![GitHub Release](https://img.shields.io/github/v/release/alexrf45/SCRT?display_name=tag&style=plastic) ![Docker Image Size](https://img.shields.io/docker/image-size/fonalex45/scrt) ![Docker Pulls](https://img.shields.io/docker/pulls/fonalex45/scrt) `SCRT` 是一个容器化的安全研究环境,专为攻防操作而设计。 无论是侦察、漏洞利用、日志分析还是工具测试,`scrt` 都能为您提供始终一致的环境。避免依赖地狱,节省大量配置宿主机 OS 的时间。`scrt` 可以在本地、远程实验室主机或 Kubernetes 集群中运行。 ## 功能特性 - 轻量级 Kali 基础镜像,并精选了实用工具 - 持久化的容器、卷和工作区 —— 随时从上次中断的地方继续 - 自定义的 Starship 提示符,以及预配置的 Tmux 状态栏 - 通过 X11 转发支持 GUI 应用 - 预配置了书签、FoxyProxy 和 Cookie Modifier 的 Firefox - 内置命令历史记录,支持使用 `fzf` 进行快速过滤 (`Ctrl+r`) - **远程实验室模式** —— `scrt serve` 暴露 REST API 和 Web 状态仪表盘 - **环境无关性** —— 启动时自动检测 Docker、containerd 或 runc ## 如何运行 `scrt` ### 依赖项 - Docker(或 containerd / runc,用于无守护进程操作) - Linux x86-64 或 arm64(预编译二进制文件)—— 或 Go 1.24+ 用于从源码编译 ### 安装 CLI 二进制文件 ``` # 下载最新 release curl -L https://github.com/alexrf45/SCRT/releases/latest/download/scrt-linux-amd64 \ -o ~/.local/bin/scrt chmod +x ~/.local/bin/scrt ``` 完整发布历史和更新日志:https://github.com/alexrf45/SCRT/releases ### 从源码编译 ``` git clone https://github.com/alexrf45/SCRT.git cd SCRT/scrt make build # produces bin/scrt make all # vet + test + build ``` ``` USAGE: scrt [arguments] COMMANDS: start [--image ] Start a new container enter Enter a running container stop Stop a container destroy [--force] Destroy container and data backup [--dir ] Backup project data pull [--image ] Pull/update container image import --repo Import a backup tar as an image list List all SCRT containers (TUI or table) serve [--addr :8080] [--token tok] Start HTTP API and web UI config Show current configuration config edit Open config in $EDITOR version Show version information EXAMPLES: scrt start myproject scrt start myproject --image fonalex45/scrt:dev scrt backup myproject --dir ./my-backups scrt destroy myproject --force scrt serve --addr :8080 --token $(openssl rand -hex 32) scrt config edit ``` ### 配置 SCRT 从 `~/.scrt.conf.json` 加载配置。查看或编辑: ``` scrt config # display current settings scrt config edit # open in $VISUAL / $EDITOR / vi ``` | 变量 | 描述 | 默认值 | |---|---|---| | `SCRT_IMAGE` | 要使用的 Docker 镜像 | `fonalex45/scrt:latest` | | `SCRT_SHELL` | 容器内的 Shell | `/bin/zsh` | | `SCRT_HOST_NET` | 设为 `false` 可禁用宿主机网络 | `true` | | `SCRT_X11` | 设为 `false` 可禁用 X11 转发 | `true` | | `SCRT_GPU` | 设为 `false` 可禁用 GPU 直通 | `true` | | `SCRT_WORKDIR` | 基础工作目录 | 当前目录 | | `SCRT_TOKEN` | `scrt serve` API 的 Bearer token | 自动生成 | ## 远程实验室部署 `scrt serve` 启动一个 HTTP API 和 Web 状态仪表盘。将其与反向代理配对使用以启用 TLS,即可获得一个持久化的远程研究环境。 ### Docker Compose(单主机) ``` cd deploy cp .env.example .env # 编辑 .env: 设置 SCRT_TOKEN 并使用你的域名更新 Caddyfile docker compose up -d ``` 此 Compose 栈在 Caddy 背后以 serve 模式运行 `scrt`(通过 ACME 自动获取 HTTPS)。 `scrt` 端口从不直接暴露 —— 只有 Caddy 能访问它。 ``` internet ──► Caddy :443 (TLS) ──► scrt :8080 ↕ /var/run/docker.sock ``` 文件:[`deploy/compose.yaml`](deploy/compose.yaml),[`deploy/Caddyfile`](deploy/Caddyfile) ### Kubernetes 将 `scrt` 作为 `StatefulSet` 部署在专用的、带有污点的安全研究节点上,并通过 containerd 套接字直通运行。 ``` # 标记并污点专用节点 kubectl label node role=security-research kubectl taint node security-research=:NoSchedule # 注入 token (切勿将实际值提交到 secret.yaml) kubectl create secret generic scrt-token -n scrt \ --from-literal=token=$(openssl rand -hex 32) # 应用 manifests kubectl apply -f deploy/k8s/namespace.yaml kubectl apply -f deploy/k8s/secret.yaml kubectl apply -f deploy/k8s/statefulset.yaml kubectl apply -f deploy/k8s/service.yaml kubectl apply -f deploy/k8s/ingress.yaml # requires cert-manager + nginx ingress ``` 使用适合您发行版的正确 containerd 套接字路径更新 `deploy/k8s/statefulset.yaml`, 并将 `deploy/k8s/ingress.yaml` 中的 `lab.yourdomain.com` 替换为您的域名。 | 发行版 | 套接字路径 | |---|---| | 标准 k8s / EKS / GKE / AKS | `/run/containerd/containerd.sock` | | k3s | `/run/k3s/containerd/containerd.sock` | | 基于 Docker 的节点 | `/var/run/docker.sock` | 文件:[`deploy/k8s/`](deploy/k8s/) ### Web UI 部署后导航到您的域名。输入 Bearer token 进行连接。 仪表盘每 10 秒自动刷新一次,并支持对正在运行的容器执行停止、备份和销毁操作。 ### 包含的自定义别名 ``` # 日常使用 alias c='clear' alias t='tmux new -f ~/.tmux.conf -s $1' alias i='sudo apt install -y' alias q='exit' alias r='. ~/.zshrc' alias update='sudo apt update' alias upgrade='sudo apt upgrade' alias get="curl -O -L" alias cat='batcat' alias weather='curl https://wttr.in' alias public='curl wtfismyip.com/text' alias download='aria2c' alias home='cd ~' # pentesting 别名 alias cme='nxc' alias port-scan='sudo nmap -sC -sV -p- $IP > scan.txt' alias udp-scan='sudo nmap -sU --top-ports 10 $IP -v > udp.scan.txt' alias stealth-scan='sudo nmap --data-length 6 -T3 -A -ttl 64 -p- $IP > stealth-scan.txt' alias proxy='proxychains' alias serve='sudo python3 -m http.server 8888' alias notepad='mousepad notes.md > /dev/null 2>&1 &' # python3 alias py-virt='python3 -m venv .venv && source .venv/bin/activate' alias freeze='pip freeze > requirements.txt' alias py-install='pip install -r requirements.txt' alias py-list='pipx list | grep package' ```
标签:EVTX分析, Golang, KaliLinux, RESTAPI, X11转发, 依赖管理, 子域名突变, 安全工具箱, 安全编程, 容器化环境, 容器工具包, 工具测试, 插件系统, 数据展示, 无线安全, 日志审计, 红队, 网络安全, 网络安全审计, 自动化环境部署, 请求拦截, 远程实验室, 隐私保护