Harshith-b46/CyberTwin-SOC

GitHub: Harshith-b46/CyberTwin-SOC

CyberTwin-SOC 是一个基于 Mininet 网络仿真的预测性安全运营中心平台,结合规则引擎与机器学习实现混合入侵检测和自动化缓解。

Stars: 0 | Forks: 0

# CyberTwin SOC — 预测性网络防御数字孪生 这是一个模拟的企业网络测试平台,它结合了基于 Mininet 的网络仿真、Zeek 流量监控、基于规则与机器学习的混合入侵检测,以及自动化的实时缓解机制,并通过基于 Streamlit 的安全运营中心(SOC)仪表板进行呈现。 ## 架构概述 系统采用三个独立的检测层: 1. **基于规则的引擎** (`flow_aggregator.py`) — 针对实时的 Zeek 流统计数据手工调整的阈值。涵盖 8 种攻击类型:DoS、PortScan、BruteForce、WebAttack、Bot、Exploit、Shellcode、Infiltration。这是实时检测流水线的核心主干。 2. **Isolation Forest**(无监督学习,`isolation_zeek.pkl`) — 在系统自身观察到的良性 Zeek 流量上进行训练。它会在不要求标记样本的情况下,将任何不匹配已知规则引擎特征 flow 标记为“异常”。 3. **Random Forest ×2**(监督学习,`random_forest.pkl` / `rf_unsw.pkl`) — 在 CICIDS2017 和 UNSW-NB15 公共基准数据集上进行训练(准确率分别为 99% / 88%)。这展示了在标准学术数据上的监督机器学习分类能力。**由于特征集不兼容(78 个源自 CICIDS 的统计特征与约 16 个源自 Zeek 的 flow 特征对比),它们目前并未集成到基于 Zeek 的实时检测路径中**。它们的作用是基准测试和演示,而非实时的网络防御。 检测到的事件会被映射到 MITRE ATT&CK 技术,通过差异化的缓解引擎(根据攻击类型,采取立即阻断 / 限速后升级 / 监控后升级),并在 SOC 仪表板中展示。 ## 前置条件 - Ubuntu 22.04(或类似的 Linux 发行版) - Mininet - Open vSwitch (OVS) - Zeek 8.0.5(安装在 `/opt/zeek/bin/zeek`) - Python 3.10,并安装:`pandas`、`numpy`、`scikit-learn`、`streamlit`、`matplotlib` - `hping3`、`nmap`、`netcat`(用于攻击模拟脚本) ## 完整启动序列 每次会话都必须按顺序执行此序列,因为 Mininet 和 OVS 的状态在重启后不会保留。 ### 1. 清理之前的会话 ``` sudo pkill -f zeek sudo pkill -f live_monitor.py sudo pkill -f blocklist_watcher.py sudo pkill -f streamlit sudo mn -c sudo killall ovs-testcontroller ``` ### 2. 启动 Mininet 拓扑 ``` sudo python3 ~/cyber_twin/enterprise_network_large.py ``` 这会启动一个跨越 7 个 VLAN(Employee、Server、Database、DMZ、Management、IoT、Guest)的包含 30 台主机和 8 台交换机的拓扑,并进入 Mininet CLI (`mininet>`)。 ### 3. 设置流量镜像(在新的终端中,一旦出现 `mininet>` 提示符即可执行) Zeek 只能看到其监听的特定接口上的流量。由于您的拓扑跨越了不同交换机端口上的多个 VLAN,因此必须将核心交换机上的所有流量镜像到一个专用的监控端口。 ``` bash ~/cyber_twin/setup_mirror.sh ``` 或手动执行: ``` sudo ovs-vsctl -- add-port s1 mirror0 -- set interface mirror0 type=internal sudo ovs-vsctl -- --id=@mirror0 get port mirror0 -- --id=@m create mirror name=mymirror select-all=true output-port=@mirror0 -- set bridge s1 mirrors=@m sudo ip link set mirror0 up ``` 验证:`sudo ovs-vsctl list mirror` 应显示 `select_all: true`。 ### 4. 在镜像接口上启动 Zeek ``` cd ~/cyber_twin/logs sudo /opt/zeek/bin/zeek -i mirror0 -C ``` ### 5. 启动目标监听器(从 `mininet>` 提示符执行) 多种攻击类型要求目标上存在真实的、可响应的服务,以产生真实的流量(否则连接将因零字节而失败,分类器自然无法将其与噪音区分开来)。 ``` web1 python3 -m http.server 80 & ftp bash -c "while true; do python3 /home/harshithb46/cyber_twin/attacks/echo_server.py 21; done" & web2 bash -c "while true; do python3 /home/harshithb46/cyber_twin/attacks/echo_server.py 4444; done" & ``` ### 6. 加载攻击模拟模块(从 `mininet>` 执行) ``` py __import__('sys').path.append('/home/harshithb46/cyber_twin/attacks') py exec("from dos_attack import run_dos") py exec("from portscan_attack import run_portscan") py exec("from bruteforce_attack import run_bruteforce") py exec("from web_attack import run_web_attack") py exec("from bot_attack import run_bot_beacon") py exec("from exploit_attack import run_exploit") py exec("from shellcode_attack import run_shellcode") py exec("from infiltration_attack import run_infiltration") ``` ### 7. 启动实时监控器 **必须在确认 Zeek 正在运行后,且在任何攻击执行之前启动** — 它在 `conn.log` 中的位置跟踪会在首次读取时初始化为文件末尾,因此在此步骤之前生成的流量将无法被检测到。 ``` python3 ~/cyber_twin/live_monitor.py ``` ### 8. 启动黑名单监控器(执行实际的缓解措施) ``` sudo python3 ~/cyber_twin/blocklist_watcher.py ``` ### 9. 启动仪表板 ``` streamlit run ~/cyber_twin/dashboard/app.py ``` 默认登录凭据:`admin` / `admin123`,`analyst` / `analyst123`。 ## 运行攻击 所有攻击脚本都必须在 Mininet CLI 的 `py` 命令中调用,因为它们需要实时的 Mininet 主机对象: ``` py run_dos(net.get('emp1'), '10.0.2.1', 8) py run_portscan(net.get('emp2'), '10.0.2.2', '1-1000') py run_bruteforce(net.get('emp3'), '10.0.2.4', 25) py run_web_attack(net.get('emp4'), '10.0.2.1') py run_bot_beacon(net.get('emp5'), '10.0.2.2', 4444) py run_exploit(net.get('emp6'), '10.0.2.4', 21) py run_shellcode(net.get('emp7'), '10.0.2.4', 21) py run_infiltration(net.get('emp8'), '10.0.2.4', 21, 65) ``` **获取干净、不受污染结果的最佳实践:** 每次测试使用一个全新的、之前未被封锁的主机;避免在从同一源发起攻击之前,立即对目标进行连通性检查(`ping`),因为这会混入同一个 flow 聚合窗口中。 对于脚本化的实时序列:`demo_mode.py`(在 Mininet CLI 中使用实时的 `net` 对象调用)。 ## 已知局限性 - **检测延迟并不一致。** 快速、突发的攻击(DoS、BruteForce、Shellcode)会在 1~2 秒内完成解析。需要持续连接的攻击(WebAttack、Infiltration)受限于 Zeek 由连接关闭触发的日志刷新机制,在极端情况下可能会引入长达数分钟的延迟。 - **实时监控器偶尔无法显示慢速形成攻击的最终分类结果**,尽管底层的分类(可通过直接离线查询验证)是正确的。这是一个实时轮询显示上的缺陷,而非检测精度缺陷。 - **“预测性”杀伤链组件**(`attack_chain.py`)是一个手工编写的、基于 MITRE 的启发式查找表,而不是一个学习/统计预测模型。 - **反馈到再训练的流水线**目前能将风险评分作为真实信号捕获,但尚未针对每次修正持久化完整的 flow 特征向量。 - 由于公共基准数据集与实时捕获的 flow 统计信息之间的特征集不兼容,**Random Forest 模型未集成到基于 Zeek 的实时检测中**。 - **缺乏针对实时规则引擎在大规模良性流量下的正式误报率评估**;其正确性已通过手动测试针对每种攻击类型进行了验证,而非通过统计基准测试。 - **没有身份验证加固机制**(速率限制、会话过期、HTTPS) — 仪表板登录是一个功能原型,未经过生产环境级别的加固。 - **OVS 镜像和目标监听器设置在 Mininet 重启后不会保留**,必须在每次会话中重新配置。 ## 项目结构 ``` cyber_twin/ ├── enterprise_network_large.py # 30-host, 8-switch, 7-VLAN Mininet topology ├── flow_aggregator.py # Zeek log parsing, flow aggregation, rule-based classification ├── detection_engine.py # Stub for future multi-model fusion (not currently active) ├── live_monitor.py # Main real-time detection loop ├── mitigation_engine.py # Attack-type-specific mitigation strategy execution ├── blocklist.py / blocklist_watcher.py # IP blocklist management and real iptables/tc execution ├── mitre_mapping.py # MITRE ATT&CK technique/tactic mapping ├── attack_chain.py # Heuristic next-attack prediction (kill-chain lookup) ├── email_alerts.py # SMTP alerting with cooldown ├── feedback.py # Analyst feedback recording and export for retraining ├── retrain.py # Model retraining using original data + feedback ├── merge_datasets.py # Builds merged_dataset.csv (required by retrain.py) ├── train_isolation_zeek.py # Trains the Zeek-specific Isolation Forest ├── demo_mode.py # Scripted live attack sequence for demonstrations ├── multi_attacker_simulation.py # Concurrent multi-VLAN attacker demonstration ├── setup_mirror.sh # OVS port-mirror configuration script ├── attacks/ # Individual attack simulation scripts + echo_server.py listener ├── dashboard/app.py # Streamlit SOC dashboard ├── models/ # Trained model artifacts (.pkl) and training scripts ├── features/ # Source datasets (CICIDS2017, UNSW-NB15) and derived feature files ├── logs/ # Runtime state: conn.log, alerts.csv, blocklist.json, feedback.json └── reports/ # PDF incident report generation ```
标签:Apex, CISA项目, IP 地址批量处理, Kubernetes, 安全运营中心, 插件系统, 机器学习, 网络数字孪生, 网络映射, 自动防御响应, 逆向工具