pratyushKr04/automated-incident-response-using-RL
GitHub: pratyushKr04/automated-incident-response-using-RL
通过深度强化学习训练智能体自动检测和响应网络攻击(暴力破解、勒索软件),无需硬编码规则即可学习最优防御策略。
Stars: 1 | Forks: 0
# 使用深度强化学习的自动化事件响应
一个基于强化学习的系统,用于学习检测和响应网络攻击——暴力破解登录尝试和勒索软件——无需硬编码的检测规则。作为一个小项目构建,灵感来自 *Finding Effective Security Strategies through Reinforcement Learning and Self-Play*(Hammar & Stadler,IEEE CNSM 2021)。
## 项目概述
智能体观察有噪声的系统指标(登录率、文件访问模式、CPU 使用率),并学习选择防御动作(阻止 IP、锁定账户、终止进程、隔离主机),以在保持低误报率的同时尽早遏制攻击。它从不了解真实攻击状态——只能看到与真实监控系统相同的噪声信号。
**关键结果(1000 个回合):**
- 75% 成功率
- 超越所有基线(Snort、NIST 800-61、MITRE ATT&CK、阈值、随机)
- 具有统计显著性改进(p < 0.05,Cohen's d 最高达 5.55)
## 项目结构
```
minip/
├── main.py # CLI entry point (preprocess + train)
├── requirements.txt # Python dependencies
├── report.tex # LaTeX project report
├── data/ # Datasets
│ ├── Monday-WorkingHours.pcap_ISCX.csv # CICIDS 2017 (benign)
│ ├── Tuesday-WorkingHours.pcap_ISCX.csv # CICIDS 2017 (attacks)
│ └── file.csv # CERT Insider Threat
├── src/
│ ├── config.py # Configuration (loaded from extracted_params.json)
│ ├── preprocess.py # Feature extraction from datasets
│ ├── attack_simulator.py # Brute force & ransomware FSMs
│ ├── incident_env.py # Custom Gymnasium environment (9D obs)
│ ├── agent.py # Dueling Double DQN agent
│ ├── train.py # Training loop + baseline comparison
│ └── evaluate.py # Visualization & statistical tests
├── models/ # Saved model weights
├── logs/ # Training metrics (JSON)
└── figures/ # Generated plots
```
## 快速开始
### 安装依赖
```
pip install -r requirements.txt
```
### 预处理数据集
```
python main.py preprocess
```
从 CICIDS 2017 和 CERT 数据集中提取泊松分布参数,保存到 `extracted_params.json`。
### 训练智能体
```
# 基础训练(建议 1000 回合)
python main.py train --episodes 1000
# 训练并与所有基线进行比较
python main.py train --episodes 1000 --compare-baselines
```
训练自动执行以下操作:
1. 运行预处理(如尚未完成)
2. 训练 Dueling Double DQN 智能体
3. 评估 100 个回合
4. 生成所有图表到 `figures/`
5. 可选地与 6 个基线进行比较并进行统计检验
### CLI 选项
| 选项 | 描述 | 默认值 |
|--------|-------------|---------|
| `--episodes` | 训练回合数 | 500 |
| `--attack-type` | `bruteforce`、`ransomware`、`both`、`random` | `random` |
| `--compare-baselines` | 运行基线比较及统计 | 关闭 |
| `--n-step` | 启用 N 步返回 | 关闭 |
| `--n-steps` | N 步返回的步数 | 3 |
| `--prioritized-replay` | 优先经验回放 | 关闭 |
| `--checkpoint-dir` | 模型保存目录 | `models` |
| `--log-dir` | 日志目录 | `logs` |
| `--output-dir` | 图表输出目录 | `figures` |
## 技术细节
### 观测空间(9维)
| 特征 | 捕获内容 | 范围 |
|---------|-----------------|-------|
| `login_rate` | 每窗口的原始登录尝试次数 | [0, 200] |
| `file_access_rate` | 每窗口的原始文件访问次数 | [0, 500] |
| `cpu_usage` | CPU 利用率 | [0, 100] |
| `login_delta` | 登录率的变化率 | [-100, 100] |
| `file_delta` | 文件访问率的变化率 | [-200, 200] |
| `cpu_delta` | CPU 的变化率 | [-50, 50] |
| `login_ma` | 登录率的移动平均(10 步) | [0, 200] |
| `file_ma` | 文件访问率的移动平均(10 步) | [0, 500] |
| `sustained_indicator` | 指标持续升高的时长 | [0, 1] |
差分和移动平均特征帮助智能体区分正常的波动与突然的攻击开始峰值。
### 动作空间
| 动作 | 描述 | 误报成本 |
|--------|-------------|-------------------|
| 不作为 | 继续监控 | 无 |
| 阻止 IP | 阻止可疑来源 | 低 |
| 锁定账户 | 冻结被入侵账户 | 中 |
| 终止进程 | 终止可疑进程 | 中 |
| 隔离主机 | 隔离整台机器 | 高 |
### 攻击模拟
攻击被建模为具有基于真实数据集拟合参数的概率有限状态机:
**暴力破解(SSH 凭证填充):**
```
Idle → Probing → Active → Compromised
```
**勒索软件(文件加密):**
```
Idle → Execution → Encryption → Data Loss
```
防御动作可以以阶段相关概率中断转换(越早越有效)。
### 智能体架构
- **Dueling Double DQN** — 将状态价值与动作优势分离
- **网络**:128 → 64 → 32(共享),然后价值流(32 → 1)和优势流(32 → 5)
- **经验回放**:10,000 缓冲区,小批量大小 64
- **目标网络**:每 10 个回合同步
- **Epsilon**:1.0 → 0.01,衰减因子 0.995
### 奖励结构
| 事件 | 奖励 |
|-------|--------|
| 早期遏制(第 0-1 阶段) | +50 |
| 晚期遏制(第 2 阶段及以后) | +20 |
| 正确不作为 | +1 |
| 误报 | −10 |
| 漏报(入侵) | −30 |
| 冗余动作 | −5 |
| 每步成本 | −0.1 |
### 基线
六个基线用于比较,每个在 100 个回合内使用相同种子进行评估:
1. **随机** — 均匀随机动作选择
2. **不作为** — 始终监控,从不行动
3. **阈值** — 固定指标截止值(类似于基本 SIEM 规则)
4. **Snort 风格** — 签名式阈值规则
5. **NIST 800-61** — 按 NIST 指南的加权影响评分
6. **MITRE ATT&CK** — 技术检测(T1110、T1486)及基于严重程度的响应
### 统计验证
所有 DQN 与基线的比较包括:
- 独立样本 t 检验(p 值)
- Cohen's d 效应量
- 95% 置信区间
结果保存到 `logs/statistical_results.json`。
## 基础论文
我们的工作通过以下方式扩展了他们的方法:
- 使用**自定义 Gymnasium 环境**而非 CyberBattleSim
- 基于**真实数据集参数**(CICIDS 2017、CERT)构建攻击模拟
- 专注于**事件响应动作**而非抽象网络防御
- 与**行业标准安全框架**(Snort、NIST、MITRE)进行比较
## 参考文献
- Hammar & Stadler(2021)——*Finding Effective Security Strategies through RL and Self-Play*(基础论文)
- CICIDS 2017 —— 加拿大网络安全研究所入侵检测数据集
- CERT 内部威胁数据集 —— 软件工程研究所
- Mnih 等人(2015)——*Human-level control through deep reinforcement learning*
- Van Hasselt 等人(2016)——*Deep Reinforcement Learning with Double Q-learning*
- Wang 等人(2016)——*Dueling Network Architectures for Deep Reinforcement Learning*
## 团队
| 姓名 | 学号 |
|------|---------|
| Pratyush Kumar | 23BCS099 |
| Ritik Kumar Shahi | 23BCS110 |
| Saisha Bore | 23BCS116 |
| Aryan Talikoti | 23BCS018 |
## 许可证
本项目作为小项目的一部分,仅供教育目的使用。
标签:CERT内部威胁, CICIDS数据集, Double DQN, DQN, Dueling DQN, Gymnasium环境, IPS, Python安全工具, 人工智能安全, 免杀技术, 入侵响应, 勒索软件检测, 合规性, 威胁检测与响应, 强化学习, 强化学习网络安全, 强化学习训练, 攻击模拟, 智能防御, 暴力破解检测, 深度强化学习, 红队行动, 网络威胁检测, 网络安全, 自动化事件响应, 逆向工具, 隐私保护, 驱动签名利用