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



`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转发, 依赖管理, 子域名突变, 安全工具箱, 安全编程, 容器化环境, 容器工具包, 工具测试, 插件系统, 数据展示, 无线安全, 日志审计, 红队, 网络安全, 网络安全审计, 自动化环境部署, 请求拦截, 远程实验室, 隐私保护