yasindce1998/Barzakh
GitHub: yasindce1998/Barzakh
该项目是一个受控的白帽 UEFI bootkit 模拟研究平台,用于复现真实固件威胁并为防御性检测工程提供遥测数据与检测引擎验证。
Stars: 3 | Forks: 0
# Project Barzakh
**⚠️ 学术研究项目 - 仅供防御性安全研究使用 ⚠️**
一个可用于生产环境的 UEFI bootkit 研究平台,用于研究固件级安全威胁与防御。
## ⚖️ 法律与道德声明
本项目在机构监督下**严格出于学术研究目的**开发:
- ✅ 仅可在物理隔离的虚拟化环境中运行
- ✅ 包含多个基于硬件的熔断机制,防止未经授权的执行
- ❌ 严禁用于武器化、部署或任何恶意用途
- ❌ 违反这些限制可能会引起法律后果
**访问此代码库即表示您同意仅将其用于合法的安全研究和教育目的。**
## 📋 项目概述
Barzakh 安全地模拟了已知野外 bootkit 的战术、技术和程序 (TTPs),旨在:
- 针对 UEFI 执行篡改,验证 Measured Boot 的完整性
- 开发稳健的检测能力
- 产出关于防御方法的同行评审学术研究
### 参考威胁对象
- **BlackLotus** (CVE-2023-24932):通过易受攻击的 bootloader 绕过 Secure Boot
- **CosmicStrand/FinSpy**:通过植入 DXE 驱动实现固件持久化
- **Lojax**:在 SPI flash 中持久化,即使重装 OS 也能存活
## 🏗️ 架构
```
┌─────────────────────────────────────────────────────────────┐
│ Firmware (SEC/PEI) → DXE Phase → Barzakhkit Hooks │
│ → Boot Device Selection → OS Bootloader │
│ → ExitBootServices Intercept → TPM Attestation │
│ → OS Kernel (Infection Complete) │
└─────────────────────────────────────────────────────────────┘
```
### 核心组件
1. **BootkitPkg**(攻击性模拟)
- DXE 阶段驱动注入
- Boot Services 表 hooking
- ExitBootServices 拦截
- 用于隐身模拟的 MSR hooking
2. **AttestationPkg**(防御性遥测)
- TPM PCR 查询 [0, 2, 4, 7]
- TCG Event Log 提取
- 真实数据生成
3. **BarzakhScanner**(检测引擎)
- Bootkit 伪造物检测
- 目标:≥85% TPR,<5% FPR
- ROC-AUC ≥0.92
## 🔒 安全保障
### 基于硬件的熔断机制
- **UUID 绑定**:通过加密方式绑定到白名单 SMBIOS UUID
- **TPM EK 锁定**:绑定到特定的 TPM Endorsement Keys
- **定时炸弹**:强制执行硬编码的到期日期
- **物理隔离**:测试环境无网络连接
### 运营安全
- 仅限使用 QEMU + OVMF 虚拟化(不可在裸机上运行)
- 仅可追加的 GPG 签名审计日志
- AES-256 加密的冷存储
- 代码库中不包含预编译的二进制文件
- 所有 commit 必须经过 GPG 签名
## 🛠️ 技术栈
| 组件 | 技术 |
|-----------|-----------|
| 开发套件 | EDK II (UEFI Development Kit) |
| 编程语言 | C11 (EDK II), Python 3 |
| 虚拟化 | QEMU + KVM + OVMF |
| 安全模块 | TPM 2.0 (swtpm) |
| 客户机 OS | Windows 10/11, Ubuntu Linux |
## 📁 代码库结构
```
barzakh/
├── docs/
│ ├── SETUP.md # Environment setup guide
│ ├── ARCHITECTURE.md # Technical architecture
│ └── TESTING.md # Testing strategy
├── src/
│ ├── BootkitPkg/ # UEFI bootkit emulation
│ │ ├── DxeInject/ # DXE phase injection + kill-switches
│ │ └── ExitBootHook/ # ExitBootServices interception
│ ├── AttestationPkg/ # TPM attestation & telemetry
│ │ ├── TpmAttestation/ # PCR monitoring
│ │ └── EventLogExtractor/ # TCG event log parsing
│ └── BarzakhScanner/ # Detection engine (Python)
│ ├── scanner.py # Main scanner
│ ├── detectors/ # Detection modules
│ └── reports/ # Report generation
├── scripts/
│ ├── build.sh # EDK II compilation
│ ├── qemu-run.sh # QEMU test harness with vTPM
│ ├── nvram-recovery.py # NVRAM backup/restore
│ ├── audit-log.sh # GPG-signed audit logging
│ └── validate-environment.sh # Pre-flight checks
├── tests/ # Test suite
│ ├── unit/ # Unit tests
│ ├── integration/ # Integration tests
│ └── corpus/ # Test corpus samples
├── .github/workflows/ # CI/CD pipeline
├── CONTRIBUTING.md
└── SECURITY.md
```
## 🚀 快速开始
### 前置条件
1. **硬件要求**
- 物理隔离的实验室环境或独立的 VLAN
- 配备 TPM 2.0 的专用测试机器
- 最低 16GB RAM,100GB 存储空间
2. **软件要求**
- Linux 主机(推荐 Ubuntu 22.04+)
- QEMU 7.0+ 及 KVM 支持
- EDK II 开发环境
- swtpm (软件 TPM 模拟器)
- Python 3.10+
- GCC 11+ 或 Clang 14+
### 环境设置
1. **克隆 EDK II 及其依赖项**
# 详细说明请参见 docs/SETUP.md
git clone https://github.com/tianocore/edk2.git
cd edk2
git checkout edk2-stable202405 # 固定版本
git submodule update --init --recursive
2. **构建 OVMF**
# 配置 EDK II 环境
source edksetup.sh
# 构建 支持 TPM 的 OVMF
build -a X64 -t GCC5 -p OvmfPkg/OvmfPkgX64.dsc -D TPM2_ENABLE=TRUE
3. **设置 Barzakh**
cd /path/to/barzakh
# 配置环境变量
export WORKSPACE=/path/to/edk2
export PACKAGES_PATH=$WORKSPACE:$(pwd)/src
# 运行预检查
./scripts/validate-environment.sh
## 🧪 用法
### 构建 Bootkit(仅供研究)
```
# 构建所有 UEFI 包
./scripts/build.sh
# 这将创建:
# - BootkitPkg DXE 驱动程序
# - AttestationPkg 模块
# - 带有 SBOM 的签名产物
```
### 在测试环境中运行
```
# 使用 vTPM 和 bootkit 启动 QEMU
./scripts/qemu-run.sh
# 特性:
# - Air-gap 执行
# - vTPM 集成
# - 审计日志
# - NVRAM 快照
```
### 使用 BarzakhScanner
```
# 扫描固件/内存转储
cd src/BarzakhScanner
python scanner.py --target /path/to/firmware.bin --report --output report.html
# 通过基线比较
python scanner.py --target firmware.bin --baseline baseline.json --report
# 针对测试语料库进行验证
python scanner.py --validate --corpus /path/to/corpus
```
### 运行测试
```
# 运行所有测试
cd tests
python run_tests.py --coverage
# 运行特定测试套件
python run_tests.py --unit # Unit tests only
python run_tests.py --integration # Integration tests only
python run_tests.py --corpus # Corpus validation
```
## 📊 检测目标
| 指标 | 目标 |
|--------|--------|
| True Positive Rate (TPR) | ≥85% |
| False Positive Rate (FPR) | <5% |
| ROC-AUC | ≥0.92 |
| 平均检测时间 | <500ms |
## 📝 文档
- [`docs/SETUP.md`](docs/SETUP.md) - 环境设置说明
- [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) - 系统架构
- [`docs/TESTING.md`](docs/TESTING.md) - 测试策略
- [`src/BarzakhScanner/README.md`](src/BarzakhScanner/README.md) - Scanner 文档
- [`tests/README.md`](tests/README.md) - 测试套件指南
- [`CONTRIBUTING.md`](CONTRIBUTING.md) - 贡献指南
- [`SECURITY.md`](SECURITY.md) - 安全策略
## 📜 许可证
本项目在限制性学术研究许可证下发布。详情请参阅 [`LICENSE`](LICENSE)。
**主要限制:**
- 仅限学术和教育用途
- 禁止商业用途
- 严禁用于武器化或恶意部署
- 必须保留所有安全机制
- 必须遵守机构监督
## 🔐 负责任的漏洞披露
如果您在研究过程中发现新漏洞:
1. **立即禁运** - 请勿公开披露
2. 在 24 小时内**通知首席研究员**
3. 向受影响的供应商进行 **90 天的协同披露**
4. 完整流程请参阅 [`SECURITY.md`](SECURITY.md)
## 📞 联系方式
**首席研究员:** Yasin
**机构:** Dead Lock Corp
**电子邮件:** yasindce1998@gmail.com
**漏洞报告邮箱:** security@deadlockcorp.edu
## ⚠️ 免责声明
此软件仅提供用于学术研究目的。作者及其所属机构:
- 不对其是否适合任何特定目的作出任何保证
- 对滥用或未经授权的部署不承担任何责任
- 要求严格遵守机构监督和法律框架
- 保留因违反政策而终止访问的权利
**使用风险自负。未经授权的使用可能违反法律。**
## 🎓 研究贡献
本项目模拟了现实世界中的威胁,包括 BlackLotus (CVE-2023-24932)、CosmicStrand、LoJax、MoonBounce 和 MosaicRegressor。主要研究贡献:
- 用于 TPM 认证验证的 PCR 重放算法
- 基于 FV 的检测以减少误报
- 用于 bootkit 研究的自动化 CI/CD pipeline
- 使用测试语料库进行真实数据验证框架
标签:Bootkit, UEFI, 固件安全, 漏洞靶场, 身份验证强制, 防御检测