Syvrix/CDK-Sandbox
GitHub: Syvrix/CDK-Sandbox
基于 AWS CDK 的一键式恶意软件分析沙箱,自动化部署安全隔离的云上分析环境。
Stars: 0 | Forks: 0
# AWS CDK 恶意软件分析沙箱
此 CDK 项目创建了一个安全、隔离的 AWS 环境用于恶意软件分析和安全测试,遵循 AWS 安全最佳实践以及 [AWS Security Blog: Malware Analysis on AWS](https://aws.amazon.com/blogs/security/malware-analysis-on-aws-setting-up-a-secure-environment/) 中的指南。
## 安全特性
- **网络隔离**:具有公有/私有子网的专用 VPC
- **安全的客户端连接**:使用 AWS Session Manager 的安全访问点。
- **无公有 IP**:分析实例仅位于私有子网中
- **VPC 端点**:在不暴露到互联网的情况下访问 S3
- **IAM 最小权限**:为 EC2 角色授予最小权限
- **加密**:S3 服务端加密,全面使用 HTTPS
- **日志与监控**:CloudTrail、GuardDuty、CloudWatch 日志
- **访问控制**:严格限制的安全组,分析实例无入站规则
## 架构
- **分析实例**:私有子网中安装了分析工具的 Ubuntu 实例
- **S3 存储桶**:具有访问日志记录的加密、启用版本控制的存储桶
- **VPC**:具有 NAT Gateway 的隔离网络,用于控制出站访问
## 前置条件
- **Node.js (v18+)**:从 https://nodejs.org/ 下载(包含 npm)
- **AWS CLI**:从 https://aws.amazon.com/cli/ 安装
- **AWS CDK CLI**:使用 `npm install -g aws-cdk` 全局安装
- **AWS 账户**:具有对 EC2、VPC、S3、IAM 等的适当权限
### 安装前置条件
#### 1. 安装 Node.js
从 https://nodejs.org/ 下载并安装(建议使用 LTS 版本)。
验证安装:
```
node --version
npm --version
```
#### 2. 安装 AWS CLI
从 https://aws.amazon.com/cli/ 下载并安装。
验证安装:
```
aws --version
```
#### 3. 配置 AWS CLI
配置您的 AWS 凭证:
```
aws configure sso
```
输入您的:
- SSO 会话名称(推荐):my-sso
- SSO 起始 URL [None]:https://my-sso-portal.awsapps.com/start
- SSO 区域 [None]:eu-north-1
- SSO 注册范围 [None]:sso:account:access
- 当被问及 `CLI default output format (json if not specified) [No
ne]:` 时,直接按回车键。
从 2.22.0 版本开始,AWS CLI 默认使用 **Proof Key for Code Exchange (PKCE)** 授权,并且在带有浏览器的设备上必须使用此方式。若要继续使用设备授权,请附加 `--use-device-code` 选项。
```
aws configure sso --use-device-code
```
##### 使用已配置的配置文件登录
```
aws sso login --profile my-aws-profile-name
```
如果您希望每次都使用特定的配置文件而无需输入 --profile,请设置:
```
setx AWS_PROFILE "admin"
```
- 运行 setx 后请重启终端。
#### 4. 安装 AWS CDK
```
npm install -g aws-cdk
```
验证安装:
```
cdk --version
```
## 设置
### 步骤 1:使用 SSO 配置 AWS CLI
按照上述 AWS CLI 前置条件部分设置您的 SSO 配置文件(例如 `sso-admin`)。
### 步骤 2:克隆并配置项目
1. 克隆或导航到此存储库。
2. 将 `.env.example` 复制到 `.env` 并使用您的值进行更新:
cp .env.example .env
Copy-item .\.env.example .\.env
### 步骤 3:安装依赖项
```
npm install
```
### 步骤 4:更新环境变量
使用您的特定值编辑 `.env`:
- `AMI_REGION`:`eu-north-1`(或您所需的区域,必须与 CDK 区域匹配)
### 步骤 5:构建 CDK 项目
将 TypeScript 编译为 JavaScript:
```
npm run build
```
### 步骤 6:引导 CDK 环境(一次性)
设置您的 AWS 配置文件和区域,然后进行引导:
```
$env:AWS_PROFILE='sso-admin'
$env:AWS_REGION='eu-north-1'
cdk bootstrap aws://123456789/eu-north-1 --profile sso-admin
```
将 `123456789` 替换为您从 SSO 设置中获取的 AWS 账户 ID。
检查更改并在提示时输入 `y` 确认。
## 部署
### 步骤 1:合成并部署
生成 CloudFormation 模板:
```
cdk synth
```
如果遇到区域问题,请使用已创建的配置文件运行命令:
```
cdk synth --profile sso-admin
```
### 2. 将沙箱部署到您的 AWS 账户:
```
cdk deploy --profile sso-admin
```
### 步骤 4:获取部署输出
部署完成后,请记下堆栈的输出:
- **AnalysisInstanceId**:私有分析实例 ID
- **AnalysisBucketName**:用于分析文件的 S3 存储桶
- **VpcId**:供参考的 VPC ID
### 步骤 5:不使用时销毁资源:
```
cdk destroy
```
## 使用说明
1. 将文件上传到 S3 存储桶
2. 在 `/home/ubuntu/analysis` 目录中分析文件。
3. 可用的常用工具:
- **ClamAV**:`clamscan ` 用于病毒扫描
- **YARA**:编写规则并使用 `yara ` 进行扫描
- **Tshark**:网络分析
- **Python 工具**:`oletools`、`pefile` 用于文件分析
## 安全注意事项
- 分析实例没有直接的互联网访问权限;如果需要,可通过堡垒主机进行更新。
- 所有流量通过 CloudTrail 和 VPC Flow Logs 记录。
- 启用 GuardDuty 进行威胁检测。
- S3 中的文件均已加密且为私有。
- 分析结束后销毁堆栈,以避免产生费用和暴露风险。
## 监控
- CloudTrail 记录所有 API 调用
- GuardDuty 监控可疑活动
- CloudWatch 记录实例活动
- S3 访问日志跟踪存储桶操作
## 清理
销毁沙箱:
```
cdk destroy
```
## 自定义
- 修改实例类型以获取更多资源。
- 在 user data 中添加其他工具。
- 启用其他 AWS 服务(例如,使用 Lambda 进行自动扫描)。
- 为安全事件添加 CloudWatch 警报。
## 故障排除
### CDK 引导问题
如果 `cdk bootstrap` 失败:
- 确保 AWS 凭证配置正确
- 检查您的账户是否有权创建 CloudFormation 堆栈
- 验证 AWS 配置中的区域是否与您期望部署的区域匹配
### 部署错误
- **找不到 AMI**:将 `.env` 中的 `AMI_REGION` 更新为与您的部署区域匹配
- **Session Manager 访问问题**:确保实例角色具有 SSM 权限,并且 SSM 的 VPC 端点可用
- **IP 限制**:使用您当前的公有 IP 更新 `ALLOWED_IP`
### 权限问题
AWS 账户需要以下权限:
- EC2:完全访问
- VPC:完全访问
- S3:完全访问
- IAM:角色创建
- CloudTrail:完全访问
- GuardDuty:完全访问
- CloudWatch:完全访问
### 成本监控
在 AWS Billing 控制台中监控成本。沙箱包含:
- EC2 实例(堡垒主机 + 分析实例)
- NAT Gateway
- S3 存储
- GuardDuty(可能会产生费用)
**预计 2026 年成本**(估算每年增加 ~5-10%):
- **堡垒主机 EC2 (t3.micro)**:~$0.0114-$0.0124/小时
- **分析实例 EC2 (t3.medium)**:~$0.0458-$0.0498/小时
- **NAT Gateway**:~$0.0495-$0.0539/小时
- **GuardDuty**:~$0.0459-$0.0499/小时
**2026 年预计总成本**:~**$0.15-$0.17/小时**
**每月成本**(如果每天运行 8 小时):2026 年约为 **$36-$40**
**成本优化提示:**
- 不进行分析时**停止实例**:`aws ec2 stop-instances --instance-ids `
- **[使用 Spot 实例](https://aws.amazon.com/ec2/spot/)** 进行分析(修改堆栈以进行 Spot 分配)
- 使用后**销毁堆栈**:`cdk destroy`
- 在 AWS Cost Explorer 中**监控使用情况**
- 为意外成本**设置账单警报**
**注意**:AWS 定价通常每年上涨 2-5%。2026 年的预测是基于历史趋势的估算。请始终在 https://aws.amazon.com/pricing/ 查看当前定价,并使用 AWS Cost Calculator 对您所在区域进行精确估算。
标签:AWS, AWS Session Manager, CDK, CloudTrail, DAST, DPI, EC2, EC2, GuardDuty, IaC, IaC, MITM代理, NAT网关, S3加密, VPC隔离, 云环境隔离, 安全基线, 安全沙箱, 安全测试, 恶意软件分析, 攻击性安全, 教学环境, 最小权限, 私有子网, 网络安全, 自动化攻击, 隐私保护