mlingarkar/defense-cyber-incident-triage-dashboard
GitHub: mlingarkar/defense-cyber-incident-triage-dashboard
基于Python和Streamlit构建的网络安全事件分类仪表板,利用合成数据演示风险评分、AI辅助分类优先级排序和响应建议的完整事件研判工作流。
Stars: 0 | Forks: 0
# AI 辅助网络安全事件分类仪表板
本项目是一个基于 Python 和 Streamlit 的网络安全分析仪表板,用于模拟安全运营、防御导向分析和基于风险的决策支持中的事件分类工作流。
该仪表板使用模拟的网络安全事件数据,对事件严重程度进行评分,分配分析师分类优先级,生成 AI 辅助的事件摘要,推荐响应措施,并在合成的安全环境中可视化高风险活动。
## 项目免责声明
本项目仅使用模拟的网络安全事件数据。它不使用真实的安全日志、机密信息、专有的威胁情报、实时网络数据或特定组织的事件响应流程。
AI 辅助的分类逻辑是基于规则的,仅用于演示目的。它旨在支持分析师的审查工作,而不是取代专业的网络安全调查或正式的事件响应流程。
## 项目概述
本项目通过结合合成事件生成、风险评分、AI 辅助的分析师摘要和交互式仪表板可视化,展示了一种结构化的网络安全事件分类方法。
本项目的目标是展示数据分析和决策支持逻辑如何帮助以清晰、可解释且对分析师友好的方式确定网络安全事件的优先级。
## 项目的重要性
网络安全团队通常需要审查大量警报,并确定哪些事件需要立即关注。并非每个警报都具有相同级别的风险,高优先级事件可能取决于多个信号的同时出现。
例如,单独的登录失败激增可能风险较低,但如果涉及敏感系统、非工作时间活动、外部 IP 地址、异常数据移动或多个受影响的资产,它就变得更加重要。
风险评分和 AI 辅助分类可以帮助将这些事件组织成更具可读性的分析师工作流。分析师无需逐一审查原始警报,而是可以根据严重程度、分类优先级、系统敏感性和建议的响应措施来确定事件的优先级。
本项目展示了 AI 辅助分析如何支持:
- 网络安全事件分类
- 安全运营工作流
- 基于风险的警报优先级排序
- 敏感系统监控
- 外部网络指标审查
- 事件响应决策支持
- 分析师支持报告
- 防御导向的网络安全分析
## 数据集
本项目使用由项目自身生成的合成网络安全事件数据集。该数据集不是真实的网络安全、国防、航空航天、政府、企业或运营数据。它不包含敏感、机密、专有、受出口管制或实时的安全信息。
生成的数据集包括以下字段:
- Event ID(事件 ID)
- Timestamp(时间戳)
- Incident type(事件类型)
- Affected system(受影响系统)
- Location(位置)
- User(用户)
- Failed login count(登录失败次数)
- Number of affected assets(受影响资产数量)
- External IP indicator(外部 IP 指标)
- Sensitive system flag(敏感系统标志)
- After-hours activity flag(非工作时间活动标志)
- Data volume(数据量)
- Event description(事件描述)
本项目模拟的网络安全事件类型包括:
- Failed Login Spike(登录失败激增)
- Suspicious File Access(可疑文件访问)
- Malware Alert(恶意软件警报)
- Privilege Escalation Attempt(权限提升尝试)
- Data Exfiltration Signal(数据渗出信号)
- Unusual Network Traffic(异常网络流量)
- Unauthorized USB Activity(未经授权的 USB 活动)
- Endpoint Policy Violation(端点策略违规)
- Phishing Indicator(网络钓鱼指标)
- Command and Control Beacon(命令与控制信标)
这些模拟事件使项目能够以安全、可重复的方式演示网络安全分析和事件分类工作流。
## 为什么使用合成数据?
本项目使用合成数据,因为真实的网络安全日志、安全运营记录和事件响应数据是敏感的。
真实的安全数据集可能包含私人用户活动、内部系统名称、IP 地址、身份验证记录、网络指标、专有检测逻辑或特定组织的事件响应细节。即使经过匿名化处理,真实日志仍可能暴露不应公开的运营模式。
合成数据使本项目能够安全地演示:
- 网络安全事件分析
- AI 辅助的事件分类
- 风险评分逻辑
- 分析师支持工作流
- 安全运营风格的报告
- 仪表板开发
- 防御导向的数据分析概念
## 核心功能
- 生成合成网络安全事件数据
- 模拟常见的安全事件类型和风险指标
- 使用基于规则的风险逻辑对网络安全事件进行评分
- 分配可读的严重性级别:低、中、高和严重
- 根据事件严重性分配分析师分类优先级
- 为每个事件生成 AI 辅助的分析师摘要
- 根据事件类型和风险上下文推荐响应措施
- 标记涉及敏感系统、外部 IP 和非工作时间活动的事件
- 生成经过评分的网络安全事件数据集
- 生成 Markdown 格式的事件分类报告
- 创建静态 PNG 可视化图表
- 提供交互式 Streamlit 仪表板
- 包含可筛选的事件审查表
- 包含可下载的 CSV 和 Markdown 报告输出
- 包含针对风险评分和 AI 辅助分类逻辑的单元测试
- 仅使用模拟数据
## 可视化
运行 `python src/main.py` 会在 `outputs/figures/` 文件夹中创建四张已保存的 PNG 图像。这些图像总结了模拟网络安全事件的严重性、事件类型频率、风险评分模式以及高风险活动的时间趋势。Streamlit 仪表板提供了此分析的交互式版本。
### 严重性分布

这张保存的图像显示了模拟网络安全事件在各个严重性类别(低、中、高和严重)中的数量分布。
严重性级别是使用项目基于规则的风险评分逻辑分配的。具有较高风险分数的事件被归入较高的严重性类别,这有助于总结模拟安全环境的整体风险状况。
此视图有助于快速了解数据集主要是低风险事件,还是存在许多需要分析师审查或升级的高和严重事件。
### 事件类型细分

这张保存的图像显示了数据集中每种模拟网络安全事件类型出现的频率。
本项目包括的事件类型有登录失败激增、可疑文件访问、恶意软件警报、权限提升尝试、数据渗出信号、异常网络流量、未经授权的 USB 活动、端点策略违规、网络钓鱼指标以及命令与控制信标活动。
此视图有助于识别模拟环境中哪种类型的安全事件最常见。例如,大量失败的登录事件可能表明存在与身份验证相关的风险,而更多的数据渗出或命令与控制事件则可能暗示更高优先级的安全问题。
### 风险评分分布

这张保存的图像显示了数值型风险分数在所有模拟网络安全事件中的分布情况。
风险分数是根据事件级别的指标(如事件类型、登录失败次数、受影响资产、外部 IP 参与、敏感系统访问、非工作时间活动和数据量)计算得出的。分数越高表示事件可能需要分析师更紧急的关注。
此视图比单纯的严重性类别提供更多细节,因为它显示了事件是集中在低风险范围内、分布在中段,还是集中在较高风险值附近。
### 高风险事件时间线

这张保存的图像显示了随着时间推移的高和严重级别网络安全事件。
时间线有助于显示高风险活动是孤立的,还是集中在特定时间段内。高或严重事件的集群可能代表模拟的可疑活动激增、协调攻击模式或需要更密切调查的时间窗口。
此视图对于事件分类非常有用,因为时间很重要。单个高风险事件可能很重要,但几个高风险事件接连发生可能暗示着需要更紧急审查的更大模式。
## 如何运行项目
### 1. 安装依赖
```
pip install -r requirements.txt
```
如果需要,请使用:
```
python -m pip install -r requirements.txt
```
### 2. 生成模拟网络安全数据集
```
python src/data_generator.py
```
这将创建:
```
data/simulated_security_events.csv
```
### 3. 运行完整流程
```
python src/main.py
```
这将生成已评分的网络安全事件数据集、AI 辅助分类字段、Markdown 事件报告和仪表板可视化。
### 4. 启动 Streamlit 仪表板
```
python -m streamlit run app.py
```
## 测试
本项目包含针对网络安全风险评分和 AI 辅助分类工作流的单元测试。
要运行测试套件:
```
python -m pytest
```
当前测试结果:
```
14 passed
```
## 技术栈
- Python
- Pandas
- NumPy
- Matplotlib
- Streamlit
- Pytest
- Markdown
- CSV
## 文件分解
### app.py
此文件运行交互式 Streamlit 仪表板。它加载已评分的网络安全事件数据集,显示高层指标,展示生成的 PNG 可视化图表,提供严重性和事件类型过滤器,显示已确定优先级的网络安全事件,展示 AI 辅助的分类摘要,并提供可下载的 CSV 和 Markdown 报告输出。
### src/data_generator.py
此文件生成合成的网络安全事件数据集。它创建模拟的安全记录,包含事件 ID、时间戳、事件类型、受影响系统、位置、用户、登录失败次数、受影响资产数量、外部 IP 指标、敏感系统标志、非工作时间活动标志、数据量值和事件描述。
### src/risk_scoring.py
此文件包含基于规则的网络安全风险评分工作流。它为每个模拟事件计算一个 0 到 100 之间的数值型风险分数,并根据事件的风险分数分配可读的严重性标签:低、中、高或严重。
### src/ai_triage.py
此文件将 AI 辅助分类层添加到已评分的网络安全事件中。它根据严重性、事件类型、敏感系统参与、外部 IP 指标和非工作时间活动,分配分析师分类优先级,生成事件级别的分析师摘要,并推荐响应措施。
### src/report_generator.py
此文件创建生成的 Markdown 事件分类报告。该报告总结了事件总数、平均风险分数、严重和高严重性计数、外部 IP 活动、敏感系统参与、严重性分布、主要事件类型、最高风险事件、分析师备注和建议的后续步骤。
### src/visualization.py
此文件从已评分的网络安全事件数据集中创建静态 PNG 可视化图表。它生成严重性分布、事件类型细分、风险分数分布和随时间推移的高风险网络安全事件的图表。这些图表保存在 `outputs/figures/` 文件夹中,并显示在 Streamlit 仪表板中。
### src/main.py
此文件通过一个命令运行完整的项目流程。它生成或加载合成的网络安全事件数据集,应用风险评分,添加 AI 辅助分类字段,保存最终评分的数据集,生成静态可视化图表,并创建 Markdown 事件分类报告。
### tests/test_risk_scoring.py
此文件包含网络安全风险评分逻辑的单元测试。它验证严重性分配、风险分数边界、高风险与低风险评分行为,并确认已评分的数据集包含预期的输出列。
### tests/test_ai_triage.py
此文件包含 AI 辅助分类工作流的单元测试。它验证分类优先级分配、AI 辅助摘要生成、推荐的响应措施,并确认分类模块添加了预期的输出列。
### requirements.txt
此文件列出了运行项目所需的 Python 库。它包含用于数据生成、数据处理、可视化、仪表板构建和测试的依赖项。
### data/simulated_security_events.csv
这是由 `src/data_generator.py` 或 `src/main.py` 生成的合成网络安全事件数据集。它包含模拟的安全事件记录,可以随时重新生成。
### outputs/reports/scored_security_events.csv
此文件包含最终经过评分和分类的网络安全事件数据集。它包括原始的模拟事件字段,以及风险分数、严重性、分类优先级、AI 辅助分析师摘要和推荐的响应措施。
### outputs/reports/incident_triage_report.md
此文件包含生成的网络安全事件分类报告。它总结了模拟的事件活动、风险评分结果、最高风险事件、AI 辅助的分析师备注和建议的后续步骤。
### outputs/figures/severity_distribution.png
此图像显示了网络安全事件在低、中、高和严重严重性级别中的分布。
### outputs/figures/incident_type_breakdown.png
此图像显示了模拟网络安全事件类型在整个数据集中的分布。
### outputs/figures/risk_score_distribution.png
此图像显示了风险分数在所有模拟网络安全事件中的分布方式。
### outputs/figures/high_risk_events_timeline.png
此图像显示了随时间推移的严重和高严重性网络安全事件。
## 项目结构
```
defense-cyber-incident-triage-dashboard/
│
├── app.py # Streamlit dashboard application
├── README.md # Project documentation
├── requirements.txt # Python dependencies
│
├── data/
│ └── simulated_security_events.csv # Generated synthetic cybersecurity event dataset
│
├── outputs/
│ ├── figures/ # Generated chart outputs
│ │ ├── high_risk_events_timeline.png
│ │ ├── incident_type_breakdown.png
│ │ ├── risk_score_distribution.png
│ │ └── severity_distribution.png
│ │
│ └── reports/ # Generated report outputs
│ ├── incident_triage_report.md
│ └── scored_security_events.csv
│
├── src/
│ ├── ai_triage.py # Adds AI-assisted summaries, triage priorities, and response actions
│ ├── data_generator.py # Generates simulated cybersecurity event data
│ ├── main.py # Runs the full project pipeline
│ ├── report_generator.py # Creates the markdown incident triage report
│ ├── risk_scoring.py # Calculates risk scores and severity labels
│ └── visualization.py # Creates dashboard charts
│
└── tests/
├── test_ai_triage.py # Unit tests for AI-assisted triage logic
└── test_risk_scoring.py # Unit tests for risk scoring logic
```
标签:AI辅助分诊, AMSI绕过, IP 地址批量处理, Kubernetes, Python, Streamlit, 决策支持系统, 分析师建议, 单元测试, 合成数据, 告警分类, 威胁检测, 安全事件仪表盘, 安全分析与运营, 安全运营中心, 无后门, 模拟日志, 深度包检测, 网络安全, 网络安全分析, 网络映射, 访问控制, 逆向工具, 防御分析, 隐私保护, 风险评分