rudrakshvaidya/File-Security-Suite
GitHub: rudrakshvaidya/File-Security-Suite
一款基于 Python 的双引擎文件完整性监控与二进制签名分析工具,用于检测日志篡改和扩展名伪装攻击。
Stars: 0 | Forks: 0
# File Security Suite (FSS)
**双引擎文件完整性监控器 (FIM) 和二进制签名分析器。**

[](https://www.python.org/)
[](#)
[](#)
[](https://www.gnu.org/licenses/gpl-3.0)
## 目录
1. [项目概述](#1-project-overview)
2. [操作方法](#2-operational-methodology)
3. [安装与设置](#3-installation--setup)
4. [使用指南](#4-usage-guide)
5. [系统架构与组件](#5-system-architecture--components)
6. [测试与验证](#6-testing--validation)
7. [竞争优势](#7-competitive-advantages)
8. [实际应用](#8-real-world-applications)
9. [未来增强](#9-future-enhancements)
10. [参考文献与致谢](#10-references--attribution)
11. [总结](#11-conclusion)
## 1. 项目概述
### 1.1 漏洞态势
在现代计算环境中,恶意行为者通常依赖两种主要技术来维持持久性并绕过防御:
1. **日志篡改:** 更改或删除系统和身份验证日志,以掩盖未经授权的访问或横向移动。
2. **扩展名伪装:** 使用无害的文件扩展名掩盖恶意 payload(例如,将 `.exe` payload 伪装成标准的 `.png` 图像),以欺骗用户和基本的安全过滤器。
### 1.2 FSS 解决方案
File Security Suite 通过双引擎架构直接解决了这些漏洞:
- **加密基线监控:** 计算并安全存储已知良好文件的 SHA-256 哈希值。后续扫描通过突出显示哈希不匹配来检测微小的未经授权的修改、添加或删除。
- **原始二进制检查:** 读取文件的十六进制头部(magic number),以在二进制级别确定其真实格式,无论面向用户的文件名是什么,都能有效中和扩展名伪装攻击。
## 2. 操作方法
该套件依赖两个不同的过程来验证文件完整性和类型准确性。
### 2.1 安全快照(加密哈希)
初始化时,FSS 执行递归目录遍历,提取指定目标路径中的每个文件。
- **分块处理:** 为了防止内存耗尽(例如,在分析多 GB 的服务器日志时),文件以 `4KB` 的块进行读取。
- **SHA-256 计算:** 每个文件生成一个唯一的 256 位加密签名。
- **状态管理:** 这些签名被序列化到离线的 `./baseLines` 目录中的本地 JSON 数据库中,建立“已知良好”的参考状态。
### 2.2 文件签名分析(Magic Numbers)
独立于 FIM 引擎,扫描模块执行深层次的文件验证。
- **头部提取:** FSS 读取目标文件的前 `2048 字节`。
- **十六进制匹配:** 原始二进制数据被转换为十六进制字符串,并与本地存储的已知文件签名(Magic Numbers)静态字典进行交叉比对。
- **异常检测:** 如果一个文件被命名为 `report.pdf`,但具有 Windows 可执行文件的 `4D 5A` 十六进制头部,系统会立即将该差异标记为 `[SUSPICIOUS]`。
## 3. 安装与设置
FSS 使用 Python 标准库设计,以确保最大的可移植性、快速部署和零外部依赖开销。此设计允许其在高度受限的服务器环境中原生运行。
### 3.1 前置条件
| 需求 | 详情 |
| :--- | :--- |
| **Python 版本** | 3.8 或更高版本 |
| **操作系统** | 跨平台 — Windows, macOS, Linux / WSL |
| **依赖项** | 无。仅使用内置模块:`hashlib`, `os`, `sys`, `json`, `argparse` |
### 3.2 部署
克隆仓库并导航到根目录以开始执行。
```
# 1. 克隆仓库
git clone https://github.com/rudrakshvaidya/File-Security-Suite.git
# 2. 导航至项目目录
cd File-Security-Suite
# 3. 验证执行环境
python3 fss.py --help
```
## 4. 使用指南
### 4.1 阶段 1 — 创建安全快照 (`init`)
初始化命令映射目标环境并生成未来 FIM 比较所需的加密基线。
```
python3 fss.py init ./dummy_server
```
**系统操作:**
- **遍历:** 递归映射目标目录树。
- **哈希计算:** 为每个发现的文件计算 SHA-256 数字指纹。
- **序列化:** 将指纹映射保存到本地 `./baseLines/` 目录中的安全 JSON 数据库。
### 4.2 阶段 2 — 执行完整性审计 (`scan`)
scan 命令根据存储的基线审计实时目录结构,同时执行二进制文件类型验证。
```
python3 fss.py scan ./dummy_server
```
**系统操作:**
- **状态比较:** 重新计算实时 SHA-256 哈希,并将其与基线 JSON 交叉比对。
- **签名分析:** 提取每个文件的前 2048 字节,以针对文件扩展名验证 magic number。
- **独立执行:** 如果基线数据库不存在,FIM 引擎会优雅地分离,FSS 会独立执行 Magic Number 分析。
### 4.3 输出状态定义
在扫描期间,FSS 将实时警报状态流式传输到 `stdout`。系统将文件状态分类为五个不同的指示器:
| 状态指示器 | 威胁级别 | 定义与触发条件 |
| :--- | :---: | :--- |
| **`[OK]`** | 🟢 无 | 实时文件哈希与基线完全匹配。未检测到篡改。 |
| **`[NEW]`** | 🟡 低 / 中 | 该文件存在于实时目录中,但不在基线中。表明发生了未经授权的文件投放。 |
| **`[DELETED]`** | 🟠 中 | 该文件已在基线中注册,但在实时环境中缺失。 |
| **`[MODIFIED]`** | 🔴 高 | 该文件存在于基线中,但实时的 SHA-256 哈希不同。内容已被恶意或意外更改。 |
| **`[SUSPICIOUS]`** | 🚨 严重 | 文件的二进制头部(magic number)与其声明的文件扩展名相矛盾(例如,伪装为 `.png` 的可执行文件)。 |
## 5. 系统架构与组件
FSS 采用模块化架构设计,将命令行路由、加密处理和二进制分析分离为独立的、可单独维护的文件。
### 5.1 模块细分
| 模块 | 角色 | 职责 |
| :--- | :--- | :--- |
| `fss.py` | **核心路由器** | 通过 `argparse` 解析 CLI 参数,处理用户提示,并根据 `init` 或 `scan` 命令将执行路由到子模块。 |
| `hasher.py` | **加密引擎** | 使用 `4KB` 基于生成器的模式生成 SHA-256 哈希,确保任何大小的文件都能保持稳定的 `O(1)` 内存消耗。 |
| `scanner.py` | **二进制分析器** | 包含 `MAGIC_NUMBERS` 字典。以 `rb` 模式打开文件,提取前导十六进制字节,并与包含完整权限错误处理的已知签名进行交叉比对。 |
| `database.py` | **状态管理器** | 将 FIM 字典序列化和反序列化到结构化的 JSON 基线文件/从结构化的 JSON 基线文件反序列化,使用支持 UTF-8 的 I/O 管理 `./baseLines/` 目录。 |
### 5.2 执行流程 (UML)
```
graph TD
A[User executes: fss scan target] --> B{Does target exist?}
B -- No --> C[Throw Error & Exit]
B -- Yes --> D[database.py: Load JSON Baseline]
D --> E{Baseline Found?}
E -- No --> F[Bypass FIM Engine]
E -- Yes --> G[Load baseline dictionary into memory]
F --> H[scanner.py: Extract Magic Numbers]
G --> H
H --> I{Are files in directory?}
I -- Iterating --> J[hasher.py: Compute Live SHA-256]
J --> K{Compare Live Hash vs Baseline}
K -- Match --> L((Output: OK))
K -- Mismatch --> M((Output: MODIFIED))
K -- Not in Baseline --> N((Output: NEW))
L --> O[scanner.py: Compare Extension vs Header]
M --> O
N --> O
O -- Mismatch --> P((Output: SUSPICIOUS))
```
### 5.3 数据流图 (DFD)
下图说明了在 `init` 和 `scan` 阶段,数据如何在用户、CLI 路由器、加密引擎、二进制扫描器和基线状态存储之间流动。

## 6. 测试与验证
### 6.1 标准完整性验证
核心引擎保证以下状态转换的确定性输出:
#### 内容变异 → `[MODIFIED]`
通过向现有被跟踪文件追加单个字节来验证。实时的 SHA-256 哈希与存储的基线产生差异,从而触发立即的 `[MODIFIED]` 标志。

#### 未经授权的文件投放 → `[NEW]`
通过将以前未跟踪的文件引入受监控的目录来验证。FSS 检测到其不在基线中并发出 `[NEW]` 警报。

#### 文件删除 → `[DELETED]`
通过删除在基线快照中注册的文件来验证。FSS 检测到缺失的条目并发出 `[DELETED]` 警报。

#### 扩展名伪装
通过重命名 `PDF` 文件使其带有 `.png` 扩展名来验证。Magic number(`25 50 44 46`)与 `.png` 扩展名签名相矛盾。

### 6.2 压力测试与边缘情况
该架构旨在以下恶劣或密集的环境中实现故障安全并保持执行连续性:
#### 内存耗尽测试
**目标:** `2GB` 零字节 `.img` 文件 | **限制:** `< 50MB` 可用系统 RAM
`hasher.py` 模块使用生成器模式,以 `4096 字节` 的块读取文件。无论目标文件大小如何,内存占用严格保持 `O(1)`。

#### 访问违规测试
**目标:** 剥离了 UNIX 权限(`chmod 000`)的 `secret.log`
`scanner.py` 引擎优雅地捕获 `PermissionError`(Errno 13),记录本地化警告,并继续审计循环,而不会触发致命的应用程序崩溃。

#### 完整边缘情况矩阵
| 向量 | 测试方法 | 结果 |
| :--- | :--- | :---: |
| **内存耗尽** | RAM 小于 50MB 下的 2GB `.img` 文件 | ✅ 通过 |
| **I/O 颠簸** | `10,000+` 动态生成的 `.txt` 文件 | ✅ 通过 |
| **访问违规** | `chmod 000` 权限剥离的文件 | ✅ 通过 |
| **编码失败** | 带有表情符号和特殊字符的文件路径(`weird 📁 file --!@#.txt`) | ✅ 通过 |
## 7. 竞争优势
与传统的单体安全工具不同,FSS 针对现代、受限和高速度的环境进行了优化。
- **双层启发式:** 传统的 FIM 仅依赖于哈希,使其对带有伪装扩展名的新未跟踪文件视而不见。FSS 将加密跟踪与原始二进制分析相结合,同时中和了扩展名伪装的恶意软件 payload。
- **零依赖可移植性:** 完全基于 Python 标准库构建。FSS 可以通过安全的 `SCP` 部署到离线服务器、IoT 设备或受限的 CI/CD 管道,而无需 `pip install`、虚拟环境或外部 C++ 编译器。
- **恒定空间复杂度:** 通过放弃简单的 `file.read()` 方法转而使用 `4KB` 分块处理,FSS 可以在仅有 512MB RAM 的服务器上计算 50GB 数据库备份的加密哈希。
- **去中心化状态管理:** FSS 不需要运行守护进程、后台服务或 SQL 数据库。基线状态被完全序列化到一个可移植、可审计且易于备份的 JSON 文件中。
## 8. 实际应用
FSS 旨在直接集成到操作安全工作流和 DevOps 管道中。
### 8.1 服务器日志防篡改(违规后检测)
当恶意行为者破坏服务器时,他们的直接目标是通过更改 `/var/log/auth.log` 或 `/var/log/syslog` 来进行横向移动并掩盖痕迹。通过在日志目录上建立 FSS 基线,管理员可以运行预定的 Cron 作业来检测逃避标准入侵检测系统的日志擦除尝试。
### 8.2 摄取管道净化
接受用户上传文件(简历、头像、发票)的应用程序极易受到伪装成无害文档的恶意 payload 的攻击。将 FSS 作为摄取管道中的预检步骤实施,允许后端读取传入文件的 Magic Numbers,从而立即拒绝伪装为 `profile_pic.png` 的编译型可执行文件。
### 8.3 CI/CD 制品验证
供应链攻击通常涉及在部署之前将恶意代码注入编译后的二进制文件中。FSS 可以作为 Jenkins 或 GitHub Actions 中的最终构建步骤触发,快照发布目录,确保推送到生产环境的制品在数学上与测试的构建相匹配。
## 9. 未来增强
FSS 正在积极开发中。架构路线图包括多个旨在为分布式环境扩展实用性的企业级扩展:
| 增强功能 | 描述 |
| :--- | :--- |
| **守护进程化与调度** | 转换为后台 `systemd` 服务,以进行自动、连续的完整性轮询,而无需手动执行 CLI。 |
| **SIEM 遥测集成** | 实施 Syslog 和 CEF payload 生成,以将 `[MODIFIED]` 和 `[SUSPICIOUS]` 触发器转发到 Splunk、Datadog 或类似的 SIEM 仪表板。 |
| **远程状态管理** | 抽象 `./baseLines/` 存储,通过 IAM 角色身份验证将 JSON 状态数组读取/写入不可变的云存储桶(例如,AWS S3)。 |
| **并行执行管道** | 重构 `os.walk()` 循环以使用 `concurrent.futures.ThreadPoolExecutor`,跨多核处理器实现并行化 SHA-256 哈希计算。 |
## 10. 参考文献与致谢
### 10.1 文件签名(Magic Numbers)数据库
`scanner.py` 用于深层文件格式验证的原始十六进制签名直接来源于 Gary C. Kessler 维护的公共数据库。该数据原封不动地集成。
### 10.2 核心技术
| 模块 | 用途 |
| :--- | :--- |
| `hashlib` | SHA-256 加密哈希 |
| `json` | 基线状态序列化 |
| `os` / `sys` | 文件系统遍历和 I/O 操作 |
| `argparse` | CLI 参数路由 |
## 11. 总结
File Security Suite (FSS) 弥补了基本加密完整性监控与原始二进制异常检测之间的操作差距。通过将高效的 SHA-256 分块引擎与零依赖的 magic number 扫描器相结合,FSS 为抵御日志篡改、证据销毁和扩展名伪装的恶意软件注入提供了轻量级、故障安全的防御。它旨在快速部署、在严峻的系统限制下确定性地执行,并对其审计的环境保持绝对的完整性。
## 许可证
版权所有 (C) 2026 Rudraksh Vaidya — 根据 [GPL v3](LICENSE) 授权。
使用 Python 标准库构建 · 零外部依赖 · 跨平台
标签:AMSI绕过, DNS 解析, Python安全工具, SHA-256哈希, 二进制签名分析, 威胁检测, 子域名变形, 异常检测, 扩展名伪造检测, 文件安全套件, 日志防篡改, 终端安全, 逆向工具, 魔数(Magic Number)分析