primait/nuvola
GitHub: primait/nuvola
一款借鉴BloodHound思路的AWS云环境安全分析工具,利用图数据库构建云平台数字孪生体,通过图论发现攻击路径和配置缺陷。
Stars: 143 | Forks: 19
>
nuvola(首字母小写 n)是一款用于对 AWS 环境配置和服务进行转储、自动及手动安全分析的工具,它通过使用简单 Yaml 语法定义的预设、可扩展及自定义规则来实现。
该项目背后的核心思想是为云平台创建一个抽象的数字孪生体。更具体地说:nuvola 借鉴了 BloodHound 用于 Active Directory 分析的特性,并将其应用于云环境(目前仅支持 AWS)。
图数据库的使用也极大地增加了发现不同且创新的攻击路径的可能性,并且可以作为一个离线、集中式且轻量级的数字孪生体。
## 快速开始
### 前置条件
- 已安装 `docker-compose`
- 已配置 AWS 账户以通过 `awscli` 使用,且对云资源拥有完全访问权限,最好以 _ReadOnly_(只读)模式运行(策略 `arn:aws:iam::aws:policy/ReadOnlyAccess` 即可满足要求)
### 设置说明
1. 克隆仓库
```
git clone --depth=1 https://github.com/primait/nuvola.git; cd nuvola
```
2. 如有需要,创建并**编辑** `.env` 文件以设置你的数据库用户名/密码/URL
```
cp .env_example .env;
```
如果在 RAM 较低的设备上运行该工具,你可能需要编辑分配给 Neo4j 的内存大小。
3. 启动 Neo4j docker 实例
```
make start-containers
```
4. 构建该工具
```
make build
```
### 用法
1. 首先,你需要转储所有受支持的 AWS 服务配置,并将数据加载到 Neo4j 数据库中:
```
./nuvola dump --aws-profile default_RO --output-dir ~/DumpDumpFolder --output-format zip
```
2. 要将之前执行的转储操作导入到 Neo4j 数据库中:
```
./nuvola assess --import ~/DumpDumpFolder/nuvola-default_RO_20220901.zip
```
3. 仅使用[预设规则集](https://github.com/primait/nuvola/tree/master/assets/rules)对已加载到 Neo4j 数据库中的数据执行静态评估:
```
./nuvola assess
```
4. 或者使用 [Neo4j Browser](https://neo4j.com/docs/operations-manual/current/installation/neo4j-browser/) 手动探索该数字孪生体。

## 常见问题排查
如果你使用的是 `.env_example`,`NEO4J_server_memory_*` 中关于 neo4j 的内存设置可能过大,这会导致 docker 容器因宿主机内存不足而崩溃。删除 `NEO4J_server_memory_*` 相关行将强制 neo4j 根据可用的系统资源来计算这些值([参考](https://neo4j.com/docs/operations-manual/current/configuration/neo4j-conf/#neo4j-conf-JVM))。
## 关于 nuvola
要开始使用 nuvola 并了解其数据库模式,请查阅 nuvola [Wiki](https://github.com/primait/nuvola/wiki)。
任何数据都不会被发送或共享给 Prima Assicurazioni。
## 演讲与展示
- RomHack 2022
- [幻灯片](https://github.com/primait/nuvola/tree/master/assets/slides/RomHack_2022-You_shall_not_PassRole.pdf)
- [演示](https://github.com/primait/nuvola/tree/master/assets/demos/)
- DevSecCon 2024
- [议程](https://www.devseccon.com/events/aws-privilege-escalation-and-lateral-movements)
- [视频](https://www.youtube.com/watch?v=7QXy8lEMqlI)
## 开源许可证
nuvola 使用图论来揭示云环境中可能的攻击路径和安全配置错误。
本程序为自由软件:你可以根据自由软件基金会发布的 GNU 通用公共许可证的条款,对其重新分发和/或修改,许可证适用版本为第 3 版,或(根据你的选择)任何后续版本。
分发本程序的目的是希望它有所用途,但不提供任何保证;也不提供任何适销性或特定用途适用性的默示保证。有关更多详细信息,请参阅 GNU 通用公共许可证。
你应该会随此仓库和程序一起收到一份 GNU 通用公共许可证的副本。如果没有,请访问 http://www.gnu.org/licenses/。