Kamalhas2005/cdr-forensic-platform
GitHub: Kamalhas2005/cdr-forensic-platform
一个基于内容解除与重构(CDR)技术的文档安全分析平台,能够对PDF和OOXML文件进行静态分析、威胁净化和IOC提取,并提供可视化取证仪表盘。
Stars: 0 | Forks: 0
# 🛡 CDR Forensic Platform

一个基于**内容解除与重构**的取证系统,用于检测、分析和消除 **PDF 和 OOXML 文档(PPT、DOCX、XLSX)** 中的威胁。
本平台执行**静态分析、IOC 提取和安全净化**,同时提供用于**调查和报告的取证仪表盘**。
# 📌 1. 系统实际功能
本系统:
- 扫描上传的文档以查找**主动和被动威胁**
- 提取:
- 外部 URL
- 域名
- IP 地址
- 移除:
- JavaScript
- 嵌入对象
- 外部关系
- 危险的 PDF 操作
- 生成:
- 净化后的文件
- 威胁日志
- 风险分类
- 在**取证仪表盘**中显示所有信息
👉 所有处理均**基于非执行(安全分析)**
## 📂 项目结构
项目由用于处理、存储和可视化的逻辑组件构成:
```
cdr-forensic-platform/
│
├── app.py # Main Flask application (routes + UI rendering)
├── db.py # Database schema, tables, and views
├── sanitizer.py # Core CDR engine (PDF + OOXML processing)
│
├── requirements.txt # Python dependencies
├── README.md # Project documentation
├── .gitignore # Ignored files
│
├── data/ # Runtime-generated directory
│ ├── uploads/ # Original uploaded files
│ ├── sanitized/ # Sanitized output files
│ └── db/
│ └── cdr.db # SQLite database
│
├── graphs/ # Generated analytical graphs (matplotlib output)
│ ├── attack_surface_decline.png
│ └── threat_neutralization.png
```
### 🔹 注意事项
- `data/` 文件夹**在运行时自动创建**
- `graphs/` 文件夹存储生成的可视化输出
- 这些目录无需手动设置
# 📌 2. 内部工作原理(基于代码逻辑)
## 🔹 文件处理流程
1. 文件上传 → 保存至 `data/uploads`
2. 计算 SHA256 → 避免重复扫描
3. 从原始字节进行 IOC 提取(URL + IP 正则表达式)
4. 应用威胁评分:
- JavaScript → 高
- 嵌入对象 → 高
- 链接 → 中
5. 净化:
- PDF → pikepdf 对象移除
- OOXML → ZIP 提取 + XML 清理
6. 干净文件保存至 `data/sanitized`
7. 数据存储于:
- `scans` 表
- `detections` 表
8. 仪表盘从 **`cdr_logs` 视图(聚合)** 读取数据
# 📌 3. 仪表盘(详细说明)
## 🔹 主仪表盘 (`/`)
### 📊 顶部统计部分
- **Total Scans** → 显示的记录数
- **Threat Types** → 独特的检测类型
- **High Risk** → 高风险文件数量

## 🔹 搜索系统
- 使用 SQL:
```
WHERE original_filename LIKE '%search%'
```
- 支持分页

## 🔹 上传部分
支持 3 种模式:
| 类型 | 路由 |
| ------------- | ---------------- |
| PDF 上传 | `/upload` |
| 文件夹上传 | `/upload-folder` |
| PPT / OOXML | `/upload-ppt` |

## 🔹 扫描表格(核心组件)
每行数据均来自 `cdr_logs` 视图:
| 列名 | 含义 |
| ------- | -------------------------- |
| ID | Scan ID |
| File | 原始文件 |
| Threats | 聚合的检测类型 |
| Action | FOUND / REMOVED |
| Risk | LOW / MEDIUM / HIGH |
| Time | 扫描时间戳 |
## 
## 🔹 批量删除
- 每行带有复选框
- 删除:
- 磁盘上的文件
- 数据库条目(scans + detections)

## 🔹 分页
- 每页 10 行
- 使用:
```
LIMIT ? OFFSET ?
```

# 📌 4. 扫描详情页 (`/scan/`)
显示:
- 文件名
- 风险等级
- SHA256 哈希值
- 总分
- 详细检测:
| 项目 | 位置 | 原因 | 分数 | 操作 |

# 📌 5. 分割视图(仅限 PDF)
路由:`/split/`
显示:
- 左侧 → 原始 PDF
- 右侧 → 净化后的 PDF

# 📌 6. IOC 仪表盘 (`/ioc`)
提取自:
- `domains`
- `ips`
使用聚合显示频率计数
## 
# 📌 7. 评估报告 (`/evaluation`)
基于检测逻辑:
- **Before CDR** = Found + Removed
- **After CDR** = Found
- **CDR Effectiveness** = Removed / Total
同时显示:
- IOC 数量
- 最终风险
- 投递决策:
- TRUSTED
- CAUTION
- BLOCKED

# 📌 8. 交叉评估 (`/cross-evaluation`)
将您的系统与**业界 CDR 行为**进行比较
示例:
- 宏移除 ✔
- JS 移除 ✔
- 嵌入对象移除 ✔

## 📊 9. 基于图表的分析 (`/decline`)
平台使用服务器端绘图生成**可视化取证洞察**。
为每次扫描序列生成两张分析图表:
### 🔹 攻击面缩减
- 比较:
- **净化前**的威胁对象总数
- **净化后**剩余的非可执行指标
- 展示 CDR 如何减少可利用内容,同时保留取证可见性
### 🔹 威胁检测与消除
- 显示:
- 检测到的威胁数量
- 成功移除的威胁数量
- 验证净化引擎的有效性
这些图表:
- 使用 **matplotlib** 动态生成
- 存储为图像文件
- 可用于**下载和报告**


## 📤 10. 数据导出
系统提供用于外部分析的结构化导出功能。
### 可用的导出端点
- `/export`
→ 导出完整的扫描日志
- `/evaluation/download`
→ 导出带有 CDR 指标的评估报告
### 导出的数据包括
- 文件元数据
- 检测到的威胁
- 采取的操作(FOUND / REMOVED)
- 风险分类
- CDR 有效性指标
👉 输出格式:**CSV(可用于分析)**
## 
## ⚙️ 11. 安装与使用
按照以下步骤在本地运行项目。
### 🔹 克隆仓库
```
git clone https://github.com/Kamalhas2005/cdr-forensic-platform.git
cd cdr-forensic-platform
```
### 🔹 创建虚拟环境
```
python -m venv .venv
```
激活环境:
```
.\.venv\Scripts\activate
```
### 🔹 安装依赖
```
python -m pip install -r requirements.txt
```
### 🔹 运行应用
```
python app.py
```
### 🔹 访问仪表盘
```
http://127.0.0.1:5000
```
## 📊 数据集与测试环境
本项目使用公开可用的文档样本和受控测试环境进行了评估。
- 样本文件(PDF 和 OOXML 格式)来源于 Kaggle 上可用的数据集
- 分析了大约 **80–90 个文件**,以验证系统在多种威胁场景下的行为
- 测试在基于 **VMware 的隔离环境**中进行,以确保安全处理潜在的恶意文档
此设置允许进行受控实验,包括:
- 嵌入对象
- 外部链接和 IOC
- 基于脚本的威胁
- 文档结构操纵
👉 确保**安全性**和**逼真的威胁评估**
## 📁 12. 运行时目录结构
系统动态创建以下结构:
```
data/
├── uploads/ # Original uploaded files
├── sanitized/ # Cleaned output files
├── db/ # SQLite database (cdr.db)
```
- 所有路径均为**可移植且独立于环境**
- 未使用硬编码的系统路径
## 🔐 13. 安全设计原则
本平台遵循**安全分析与重构原则**:
- **无文件执行** — 所有分析均为静态
- **内容解除方法** — 移除风险元素,而不仅仅是检测
- **URL 防护** — 防止与恶意链接发生意外交互
- **证据保留** — 保留非可执行指标以供取证使用
- **零日弹性** — 不依赖于基于签名的检测
## 💡 14. 核心优势
本项目展示了以下多方面的结合:
- **安全工程**
→ 威胁检测 + 净化 pipeline
- **数字取证 (DFIR)**
→ IOC 提取 + 结构化证据记录
- **后端系统设计**
→ 带有聚合视图的数据库驱动架构
- **可扩展的仪表盘设计**
→ 搜索、分页和批量操作
- **多格式处理**
→ 同时支持 PDF 和 OOXML 格式
## 🚧 15. 未来改进
针对生产级部署的潜在扩展方向:
- 🔐 用户身份验证和访问控制
- ☁️ 云端部署(SaaS 模式)
- 🤖 基于机器学习的威胁分类
- 🌐 用于与其他系统集成的 REST API
- 📊 高级分析和报告
## 👨💻 作者
**Kamalhas Chikudu**
🔗 https://github.com/Kamalhas2005
## ⭐ 最终说明
本项目演示了以下方面的实际应用:
- 内容解除与重构 (CDR)
- 安全文档处理
- 取证数据分析
如果您觉得这个项目有用,请考虑 ⭐ 收藏本仓库。
标签:AMSI绕过, CDR, DAST, DFIR, Flask, Go语言工具, IOC提取, OOXML安全, PDF安全, Python, SQLite, 云安全监控, 仪表盘, 内容解除与重构, 威胁检测, 威胁消除, 安全分析平台, 安全防护, 安全面板, 恶意文档检测, 恶意软件分析, 数字取证, 文件消毒, 无后门, 溯源追踪, 漏洞分析, 网络威胁情报, 自动化脚本, 路径探测, 逆向工具, 静态分析, 风险分类