StefanDabic/GuardianX
GitHub: StefanDabic/GuardianX
GuardianX 是一个用 Python 和 PySide6 开发的桌面端 EDR 原型,通过实时端点监控、行为分析和事件关联来演示现代端点安全解决方案的核心组件。
Stars: 0 | Forks: 0
GuardianX 是一个使用 Python 和 PySide6 开发的桌面端 EDR 原型。
该项目专注于实时端点监控、行为威胁检测、安全事件关联、数字取证、威胁情报、事件调查和安全报告。
GuardianX 从进程、文件、网络连接、持久化位置以及其他端点活动中收集遥测数据。收集到的事件由启发式检查器进行评估,交由 Risk Engine 处理,通过 Security Event Bus 分发,并最终关联为更高置信度的安全事件。
本应用旨在用于教育、网络安全研究、Blue Team 实践、SOC 分析师培训、Python 开发实践以及作品集展示。
GuardianX 并不旨在取代商业防病毒软件或企业级 EDR 平台。其目的是演示如何使用 Python 实现现代端点安全解决方案的主要组件。
# 项目概述
传统的防病毒软件通常严重依赖已知的恶意软件特征码。现代 EDR 平台还会分析行为、进程关系、文件活动、网络连接、持久化机制以及相关事件链。
GuardianX 遵循了这种行为检测方法。
GuardianX 不会将每个事件都视为孤立的警报,而是尝试将相关的活动连接成一个单一的事件。一个可疑的进程、不寻常的父子关系、从临时目录执行、高风险的网络连接以及持久化活动,都可能成为同一个调查的一部分。
该项目结合了以下安全领域:
- 端点监控
- 行为检测
- 启发式分析
- 进程分析
- 文件系统监控
- 网络监控
- 持久化监控
- 事件关联
- Risk scoring
- Confidence scoring
- 威胁情报
- 数字取证
- IOC 提取
- MITRE ATT&CK 映射
- 攻击链重建
- 事件管理
- 安全报告
# 项目目标
GuardianX 的主要目标是演示如何收集、分析、关联端点遥测数据并将其呈现给分析师。
该项目旨在提供以下方面的实践经验:
- 端点检测与响应概念
- 安全监控
- Blue Team 运营
- SOC 分析师工作流
- 事件响应
- 威胁狩猎
- 数字取证
- 威胁情报
- 行为检测
- MITRE ATT&CK
- Python 桌面开发
- 多线程和后台 worker
- 结构化安全事件处理
- 安全报告生成
GuardianX 还可以作为作品集项目,展示如何开发一个较大型的模块化 Python 应用程序。
# 主要功能
GuardianX 目前支持:
- 实时进程监控
- 进程启动和停止检测
- 进程资源监控
- 父进程分析
- 父子关系分析
- 可执行文件路径分析
- 可疑进程名检测
- 系统进程伪装检测
- 进程树重建
- 文件创建监控
- 文件修改监控
- 文件删除监控
- 文件重命名监控
- 文件突发活动检测
- 启动文件夹监控
- 临时文件夹监控
- 可疑可执行文件检测
- 实时网络连接监控
- 网络风险分析
- 高危连接检测
- 本地威胁情报查询
- VirusTotal 文件哈希查询
- 持久化监控
- 安全事件分发
- 行为事件关联
- 自动生成事件
- 事件更新
- 重复事件抑制
- Risk scoring
- Confidence scoring
- IOC 提取
- MITRE ATT&CK 映射
- 攻击链生成
- 进程取证
- 数字签名验证
- 发布者检测
- 证书检查
- 文件哈希计算
- 事件时间线
- 安全日志
- 威胁管理
- 事件调查
- PDF 导出
- JSON 导出
- IOC CSV 导出
- 应用程序设置
- 用于本地分析的离线操作
# 应用程序页面
GuardianX 包含多个页面,每个页面负责监控和调查工作流中的特定部分。
## 仪表盘
仪表盘提供了当前端点状态的摘要。
它显示以下信息:
- CPU 使用率
- RAM 使用率
- 活动进程数
- 活动网络连接数
- 安全警报数
- 近期事件
- 近期监控活动
- 系统健康信息
- 当前威胁等级
- 实时活动数据
仪表盘旨在让分析师能够快速掌握整体情况,而无需立即浏览每个监控页面。
## 进程
“进程”页面显示正在运行的进程以及相关的进程信息。
可用的进程信息可能包括:
- 进程 ID
- 进程名
- CPU 使用率
- RAM 使用率
- 进程状态
- 可执行文件路径
- 父进程
- 父进程 PID
- 进程用户
- Risk score
- 风险等级
- 检测结果
进程扫描在主 GUI 线程之外执行,以减少界面卡顿。
该页面可用于检查活动进程,并识别需要深入调查的进程。
## 文件
“文件”页面显示由 File Monitor 收集的文件系统活动。
支持的文件事件包括:
- 文件创建
- 文件修改
- 文件删除
- 文件重命名
- 目录活动
- 可疑可执行文件创建
- 临时文件夹活动
- 启动文件夹活动
- 突发活动
文件事件可以被转发到 Security Event Bus,供 Behavioral Correlation Engine 使用。
## 网络
“网络”页面显示活动的网络连接和相关的元数据。
可用的信息可能包括:
- 本地地址
- 本地端口
- 远程地址
- 远程端口
- 连接协议
- 连接状态
- 进程 ID
- 进程名
- 网络风险信息
GuardianX 可以识别符合配置风险规则的连接,并将这些事件转发以进行关联。
## 警报
“警报”页面显示由监控和检测组件生成的安全警报。
警报代表可能需要关注的单个发现或事件。
警报并不总是代表一个完整的事件。多个警报随后可能会被关联成一个更高置信度的事件。
## 威胁
“威胁”页面充当 GuardianX 的威胁控制台。
它显示由共享的 Correlation Engine 创建的事件,而不是直接扫描进程。
威胁信息包括:
- 严重程度
- 威胁标题
- 来源
- MITRE ATT&CK 技术
- Risk score
- Confidence
- 状态
- 时间
威胁可以通过以下条件进行筛选:
- 搜索文本
- 严重程度
- 调查状态
支持的威胁状态包括:
- 活跃
- 调查中
- 已解决
分析师可以重新打开已解决的威胁,或将活跃的威胁标记为正在调查。
双击威胁将打开完整的事件详情。
## 事件
“事件”页面提供对由 Incident Engine 和 Behavioral Correlation Engine 生成的安全事件的访问。
事件代表具有附加上下文的关联活动。
一个事件可能包含:
- 事件 ID
- 标题
- 描述
- 严重程度
- Risk score
- Confidence score
- 状态
- 检测规则
- 关联事件
- 进程
- 文件
- 网络连接
- 妥协指标
- MITRE ATT&CK 技术
- 攻击链阶段
- 威胁情报结果
- 进程取证信息
事件可以被审查、调查、导出并用于后续分析。
## 时间线
“时间线”页面按时间顺序显示端点事件。
它监控 GuardianX 日志文件中的新条目,并在内存中保留有限数量的近期事件。
时间线事件包括:
- 时间戳
- 严重程度
- 类别
- 事件消息
事件可以通过以下条件进行筛选:
- 搜索文本
- 严重程度
- 类别
支持的类别包括:
- 进程
- 文件
- 网络
- 持久化
- 威胁
- 系统
- 常规
时间线还可以将可见事件导出为 CSV。
## 日志
“日志”页面显示 GuardianX 应用程序和安全日志。
日志可以帮助进行:
- 故障排除
- 监控确认
- 检测审查
- 事件重建
- 应用程序诊断
- 安全事件审查
## 设置
“设置”页面存储本地应用程序配置。
当前的设置包括 VirusTotal API 配置和其他 GuardianX 选项。
VirusTotal API key 存储在 GuardianX 配置文件的本地。
设置页面可以:
- 加载当前设置
- 保存更新的设置
- 恢复默认值
- 显示或隐藏 API key
- 测试 VirusTotal API 连接
GuardianX 可以在没有 VirusTotal API key 的情况下继续运行。只有在线的 VirusTotal 查询才需要它。
# 监控组件
## 进程 Monitor
Process Monitor 观察活动进程并检测进程变化。
它可以识别:
- 新启动的进程
- 停止的进程
- 进程重启行为
- 进程频繁变动
- 进程资源使用情况
- 可疑的进程元数据
收集到的进程事件可以发送到 Security Event Bus。
## 文件 Monitor
File Monitor 使用文件系统观察来检测受监控位置的变化。
它可以检测:
- 创建的文件
- 修改的文件
- 删除的文件
- 重命名的文件
- 高频文件活动
- 可疑的可执行文件
- 敏感文件夹中的活动
该监控器可以帮助识别与恶意软件执行、持久化、勒索软件、dropper 和可疑脚本相关的行为。
## 网络 Monitor
Network Monitor 检查活动的端点连接。
它收集网络遥测数据,并识别可能需要调查的活动。
当连接符合风险条件时,监控器可以生成 NETWORK_RISK 事件。
这些事件可以通过本地威胁情报模块进行丰富,并与进程和文件活动相关联。
## 持久化 Monitor
Persistence Monitor 监视通常被滥用于持久化的端点位置和机制。
根据当前的实现和 Windows 权限,受监控的持久化区域可能包括:
- Registry Run keys
- Registry RunOnce keys
- 启动文件夹
- 用户启动位置
- 计算机启动位置
- 计划任务
- 服务
持久化更改非常有用,因为攻击者通常会在重启或用户登录后尝试维持访问权限。
# 检测系统
## 检测引擎
检测引擎分析监控数据并产生可疑发现。
它负责将原始的端点遥测数据转换为结构化的安全信息。
检测引擎可以结合:
- 进程元数据
- 资源使用情况
- 可执行文件路径
- 进程名
- 父进程
- 网络活动
- 文件活动
- 持久化活动
- 现有检测规则
## 风险 Engine V2
Risk Engine 计算进程或安全事件的分数。
结果包含:
- 数字得分
- 风险等级
- 结构化发现
- 人类可读的原因
结果遵循类似于以下的结构:
```
{
"score": 80,
"level": "High",
"findings": [
{
"rule": "RUNNING_FROM_TEMP",
"score": 40,
"message": "Process is running from a temporary folder."
}
],
"reasons": [
"Process is running from a temporary folder."
]
}
```
Risk Engine 结合了来自独立启发式检查器的结果。
这种模块化结构使得添加新的检测规则变得更加容易,而无需重写整个引擎。
# 启发式检查器
GuardianX 使用独立的启发式检查器来评估特定的进程特征。
## 进程名检查器
进程名检查器检测可疑的命名模式。
当前的检查包括:
- 双重 `.exe` 扩展名
- 可疑的 Unicode 方向字符
- 可能隐藏真实文件扩展名的名称
示例检测规则:
- `DOUBLE_EXE_EXTENSION`
- `SUSPICIOUS_UNICODE_NAME`
## 可执行文件路径检查器
可执行文件路径检查器评估进程的启动位置。
当前的检查包括:
- 无法获取的可执行文件路径
- 从临时文件夹执行
- 从 Downloads 文件夹执行
- 从 Startup 文件夹执行
- 不寻常的可执行文件类型
示例检测规则:
- `PATH_UNAVAILABLE`
- `RUNNING_FROM_TEMP`
- `RUNNING_FROM_DOWNLOADS`
- `RUNNING_FROM_STARTUP`
- `UNUSUAL_EXECUTABLE_TYPE`
支持的不寻常可执行文件类型包括:
- `.scr`
- `.com`
- `.bat`
- `.cmd`
## 父子进程检查器
父子进程检查器识别不寻常的进程关系。
例如,Microsoft Office 应用程序启动命令解释器或 PowerShell。
受监控的关系包括:
- `winword.exe` 启动 `powershell.exe`
- `winword.exe` 启动 `cmd.exe`
- `excel.exe` 启动 `powershell.exe`
- `excel.exe` 启动 `cmd.exe`
- `powerpnt.exe` 启动 `powershell.exe`
- `powerpnt.exe` 启动 `cmd.exe`
- `outlook.exe` 启动 `powershell.exe`
- `outlook.exe` 启动 `cmd.exe`
这些关系并不自动证明存在恶意软件,但在安全调查期间通常具有重要意义。
检测规则:
- `SUSPICIOUS_PARENT_CHILD`
## 系统进程检查器
系统进程检查器检测类似于合法 Windows 进程名称,但从意外路径执行的进程名。
受监控的 Windows 进程名包括:
- `svchost.exe`
- `lsass.exe`
- `services.exe`
- `winlogon.exe`
- `csrss.exe`
- `smss.exe`
- `wininit.exe`
- `explorer.exe`
- `taskhostw.exe`
- `dwm.exe`
如果已知的 Windows 进名从意外的目录运行,GuardianX 将生成以下规则:
- `SYSTEM_NAME_WRONG_PATH`
这有助于识别进程冒充和伪装。
诸如 System、Registry、Memory Compression 和 System Idle Process 等特殊的 Windows 进程将被单独处理。
## 资源使用检查器
资源使用检查器评估当前的 CPU 和 RAM 使用情况。
当前的启发式阈值包括:
- 高 CPU 使用率
- 超过 1.5 GB 的 RAM 使用量
检测规则:
- `HIGH_CPU`
- `HIGH_RAM`
仅凭高资源使用率并不能确认存在恶意行为。这些发现只会贡献较小的分数,旨在提供额外的上下文。
# 安全事件 Bus
Security Event Bus 是 GuardianX 的核心事件分发组件。
监控和检测模块可以向总线发布结构化事件。
其他组件可以订阅这些事件,而无需与生成事件的模块紧密耦合。
这种设计提高了模块化程度,并允许 GuardianX 的不同部分通过通用的事件格式进行通信。
示例事件来源包括:
- Process Monitor
- File Monitor
- Network Monitor
- Persistence Monitor
- 检测引擎
示例事件类型包括:
- 进程已启动
- 进程已停止
- 可疑进程
- 网络风险
- 文件突发活动
- 持久化更改
- 行为关联
# 行为关联 Engine V2
Behavioral Correlation Engine 组合相关的低级别事件。
单个事件可能意义有限。在特定时间窗口内发生的多个相关事件可能表明存在可疑行为。
Correlation Engine 可以评估以下之间的关系:
- 进程
- 文件
- 网络连接
- 持久化更改
- 检测规则
- 事件时间戳
- 重复活动
- 共享的进程 ID
- 共享的可执行文件路径
- 共享的指标
当收集到足够的证据时,引擎可以创建一个新的事件。
当出现其他相关事件时,它也可以更新现有的事件。
当前的关联功能包括:
- 多源事件关联
- 重复事件抑制
- 进程事件关联
- 文件事件关联
- 网络事件关联
- 持久化事件关联
- 行为事件生成
- 现有事件更新
# 事件 Engine
Incident Engine 将关联活动转换为结构化的事件。
每个事件都会获得一个 ID 和调查数据。
事件信息可能包括:
- 标题
- 描述
- 严重程度
- Risk score
- Confidence
- 状态
- 时间
- 规则
- 事件
- 进程
- 连接
- 文件
- MITRE ATT&CK 技术
- 指标
- 攻击链
Incident Engine 将事件数据提供给威胁页面、事件页面、仪表盘和导出组件。
# Confidence 评分
Risk score 和 Confidence score 代表不同的概念。
Risk score 评估观察到的行为可能具有的危险性或可疑程度。
Confidence score 评估现有证据对生成的事件的支持程度。
在以下情况下,Confidence 可能会提高:
- 匹配多个独立的规则
- 多个监控来源提供证据
- 事件发生的时间非常接近
- 进程、文件和网络活动存在关联
- 检测到已知的指标
- 多个关联事件支持同一结论
这种分离有助于防止单一的微弱事件被呈现为高置信度的事件。
# 重复事件抑制
监控系统可能会产生重复的事件。
GuardianX 包含重复事件抑制功能,以减少不必要的噪音。
重复检测可以考虑:
- 事件类型
- 来源
- 进程 ID
- 可执行文件路径
- 远程地址
- 文件路径
- 检测规则
- 时间窗口
这有助于减少警报疲劳,并防止相同的活动生成过多重复的事件。
# MITRE ATT&CK 映射
GuardianX 可以将检测到的行为映射到 MITRE ATT&CK 技术。
MITRE ATT&CK 提供了一个关于对手战术和技术的结构化知识库。
事件映射可能包括:
- 技术 ID
- 技术名称
- 战术
- 描述
MITRE 映射帮助分析师理解观察到的行为与常见攻击者方法之间的关系。
映射基于检测规则和行为上下文。
它们旨在作为调查支持,不应被视为明确的归因。
# IOC 提取
GuardianX 从事件数据中提取妥协指标。
支持的指标可能包括:
- IP 地址
- 文件哈希
- 可执行文件路径
- 文件名
- 进程名
- 网络端点
- 域名(如果可用)
收集到的 IOC 可以在事件调查界面中显示,并导出为 CSV。
# 威胁情报
GuardianX 包括本地和在线威胁情报功能。
## 本地威胁情报
本地威胁情报模块无需访问 Internet 即可分析 IP 地址。
它可以将地址分类为:
- 受信任
- 内部
- 信息性
- 未知
- 可疑
- 恶意
- 无效
本地数据库包含用于界面和检测测试的安全模拟 TEST-NET 指标。
TEST-NET 地址保留用于文档,不代表真实的恶意基础设施。
本地模块还能识别:
- Loopback 地址
- 私有地址
- 多播地址
- 未指定地址
`Unknown` 结果仅表示在 GuardianX 本地数据库中未找到该指标。
## VirusTotal 集成
GuardianX 可以使用文件哈希查询 VirusTotal。
支持的哈希类型包括:
- MD5
- SHA-1
- SHA-256
VirusTotal 客户端在发送请求之前会验证哈希。
返回的信息可能包括:
- 检测结论
- 恶意引擎计数
- 可疑引擎计数
- 无害引擎计数
- 未检测到的引擎计数
- 总引擎计数
- 信誉度
- 文件类型
- 有意义的文件名
- 最后分析日期
- 提交计数
- 标签
可能的结论包括:
- 恶意
- 可疑
- 未检测到
- 未知
- 未找到
API key 可以通过 GuardianX 设置或 `GUARDIANX_VT_API_KEY` 环境变量进行配置。
VirusTotal 集成是可选的。
# 进程取证
GuardianX 可以对进程可执行文件执行本地取证分析。
收集到的进程信息可能包括:
- 进程 ID
- 进程名
- 父进程
- 父进程 PID
- 用户
- 状态
- 可执行文件路径
- 文件大小
- 命令行信息(如果可用)
- 创建时间(如果可用)
取证模块可以处理无法访问的进程和与权限相关的错误,而不会终止整个应用程序。
# 文件哈希计算
GuardianX 可以计算可执行文件的加密哈希。
支持的算法包括:
- MD5
- SHA-1
- SHA-256
哈希可用于:
- 威胁情报查询
- IOC 收集
- 文件识别
- 事件报告
- 比较样本
- 调查文档
哈希计算包括对无法访问、已删除或被锁定文件的错误处理。
# 数字签名分析
GuardianX 可以检查 Windows 可执行文件的签名。
可用的签名信息可能包括:
- 签名状态
- 文件是否已签名
- 签名是否有效
- 发布者
- 证书主题
- 证书颁发者
- 证书指纹
数字签名帮助分析师区分已知的签名软件与未签名或意外签名的可执行文件。
有效的签名并不能保证文件是安全的,而未签名的文件也不一定就是恶意的。
签名信息被视为调查上下文。
# 进程树
GuardianX 可以显示进程与其父进程之间的关系。
进程树可用于识别:
- 可疑的父子关系
- Office 应用程序启动脚本
- 由异常程序启动的命令解释器
- 重复的进程创建
- 与事件相关的进程链
进程树可以包含在事件调查数据中。
# 攻击链
GuardianX 可以从关联事件生成攻击链表示。
攻击链将事件按逻辑顺序排列,以帮助分析师了解活动是如何发展的。
可能的阶段包括:
- 初始进程执行
- 可疑子进程创建
- 文件活动
- 持久化活动
- 网络通信
- 威胁情报匹配
- 事件生成
攻击链基于现有证据,应将其解释为一种调查辅助工具。
# 事件调查
事件详情界面提供了所选事件的完整视图。
根据可用数据,事件调查可能包含:
- 事件摘要
- 严重程度
- Risk score
- Confidence score
- 检测规则
- 描述
- 状态
- 进程信息
- 父进程信息
- 进程树
- 可执行文件路径
- 文件大小
- 数字签名状态
- 发布者
- 证书主题
- 证书颁发者
- 证书指纹
- MD5 哈希
- SHA-1 哈希
- SHA-256 哈希
- MITRE ATT&CK 技术
- 威胁情报结果
- 妥协指标
- 关联事件
- 网络连接
- 文件活动
- 攻击链
- 导出选项
其目标是提供足够的上下文,让分析师理解为何会生成此事件。
# 导出功能
GuardianX 支持多种导出格式。
## PDF 报告
PDF 报告提供可读的事件文档,适用于:
- 事件记录
- 作品集演示
- 分析师审查
- 案例归档
- 培训练习
PDF 报告可能包括:
- 事件摘要
- Risk 和 Confidence
- 进程详情
- 签名信息
- 哈希
- MITRE ATT&CK 映射
- IOC 数据
- 关联事件
- 攻击链信息
## JSON 报告
JSON 导出保留结构化的事件数据。
它适用于:
- 后续处理
- 自动化
- 开发
- 调试
- 集成测试
- 将数据导入另一个应用程序
## IOC CSV 导出
IOC CSV 导出创建一个简单的提取指标列表。
此格式适用于:
- 电子表格审查
- IOC 共享
- 威胁狩猎准备
- 导入其他工具
- 事件记录
# 日志记录
GuardianX 将应用程序和安全信息写入日志文件。
默认日志位置为:
```
logs/guardian.log
```
日志条目用于:
- 日志页面
- 时间线页面
- 事件审查
- 故障排除
- 监控验证
- 安全事件重建
时间线解析器支持多种常见的日志格式。
# 配置
GuardianX 将本地设置存储在:
```
config/guardian_settings.json
```
设置文件可能包含:
- VirusTotal API key
- 监控选项
- 界面偏好
- 功能配置
如果缺少设置文件,GuardianX 将使用默认值。
如果 JSON 文件损坏或无效,设置页面可以安全地恢复默认值,而不会崩溃。
# 项目结构
确切的结构可能会随着 GuardianX 的开发而变化,但该项目包含负责以下方面的模块:
```
GuardianX/
│
├── main.py
├── guardian_core.py
├── security_event_bus.py
├── incident_engine.py
├── risk_engine.py
├── detection_engine.py
├── process_monitor.py
├── file_monitor.py
├── network_monitor.py
├── persistence_monitor.py
├── threat_intelligence.py
├── virustotal_client.py
├── mitre_mapper.py
├── process_forensics.py
├── process_details_thread.py
│
├── dashboard_page.py
├── processes_page.py
├── files_page.py
├── network_page.py
├── alerts_page.py
├── threats_page.py
├── incidents_page.py
├── timeline_page.py
├── logs_page.py
├── settings_page.py
│
├── heuristics/
│ ├── name_checker.py
│ ├── path_checker.py
│ ├── parent_child_checker.py
│ ├── resource_checker.py
│ └── system_process_checker.py
│
├── config/
│ └── guardian_settings.json
│
├── logs/
│ └── guardian.log
│
└── requirements.txt
```
某些文件名或目录可能会因当前开发版本的不同而有所差异。
# 技术栈
GuardianX 使用以下技术构建:
- Python 3
- PySide6
- Qt
- psutil
- watchdog
- Windows APIs
- PowerShell
- urllib
- JSON
- CSV
- PDF 报告库
- Python threading
- QThread
- Signals 和 slots
- MD5
- SHA-1
- SHA-256
- MITRE ATT&CK
- VirusTotal API
# 系统要求
GuardianX 主要为 Windows 设计。
推荐环境:
- Windows 10 或 Windows 11
- Python 3.11 或更高版本
- 具有管理员权限,以获得完整的进程和系统可见性
- 用于 VirusTotal 查询的 Internet 访问权限
- 至少 4 GB RAM
- 用于克隆代码库的 Git
如果没有管理员权限,可能无法访问某些系统进程和文件。
GuardianX 可以安全地处理许多拒绝访问的情况,但有限的权限可能会减少可用的取证信息。
# 安装说明
## 克隆代码库
```
git clone https://github.com/StefanDabic/GuardianX.git
cd GuardianX
```
将 `yourusername` 替换为正确的 GitHub 用户名或代码库 URL。
## 创建虚拟环境
建议创建一个虚拟环境。
```
python -m venv .venv
```
在 Windows 上激活它:
```
.venv\Scripts\activate
```
## 安装依赖项
```
pip install -r requirements.txt
```
可能的依赖项包括:
```
PySide6
psutil
watchdog
reportlab
```
确切的依赖项列表应维护在 `requirements.txt` 中。
## 运行 GuardianX
```
python main.py
```
为了获得更大的端点可见性,请使用管理员权限启动终端或应用程序。
# VirusTotal 配置
要使用 VirusTotal 文件哈希查询:
1. 创建或获取一个 VirusTotal API key。
2. 打开 GuardianX 设置页面。
3. 输入 API key。
4. 保存设置。
5. 测试 API 连接。
也可以通过环境变量提供 API key:
```
set GUARDIANX_VT_API_KEY=your_api_key
```
GuardianX 通过 VirusTotal API 身份验证标头发送 key。
请勿将真实的 API key 提交到 GitHub。
当设置文件包含敏感数据时,请将其添加到 `.gitignore` 中。
示例:
```
config/guardian_settings.json
```
# 推荐的 .gitignore
```
__pycache__/
*.py[cod]
*.log
.venv/
venv/
env/
.idea/
.vscode/
config/guardian_settings.json
logs/*.log
reports/
exports/
```
如有必要,在所需的目录中保留一个空的占位文件。
#与隐私
GuardianX 分析本地端点活动。
根据启用的模块,它可能会处理:
- 进程名
- 进程 ID
- 用户名
- 可执行文件路径
- 文件路径
- 网络地址
- 文件哈希
- 证书信息
- 安全日志
在生产计算机上运行 GuardianX 之前,用户应了解正在收集哪些信息。
VirusTotal 查询会将文件哈希发送到外部服务。
GuardianX 不需要上传整个文件即可进行哈希查询。
未经授权,请勿使用该项目监控系统。
# 局限性
GuardianX 是一个教育原型。
当前的局限性可能包括:
- 专注于 Windows 的实现
- 有限的内核级可见性
- 无内核驱动程序
- 无企业管理服务器
- 无远程端点管理
- 无云端控制台
- 不保证能够防御恶意软件
- 无完整的防病毒特征码数据库
- 本地威胁情报数据库有限
- 依赖于用户模式遥测
- 没有管理员权限时可见性降低
- 可能出现误报
- 可能出现漏报
- 不保证能够防御高级威胁
- 不针对每个事件进行自动修复
检测结果必须由人类分析师审查。
可疑结果并不能自动证明存在恶意活动。
低风险结果也不能保证活动是安全的。
# 安全测试
GuardianX 应在受控环境中进行测试。
推荐的测试环境包括:
- 个人实验室计算机
- Windows 虚拟机
- 网络安全培训环境
- 授权的测试系统
使用安全的测试指标和无害的模拟脚本。
请勿在个人或生产系统上执行真实的恶意软件。
本地威胁情报模块使用的 TEST-NET IP 地址保留用于文档和安全测试。
# 开发原则
GuardianX 遵循几项开发原则。
## 模块化设计
监控、检测、关联、取证、情报、导出和界面组件被分离到独立的模块中。
## 最小化 GUI 阻塞
长时间运行的操作应在 worker 线程中执行,而不是在主 GUI 线程中执行。
## 防御性错误处理
拒绝访问错误、文件丢失、无效的 JSON、网络请求失败和进程终止都会被妥善处理,不会导致整个应用程序崩溃。
## 可解释的检测
风险发现包括规则名称、单独的分数和可读的消息。
## 离线优先操作
在没有 Internet 访问的情况下,核心端点监控和本地分析也能正常工作。
## 可扩展性
随着项目的开发,可以添加新的启发式检查器、监控模块、事件类型和导出格式。
# 当前检测规则
当前或计划中的检测规则包括:
- `DOUBLE_EXE_EXTENSION`
- `SUSPICIOUS_UNICODE_NAME`
- `PATH_UNAVAILABLE`
- `RUNNING_FROM_TEMP`
- `RUNNING_FROM_DOWNLOADS`
- `RUNNING_FROM_STARTUP`
- `UNUSUAL_EXECUTABLE_TYPE`
- `SUSPICIOUS_PARENT_CHILD`
- `SYSTEM_NAME_WRONG_PATH`
- `HIGH_CPU`
- `HIGH_RAM`
- `NETWORK_RISK`
- `SUSPICIOUS_PROCESS_STARTED`
- `PROCESS_RESTART_LOOP`
- `PROCESS_CHURN`
- `PERSISTENCE_CHANGE`
- `BEHAVIORAL_CORRELATION`
确切的列表可能会随着添加新的检测逻辑而发生变化。
# 示例调查工作流
典型的 GuardianX 调查可能遵循以下步骤:
1. 一个新进程启动。
2. Process Monitor 收集其元数据。
3. 启发式检查器检查进程名、路径、父进程、系统身份和资源使用情况。
4. Risk Engine 计算分数和风险等级。
5. 通过 Security Event Bus 发布一个可疑进程事件。
6. File Monitor 检测到相关的文件活动。
7. Network Monitor 检测到与同一进程相关的连接。
8. Persistence Monitor 检测到与持久化相关的更改。
9. Behavioral Correlation Engine 将这些事件连接起来。
10. Incident Engine 创建或更新事件。
11. 映射 MITRE ATT&CK 技术。
12. 提取 IOC。
13. 收集进程取证信息和哈希。
14. 执行威胁情报检查。
15. 该事件出现在“威胁”和“事件”页面中。
16. 分析师打开事件并审查证据。
17. 该事件被标记为“调查中”或“已解决”。
18. 可以导出 PDF、JSON 或 IOC CSV 报告。
# 路线图
## GuardianX 3.x
计划和正在进行的改进:
- 改进的 VirusTotal 集成
- 自动威胁情报丰富
- 文件信誉缓存
- 进程命令行分析
- 改进的进程树
- 父子进程图
- 从界面终止进程
- 扩展的持久化监控
- Registry 监控
- 服务监控
- 计划任务监控
- USB 设备监控
- Windows Event Log 集成
- 更好的网络信息丰富
- 域名提取
- DNS 监控
- 改进的攻击链生成
- 改进的勒索软件行为检测
- 扩展的 MITRE ATT&CK 映射
- 额外的导出模板
- 更好的事件搜索和过滤
- 可配置的检测阈值
- 检测规则配置
- 误报抑制
- 分析师备注
- 事件评论
- 证据附件
## 未来 GuardianX 版本
未来可能推出的功能包括:
- 支持 YARA 规则
- 支持 Sigma 规则
- 隔离
- 文件隔离
- 进程内存检查
- 内存区域分析
- Windows Defender 集成
- Event Tracing for Windows
- Sysmon 集成
- 远程端点 agent
- 中央管理服务器
- 多端点仪表盘
- 用户身份验证
- 基于角色的访问控制
- 案例管理
- 威胁狩猎查询
- 规则编辑器
- 本地 IOC 数据库管理
- 机器学习辅助的 Risk Scoring
- 自动响应动作
- 电子邮件通知
- Webhook 通知
- SIEM 集成
- 支持 STIX 和 TAXII
这些项目属于开发构想,不保证一定会实现。
# 教育用途
GuardianX 是为教育目的和网络安全研究而开发的。
该项目可用于学习:
- EDR 系统如何收集端点遥测数据
- 启发式检测的工作原理
- 多个事件如何组合成一个事件
- Risk 和 Confidence 的区别
- 进程关系如何辅助调查
- 哈希和签名如何协助文件分析
- 威胁情报如何丰富指标
- MITRE ATT&CK 如何帮助分类行为
- 如何生成安全报告
- 如何构建大型 PySide6 应用程序
# 免责声明
GuardianX 仅用于教育、研究和授权的防御性安全用途。
该项目不提供针对恶意软件、未经授权的访问、数据丢失或其他安全事件的保证保护。
对于使用本软件造成的损害、数据丢失、错误检测、漏报、滥用或未经授权的监控,作者不承担任何责任。
请始终仅在您拥有或获得明确监控授权的系统上使用 GuardianX。
# 许可证
本项目目前是出于教育目的和网络安全研究而开发的。
在发布代码库之前,请添加适当的许可证文件。
可能的开源许可证选项包括:
- MIT License
- Apache License 2.0
- GNU General Public License v3.0
选择的许可证应与项目的预期用途和分发模式相匹配。
# 作者
**Stefan Dabić**
信息技术与系统专业工程师
感兴趣的领域:
- 网络安全
- Python
- Blue Team
- SOC 运营
- 端点安全
- EDR 开发
- 数字取证
- 事件响应
# 项目状态
GuardianX 正在积极开发中。
功能、界面、文件结构、检测规则和内部 API 可能会随着项目的发展而变化。
当前版本应被视为一个教育性的 EDR 原型,而不是可用于生产环境的安全软件。
标签:EDR, PySide6, Python, Qt, 事件关联, 域环境安全, 数字取证, 无后门, 端点安全, 脆弱性评估, 自动化脚本, 行为检测, 补丁管理, 逆向工具