likhith-h-l/Basic-Antivirus-Simulation
GitHub: likhith-h-l/Basic-Antivirus-Simulation
一款基于Python和CustomTkinter的桌面杀毒软件模拟应用,用于演示特征码匹配扫描和文件完整性监控的安全防护机制。
Stars: 2 | Forks: 0
# 基础杀毒软件模拟
这是一款现代、专业的桌面应用程序,用于模拟基于特征码的杀毒扫描和文件完整性监控(FIM)。受 Microsoft Defender 和 CrowdStrike Falcon 等行业标准的启发,该模拟程序提供了一个功能齐全的图形化用户仪表板,并结合后台自动化功能来保护模拟测试环境。
## 项目概述
在网络安全领域,**基于特征码的杀毒软件** 解决方案通过将文件独特的结构特征(其加密指纹)与已知威胁特征码数据库进行比对来识别恶意软件。如果文件的哈希值与特征码数据库中的条目匹配,则会被标记为威胁。
该项目实现了一个完整的流水线来演示这些概念,包括 SHA-256 指纹生成、特征码匹配、自动化威胁隔离(隔离区)、历史日志跟踪、文件完整性校验(基线建立)以及可视化报告。
## 目标
本模拟的目标是在模拟目标环境(`test_files/`)中演示安全防护机制。它通过以下方式实现:
1. **扫描目录:** 递归读取目标文件夹。
2. **生成加密指纹:** 安全地计算文件的 SHA-256 哈希值。
3. **数据库查询:** 将计算出的哈希值与已知威胁哈希值的平面文件数据库进行交叉比对。
4. **威胁隔离(隔离区):** 自动将受感染的项目移动到安全文件夹中,以防止其被进一步执行。
5. **FIM 完整性检查:** 根据可信的基线快照,跟踪未经授权的文件创建、删除或修改行为。
6. **信息日志记录:** 保存扫描历史记录并生成审计报告。
## 功能
- **SHA-256 加密哈希:** 以 64KB 块读取目标文件,生成安全且内存高效的 SHA-256 特征码。
- **恶意软件特征码数据库:** 这是一个仅包含哈希值的特征码文件,会自动忽略注释、空格或无效键。
- **威胁检测引擎:** 即时将文件特征码与数据库进行交叉比对。
- **自动隔离:** 使用 `shutil.move` 自动将恶意文件重新定位到隔离文件夹,并具有完善的冲突处理机制。
- **扫描历史记录:** 将结果和指标日志保存到带有时间戳条目的 JSON 数据库中。
- **专业报告生成器:** 为每次扫描和完整性运行输出详细的 txt 日志。
- **文件完整性监控(FIM):** 将实际文件与 JSON 基线进行比对,报告新建、修改或删除的文件。
- **现代 CustomTkinter GUI 仪表板:** 采用深色石板响应式界面(`1400x800`),具有以下特点:
- 指标摘要卡片
- 动态系统健康指示器
- 实时进度条动画
- 多线程操作保持界面高度响应
- 内联报告查看器和历史日志布局
## 项目架构
- **`scanner.py`**: 实现了 SHA-256 哈希计算、特征码加载、恶意软件扫描操作、自动隔离移动以及历史日志记录的后端引擎。
- **`integrity_monitor.py`**: 实现文件完整性监控(FIM)后端,管理可信基线生成和差异扫描。
- **`gui.py`**: 统筹模拟过程的 CustomTkinter 图形化仪表板。它在后台工作线程上异步启动后端操作。
- **`malware_signatures.txt`**: 包含已知恶意文件 SHA-256 哈希值的特征码数据库。
- **`scan_history.json`**: 用于增量存储随时间变化的扫描指标(总文件数、安全文件数、威胁数、已隔离数)的日志记录。
- **`baseline.json`**: 包含可信文件路径、哈希值和基线生成时间戳的目标目录的可信数据库快照。
- **`reports/`**: 所有生成的扫描和完整性日志的目标目录。
- **`quarantine/`**: 安全隔离检测到的恶意文件的目标目录。
- **`test_files/`**: 作为模拟用户环境的目标目录,包含干净和可疑的文件。
## 使用技术
- **Python:** 核心脚本语言。
- **CustomTkinter:** 基于 Tkinter 构建的现代 UI 设计包。
- **JSON:** 用于基线快照和历史扫描日志的格式化和存储。
- **SHA-256 加密哈希:** 用于唯一标识文件内容。
- **Python 子进程与线程:** 用于异步执行后端模块,防止 GUI 锁死。
- **文件处理与标准库:** 使用 (`shutil`, `os`, `hashlib`, `sys`, `datetime`) 进行文件系统操作。
## 安装
1. **克隆或下载项目:**
下载源码文件夹并确保将其放置在:
D:\Basic_Antivirus_Simulation_V2
2. **导航至项目文件夹:**
打开终端(例如 PowerShell)并切换目录:
cd D:\Basic_Antivirus_Simulation_V2
3. **安装依赖项:**
项目已捆绑或可配置虚拟环境。使用以下命令安装 CustomTkinter:
# 如果使用提供的虚拟环境
.venv\Scripts\pip install -r requirements.txt
# 或者通过系统 pip 安装
pip install customtkinter
4. **运行应用程序:**
启动桌面 GUI:
python gui.py
## 用法
### 🔍 运行恶意软件扫描
1. 在侧边栏中,点击 **Malware Scan**。
2. 该选项卡将自动切换到 **Scan Results**,并在运行时使蓝色进度条呈现脉冲动画。
3. 一旦完成,将显示完成提示。控制台框将列出扫描的文件,并指示它们是 `SAFE` 还是 `MALICIOUS`(以及是否已被移动到 `quarantine/`)。
### ➕ 创建基线
1. 在侧边栏中,点击 **Create Baseline**。
2. 这将捕获 `test_files/` 文件夹中文件的当前状态快照,并将它们的 SHA-256 哈希值保存到 `baseline.json` 中。
### 🔄 运行完整性扫描
1. 在侧边栏中,点击 **Integrity Scan**。
2. 它将实际的文件系统与可信的基线快照进行比较,并报告任何已修改、已删除或新建的文件。
3. 检查 **Reports** 或 **Dashboard** 选项卡以查看汇总的差异警报指标。
### 📁 查看报告
1. 在侧边栏中,点击 **Reports**(或直接点击 **Reports** 选项卡)。
2. 点击左侧面板列表中的任何报告日志。报告内容将立即在右侧的内联阅读器中呈现。
### 📜 查看扫描历史
1. 在侧边栏中,点击 **Scan History**(或点击 **History** 选项卡)。
2. 查看历史运行列表,记录时间戳、已扫描文件以及是否发现了威胁。
## 示例工作流
1. 将一个可疑文件放入 `test_files/` 中,例如:`suspicious_file.txt`。
2. 启动恶意软件特征码扫描。
3. 引擎对该文件进行哈希处理,并针对 `malware_signatures.txt` 检查其 SHA-256。
4. 如果找到匹配项:
- 该文件将被标记为 `MALICIOUS`。
- 引擎调用 `shutil.move()` 将该文件重新定位到 `quarantine/` 目录中,将其从 `test_files/` 中移除。
- UI 仪表板会自动增加 **Threats Detected** 和 **Files Quarantined** 的计数。
- txt 报告将被写入 `reports/` 并且扫描历史记录将被更新。
## 截图部分
### 仪表板截图

### 恶意软件扫描截图

### 完整性扫描截图

### 报告截图

## 学习成果
通过构建和使用此模拟程序,展示了几项核心网络安全概念:
- **加密哈希:** 学习哈希如何将可变长度的输入数据转换为用于文件验证的固定长度唯一密钥(SHA-256)。
- **恶意软件特征码匹配:** 了解杀毒解决方案如何执行静态分析和快速的指纹数据库查询,以识别已知的恶意文件。
- **隔离/隔离区管理:** 通过将文件移动到隔离目录并修改执行范围,实施安全的威胁缓解措施。
- **文件完整性监控(FIM):** 跟踪偏差、配置和基线状态,以验证系统配置并检测潜在的篡改行为。
## 未来增强计划
- **实时监控:** 利用文件系统看门狗(`watchdog` 库),在创建或修改新文件后立即自动触发扫描。
- **YARA 规则支持:** 集成 YARA 规则,对威胁文件进行超越基础哈希比对的高级模式匹配分类。
- **VirusTotal API 集成:** 查询 VirusTotal API,将哈希指标与数十种云杀毒引擎进行交叉比对。
- **邮件提醒:** 当发生威胁或完整性基线违规时,自动向系统管理员发送电子邮件通知。
- **云仪表板:** 将本地扫描指标和报告同步到集中的 Web 监控仪表板。
## 作者
- **姓名:** Likhith H L
- **专业:** 计算机科学工程学士(物联网、包括区块链技术的网络安全方向)
- **学院:** Alva's Institute of Engineering and Technology
标签:Homebrew安装, Python, SHA-256哈希, 威胁隔离, 无后门, 桌面应用, 逆向工具