kiurakku/APT-SecureOps-Lab
GitHub: kiurakku/APT-SecureOps-Lab
在GCP上构建的APT风格DevSecOps安全实验室,通过完整的攻击路径模拟与日志分析流水线来演示云原生环境下的攻防对抗。
Stars: 0 | Forks: 0
# apt-defense-lab
在 GCP 上构建的 APT 风格 DevSecOps 安全实验室,在一个可复现的环境中演示了攻击路径和防御控制。
## 免责声明(务必首先阅读)
**仅供教学和授权实验室使用。** 本仓库包含**故意设置的薄弱或易受攻击的配置**(例如 **`vulnerable-pool`**、演示节点镜像以及 `exploits/` 目录下的**概念验证漏洞利用代码**),旨在教授 **GKE 安全**、**WIF**、**Falco**、**Trivy** 以及检测流水线。**仅限**在您自己控制的**一次性 GCP 项目**中使用,确保**没有生产数据**且**没有发往第三方系统的流量**。**严禁**对您不拥有或未获得**明确书面授权**的基础设施运行测试场景。您需对**法律合规性**和**组织政策**承担全部责任。
[](https://github.com/kiurakku/APT-SecureOps-Lab/issues)
[](https://github.com/kiurakku/APT-SecureOps-Lab/commits/main)
**联系:** [](https://github.com/kiurakku) [](https://t.me/SyntacticSugar) [](mailto:yanginero@outlook.com)
## 目录
- [免责声明(务必首先阅读)](#disclaimer-read-first)
- [信息图:流水线概览](#infographic-pipeline)
- [本项目用途](#what-this-project-is-for)
- [架构概览](#architecture-at-a-glance)
- [案例研究:`parse_trivy_bq.py`](#case-study-trivy-bq)
- [如何安装和使用(3 条命令)](#how-to-install-and-use-3-commands)
- [仓库结构](#repository-layout)
- [前置条件](#prerequisites)
- [快速开始](#quick-start)
- [流水线与证据流](#pipelines-and-evidence-flow)
- [包含的安全场景](#security-scenarios-included)
- [CI 身份模型](#ci-identity-model)
- [故障排除](#troubleshooting)
- [推荐的 GitHub Topics(项目标签)](#suggested-github-topics-project-tags)
- [文档索引](#documentation-index)
- [参考链接](#references)
- [贡献指南](#contributing)

本仓库专为技术评估和培训而构建:
- Kubernetes 安全场景(`container escape`、`control-plane stress`、`CI/WIF abuse simulation`)
- 防御技术栈(`Falco`、`NetworkPolicy`、强化的 WIF 条件、Shielded 节点)
- 检测与分析流水线(`Cloud Logging -> BigQuery -> parser -> clean vulnerability table`)
### 信息图:GKE → Trivy → Log Router → BigQuery
```
flowchart LR
GKE[GKE workloads]
TV[Trivy Operator]
LR[Log Router]
SK[Logging sink]
BQ[(BigQuery)]
PY[parse_trivy_bq.py]
GKE --> TV --> LR --> SK --> BQ --> PY
```
## 本项目用途
`apt-defense-lab` 是一个隔离的非生产环境实验室,旨在:
- 展示云原生环境中真实的攻击者行为
- 验证检测和预防控制措施
- 证明从运行时信号到结构化证据的可追溯性
- 对比故意制造漏洞的 CI 身份流与经过强化的 CI 身份流之间的差异
请勿在您拥有的一次性实验室项目之外运行漏洞利用场景。
## 架构概览
```
GitHub Actions (PR / push / dispatch)
| OIDC -> Workload Identity Federation (lab/prod pools)
v
GCP service accounts (cicd-lab / cicd-plan / cicd-apply)
v
GKE Standard (lab-cluster)
- vulnerable-pool (demo attack surface)
- hardened-pool (shielded/hardened baseline)
- trivy-operator (scan results in logs)
- falco (runtime detection)
- network policies (egress control)
Cloud Logging sink -> BigQuery dataset (trivy_logs)
v
scripts/parse_trivy_bq.py -> clean_vulnerabilities
```
### 架构 (Mermaid)
```
flowchart TB
subgraph CI["GitHub Actions"]
A[Workflows: vulnerable / hardened / apply]
end
subgraph GCP["GCP"]
WIF[Workload Identity Federation]
SA[Service accounts: cicd-lab / plan / apply]
GKE[GKE lab-cluster]
subgraph Pools["Node pools"]
V[vulnerable-pool]
H[hardened-pool]
end
T[Trivy operator]
F[Falco]
NP[NetworkPolicy]
LOG[Cloud Logging]
BQ[(BigQuery: trivy_logs)]
P[parse_trivy_bq.py → clean_vulnerabilities]
end
CI --> WIF
WIF --> SA
SA --> GKE
GKE --> Pools
GKE --> T
GKE --> F
GKE --> NP
T --> LOG
LOG --> BQ
BQ --> P
```
### 数据路径:Trivy → BigQuery → 规范化表 (Mermaid)
```
flowchart LR
TR[Trivy Operator]
LG[Workload logs]
LR[Log Router]
SK[Logging sink]
BQ[(Dataset: trivy_logs)]
PY[scripts/parse_trivy_bq.py]
CV[Table: clean_vulnerabilities]
TR --> LG --> LR --> SK --> BQ --> PY --> CV
```
详细说明(sink 字段、压缩、查询):[**docs/logging_pipeline.md**](docs/logging_pipeline.md) 和 [**docs/network-and-data-flow.md**](docs/network-and-data-flow.md)。
## 案例研究:`parse_trivy_bq.py`
| | |
| :--- | :--- |
| **问题** | Cloud Logging / BigQuery 中的原始扫描遥测数据嘈杂且不一致——难以追踪 CVE 趋势、生成高管摘要或与资产清单进行关联。 |
| **构建内容** | 一个指向 `trivy_logs` 的**托管 sink**,以及用于读取 sink 导出数据、规范化记录并填充用于分析的**干净**表(`clean_vulnerabilities` / 仓库中的 pipeline)的 **`scripts/parse_trivy_bq.py`** 脚本。 |
| **成果** | **安全即代码 (Security-as-code)** 证据:可复现的 ETL,更简单的审计 SQL,以及可用于其他日志源(Falco、自定义扫描器)的通用模式。 |
## 如何安装和使用(3 条命令)
在仓库根目录下,安装 `gcloud`、`terraform`、`kubectl`(见下文 **前置条件**)后:
```
git clone https://github.com/kiurakku/APT-SecureOps-Lab.git
cd APT-SecureOps-Lab/terraform && cp terraform.tfvars.example terraform.tfvars
# 编辑 terraform.tfvars(project_id, github_org, github_repo, state bucket),然后:
terraform init -backend-config=backend.hcl && terraform apply
```
完整的 **kubectl**、**Helm** 和 **GitHub secrets** 步骤在下方的 **快速开始** 中——上述三条命令用于引导基础设施;请按照该部分的 3-4 步骤获取集群访问权限并完成 CI 配置。
## 仓库结构
| 路径 | 用途 |
|------|---------|
| `terraform/` | GCP 基础设施(GKE、IAM、WIF、BigQuery、日志 sink) |
| `.github/workflows/` | 漏洞计划、强化计划、受控的 apply 工作流 |
| `k8s/` | Helm values 和 Kubernetes 清单(Trivy、Falco、策略) |
| `cloudbuild/` | 构建/部署/解析器的 Cloud Build 配置 |
| `scripts/` | 实用脚本(解析器、sink 检查、策略应用、检查) |
| `exploits/` | 仅限实验室任务环境使用的受控 PoC 场景 |
| `docs/` | 运维手册、架构说明和实施指南 |
## 前置条件
- 已启用计费的 GCP 项目
- `gcloud`、`terraform >= 1.5`、`kubectl`、`helm`
- Python `3.11+`
- 启用了 Actions 的 GitHub 仓库
Windows 注意事项(找不到 `gcloud`):
- 安装 [Google Cloud SDK](https://cloud.google.com/sdk/docs/install-sdk#windows)
- 确保 Cloud SDK 的 `bin` 目录已添加到 `PATH` 环境变量中
- 重新打开终端并使用 `gcloud --version` 验证
## 快速开始
### 1) 配置 Terraform 变量
```
cd terraform
cp terraform.tfvars.example terraform.tfvars
```
在 `terraform.tfvars` 中设置以下值:
- `project_id`
- `github_org`
- `github_repo`
- `tf_state_bucket_name`
### 2) 初始化后端并应用
PowerShell:
```
terraform init "-backend-config=backend.hcl"
terraform apply
```
Bash:
```
terraform init -backend-config=backend.hcl
terraform apply
```
如果您暂时无法使用远程状态:
```
terraform init -backend=false
terraform apply
```
### 3) 连接 kubectl
```
gcloud container clusters get-credentials lab-cluster --zone YOUR_ZONE --project YOUR_PROJECT
```
### 4) 配置 GitHub secrets
使用 Terraform 的输出值:
- `WIF_PROVIDER_LAB`
- `WIF_PROVIDER_PROD`
- `CICD_LAB_SA_EMAIL`
- `CICD_PLAN_SA_EMAIL`
- `CICD_APPLY_SA_EMAIL`
- `DEMO_IMPACT_BUCKET`
同时设置:
- `GCP_PROJECT_ID`
- `TF_STATE_BUCKET`
### 5) 部署安全技术栈
使用文件头中指定的固定 Chart 版本进行部署:
- Trivy Operator
- Falco
- network policies
然后启用 Trivy 压缩日志:
```
bash scripts/configure_trivy_log_compression.sh
```
## 流水线与证据流
### Cloud Build
| 配置 | 结果 |
|--------|---------|
| `cloudbuild/cloudbuild.yaml` | 构建/推送 `lab-ci/ci-deploy` 镜像 |
| `cloudbuild/deploy-gke-apps.yaml` | 部署 Trivy + Falco + NetworkPolicy |
| `cloudbuild/run-trivy-parser.yaml` | 将 sink 中的行解析到 `clean_vulnerabilities` |
### BigQuery 证据
Terraform 会创建一个指向 `trivy_logs` 的托管 Logging sink。
检查 sink 表:
```
python scripts/bq_sink_inspect.py --project YOUR_PROJECT --dataset trivy_logs
```
解析 sink 数据:
```
cd scripts
python parse_trivy_bq.py --project YOUR_PROJECT --dataset trivy_logs --from-sink
```
## 包含的安全场景
- `exploits/container_escape/`:CVE-2022-0492 类别机制(依赖 cgroup 的行为)
- `exploits/master_plane_crash/`:通过大量对象创建进行 API 负载压力测试
- `exploits/github_action_steal/`:CI 上下文中的 WIF 滥用模拟
所有漏洞利用路径仅用于教学目的,且只能在隔离的实验室环境中运行。
## CI 身份模型
- `vulnerable-tf-plan.yml`:由 PR 触发的宽泛实验环境 WIF 路径 -> `cicd-lab-sa`
- `hardened-tf-plan.yml`:向 main 分支推送时触发的严格 WIF 条件 -> `cicd-plan-sa`
- `hardened-tf-apply.yml`:手动受控的仅写入操作 -> `demo-write-proof.txt`
这种划分是为了演示不同的爆炸半径 (blast radius) 而有意设计的。
## 故障排除
- **无法识别 `gcloud` (Windows):** 修复 PATH 并重启终端
- **`get-credentials` 报错 404/403:** 检查准确的 `--zone`/`--region`、IAM 权限以及当前活动项目
- **没有 sink 证据行:** 等待新的扫描作业日志,检查 `stderr_*` 和 `stdout_*`
- **没有 `clean_vulnerabilities` 行:** 运行解析器并验证表/架构访问权限
- **Falco 仅显示内部调试丢弃:** 触发显式测试事件(写入 `/tmp`)并捕获告警日志
## 推荐的 GitHub Topics(项目标签)
添加以下仓库主题以提升可发现性:
- `devsecops`
- `gke`
- `kubernetes-security`
- `terraform`
- `workload-identity-federation`
- `github-actions`
- `cloud-build`
- `falco`
- `trivy`
- `bigquery`
- `cloud-logging`
- `threat-detection`
- `security-lab`
- `red-team`
- `blue-team`
## 文档索引
- `docs/README.md` - 文档索引
- `docs/github_actions_runbook.md` - 端到端 GitHub/GCP 流程
- `docs/logging_pipeline.md` - sink/parser 数据路径
- `docs/architecture_and_stack.md` - 架构详情
- `docs/network-and-data-flow.md` - 网络 / 日志 / BigQuery 流向 (Mermaid)
## 参考链接
- [GKE 安全公告](https://cloud.google.com/kubernetes-engine/security-bulletins)
- [GKE Workload Identity](https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity)
- [Trivy Operator 配置](https://aquasecurity.github.io/trivy-operator/v0.25.0/getting-started/installation/configuration/)
- [CVE-2022-0492 (NVD)](https://nvd.nist.gov/vuln/detail/CVE-2022-0492)
标签:AMSI绕过, APT攻击, BigQuery, Chrome Headless, CISA项目, DevSecOps, ECS, Falco, GCP, GKE, Kubernetes安全, StruQ, Terraform, TGT, Web截图, 上游代理, 威胁检测, 子域名突变, 安全实验室, 安全教育, 容器安全, 攻防演练, 敏感词过滤, 漏洞靶场, 逆向工具, 防御检测