grepstrength/RansomWhere
GitHub: grepstrength/RansomWhere
基于 Terraform/Azure 的即用即弃虚拟机方案,用于安全访问勒索软件泄露站点等高风险页面并在使用后彻底销毁环境。
Stars: 2 | Forks: 0

# RansomWhere?
**保持你的个人基础设施干净!**
构建你自己的可弃用 VM,以安全地访问勒索软件数据泄露站点或潜在的钓鱼页面!即使它被攻破了,威胁行为者(TA)得到的也只是一个一次性的临时机器,只需简单执行一次 `terraform destroy`,TA 就什么都得不到!
## 前置条件
- Terraform >= 1.9,Azure CLI,已通过身份验证的 `az login` 会话
- 用于 Bastion 连接的两个 Azure CLI 扩展(首次运行时会提示安装,或可提前添加):
```
az extension add -n bastion
az extension add -n ssh
```
- 一对 SSH 密钥。生成一个专用的密钥对:
```
ssh-keygen -t ed25519 -C "ransomwhere-lab"
```
将**公钥**内容放入 `terraform.tfvars` 中作为 `ssh_public_key`。
## 配置
- **云平台与 IaC**:Azure,使用 Terraform (azurerm ~> 4.0) 进行配置
- **VM**:单个 Kali 2026.2 VM,规格为 `Standard_D2s_v7`,位于没有公共 IP 的私有子网中
- **出口流量**:NAT 网关(VM 没有公共 IP;仅限出站)
- **访问**:Azure Bastion(**Standard** SKU — Linux RDP 和原生客户端 SSH 隧道所需)
- **浏览器**:Firefox + Tor Browser,两者均通过策略配置了 RansomLook / ransomware.live 聚合器书签。这些聚合器会展示当前的 .onion 泄露站点地址 — 实验环境通过它们进行指引,而不是硬编码那些不断轮换的 .onion 地址。
- **身份验证**:通过 `az login` 使用 Azure(代码中不含任何凭证)。SSH 仅限密钥认证;RDP 密码在首次登录时手动设置(`sudo passwd`),因此它永远不会出现在 Terraform 状态中。
### 本实验环境刻意*不*做的事情
- **不硬编码 .onion 地址**:它们会轮换;聚合器书签才是持久的指向标。
- **无 VPN 层**:访问的间接性来自 Bastion(你永远不会直接访问到该 VM)。出口的匿名性来自 Tor。在你自己的租户中的临时机器上,与 Tor 入口节点通信的 NAT IP 是你在设计上已经接受的暴露风险。
## 已验证的配置
请查看以下来自 Bastion RDP 会话的屏幕截图:

## Terraform 设置
*⚠️ VM 规格的可用性取决于订阅和区域。* 本实验默认使用 `Standard_D2s_v7`。免费层级和基于信用额度的订阅在特定区域通常被限制使用 B 系列和较旧的 D 系列 (v4/v5/v6)。在执行 `apply` 几分钟后,失败的提示看起来会像 `SkuNotAvailable` / `NotAvailableForSubscription`。使用以下命令查找你的订阅实际可以使用的规格:
```
az vm list-skus --location eastus2 --size Standard_D2 --all --output table
```
在 **Restrictions** 列中寻找值为 `None` 的规格(空白/None = 可用)。在 `variables.tf > vm_size` 中进行设置,或者在每次运行时使用 `-var="vm_size=Standard_XXX"` 覆盖它。请选择带有 `s` 后缀的规格 — 因为 OS 磁盘是 Premium_LRS,而不带 `s` 的规格无法挂载高级存储。
*⚠️ 在开发时(2026 年 7 月),最新的 Kali VM 是 `kali-2026-2`。根据你尝试 `apply` 的时间,这可能会过时。*
要获取当前提供的 Kali 镜像,请运行以下命令并获取 SKU 列中的值,然后将其输入到 `variables.tf > kali_sku` 中:
```
az vm image list --publisher kali-linux --offer kali --all --output table
```
运行:
```
terraform init # download providers, one-time setup
terraform fmt # format the .tf files
terraform validate # check syntax and references
terraform apply # build the lab (type yes to confirm)
```
## 部署后设置
在 `apply` 完成后,cloud-init 仍在 VM 内部进行配置(安装 XFCE,获取 Tor Browser,然后重启)。请等待大约 5 分钟左右让其完成,然后再进行连接。
1. 通过 Bastion 使用 SSH 登录(替换为你的密钥路径):
```
az network bastion ssh --name ransomwhere-bastion --resource-group ransomwhere-rg --target-resource-id --auth-type ssh-key --username kali --ssh-key
```
确切的命令会作为 `bastion_ssh_command` 输出显示。
2. 确认配置已完成,然后设置 RDP 密码:
```
cloud-init status --wait # blocks until done
sudo passwd kali
```
3. 通过 RDP 登录(使用 `bastion_rdp_command` 输出的命令),使用第 2 步中的密码进行身份验证。你将进入已安装好两款浏览器和书签的 XFCE 桌面。
### 销毁实验环境
当然,当你使用完毕(**或者你被发现了!!!**),只需运行:
```
terraform destroy
```
## 许可证
MIT,因为所有工作都是你完成的。
标签:ECS, Microsoft Azure, Terraform, 基础架构即代码, 威胁情报, 安全研究环境, 开发者工具