aruxiee/sandunbox
GitHub: aruxiee/sandunbox
一款跨平台 Rust 沙箱隔离审计工具,通过探测系统完整性、命名空间、SECCOMP 过滤和进程令牌等参数来诊断当前环境的隔离边界与逃逸面。
Stars: 0 | Forks: 0
# ⌛ sandunbox:环境完整性诊断套件
一个轻量级、跨平台的 Rust 实用工具,旨在审计沙箱环境隔离和结构边界。它执行一系列广泛的测试,评估宿主机身份、进程权限、运行时缓解措施和容器化边界,从而为环境逃逸映射出配置档案。
⚠️ **请注意:** 本项目严格仅用于**教育和授权的渗透测试**。对于你们可能引发的任何不当行为,我概不负责。
## 🛡️ 技术概述
沙箱和容器隔离执行流以观察行为或节省宿主机基础设施资源。`sandunbox` 通过探测底层系统指标、AT 和内核子系统来测试这些约束。
* **覆盖范围:** 可以针对原生 Win32/NT 安全模型和 Linux namespace 层。
* **诊断:** 测试用于资源分配和操作系统约束的遥测参数。
* **分析:** 避免使用激进的定时或调试陷阱,完全专注于配置可见性。
## 🚀 实现细节
### 🐧 Linux
在 Linux 环境(或 WSL2)中编译。
#### 1. 环境设置
确保你拥有标准的 Rust 工具链。Linux 组件通过 `/proc` 查询原始子系统状态。
```
# 安装 Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# 重新加载 env
source $HOME/.cargo/env
```
#### 2. 编译
导航到 `sandunbox` 根文件夹并构建目标。
```
cd sandunbox
cargo build --release
```
#### 3. 验证
完成后,只需执行二进制文件即可查看你的指标。
**A. 执行:**
运行二进制文件以执行所有 Linux 特定的参数检查。
```
./target/release/sandunbox
```
* **观察:** 查看 network、process、mount 和 user namespace 下的活动哈希上下文,以识别容器边界。
**B. 隔离检查:**
验证二进制文件如何在标准进程过滤下检查 syscall 限制。
```
cat /proc/self/status | grep -i Seccomp
```
* **结果矩阵:** 根据你的输出,返回 `0`(已禁用)、`1`(严格模式)或 `2`(BPF 过滤模式)。
### 🪟 Windows
此版本通过 `windows` crate 与原生安全令牌、进程缓解策略和进程边界进行交互。
#### 1. 环境设置
* **安装 Rust:** 从 [rustup.rs](https://rustup.rs) 下载并配置 `rustup-init.exe`。
* **C++ 构建工具:** 通过 Visual Studio Installer 安装“使用 C++ 的桌面开发”工作负载。
#### 2. 编译
在 `sandunbox` 文件夹中打开终端并进行构建。
```
cd sandunbox
cargo build --release
```
#### 3. 验证
在不同的 shell 权限下执行二进制文件,以观察宿主机令牌架构的变化。
**A. 标准用户 Shell:**
在未提权的 shell 中执行编译后的二进制文件。
```
.\target\release\sandunbox.exe
```
* **预期结果:** 配置文件输出应标记为 `System Integrity Context (SIC): Medium` 且 `UAC registry/file virtualization allowed: YES`。
**B. 提权的管理员 Shell:**
打开管理员 PowerShell 窗口并重新执行。
```
.\target\release\sandunbox.exe
```
* **预期结果:** 输出转变为 `System Integrity Context (SIC): High`,同时 `UAC registry/file virtualization allowed` 降为 `NO`。
## 🧩 规避矩阵
| 诊断项 | 标准宿主机配置 | 虚拟化 / 沙箱目标配置 |
| --- | --- | --- |
| **system integrity context (SIC)** | 通常为 `Medium` 或 `High`。 | 在现代隔离的应用程序沙箱中通常降至 `Low` 或 `Untrusted`。 |
| **host active processor core allocation** | 拥有大量逻辑环境(通常 $\ge$ 4 到 8 个物理或逻辑核心)。 | 资源匮乏的配置(通常限制为 1 或 2 个逻辑实例)。 |
| **system execution time continuity** | 持续的运行时间(可达数千分钟的连续运行)。 | 极少的运行时间(表明是全新的虚拟化启动快照)。 |
| **UAC registry/file virtualization** | 在标准工作区中返回 `YES` 以隔离旧版路径。 | 在高度提权或强化的容器状态下返回 `NO`。 |
| **syscall filtering (SECCOMP)** | 在标准 Linux 机器上通常返回 `0`(已禁用)。 | 切换为 `1` 或 `2`,表示有活动的 BPF 过滤器正在拦截 syscall。 |
## 📊 MITRE
| 战术 | 技术 | ID | 应用 |
| --- | --- | --- | --- |
| **发现** | 系统信息发现 | **T1082** | 查询核心密度、物理 RAM 容量、系统运行时间和硬件资源。 |
| **发现** | 系统网络配置发现 | **T1016** | 捕获系统运行时主机名并检查网络隔离 namespace 以进行配置分析。 |
| **发现** | 进程发现 | **T1057** | 审计父进程约束、活动的 Job Objects 和 PID namespace 参数。 |
| **防御规避** | 滥用提权控制机制 | **T1548** | 分析进程完整性级别、受限令牌、令牌提权状态以及 UAC 文件/注册表虚拟化状态。 |
## 🛠️ 未来改进
* **WMI 端点查询:** 集成 WMI 查询,以在不生成 CLI 子进程的情况下获取主板和 BIOS 序列号配置。
* **动态模块完整性:** 实现对核心系统库的动态验证,以识别用户态 EDR 钩子。
* **扩展 ACPI 表解析:** 读取原始 ACPI 表(`FADT`、`DSDT`)以验证底层裸机硬件来源。
由 Aradhya 用 ❤️ 构建
标签:Rust, Web截图, Web报告查看器, 可视化界面, 容器安全, 沙箱逃逸, 目录遍历, 系统诊断, 网络流量审计, 通知系统