0xNullVector/NetSentinel

GitHub: 0xNullVector/NetSentinel

一款零 root 依赖的被动网络威胁情报引擎,基于启发式分析和 MITRE ATT&CK 映射,在终端实时检测端口扫描、横向移动、C2 通信等多种网络威胁。

Stars: 0 | Forks: 0

# NetSentinel — 被动网络威胁情报引擎 一个概念验证、零 root 依赖的被动网络监控器,通过行为分析、启发式算法和 MITRE ATT&CK 映射来检测真实威胁。 ## 检测内容 | 威胁 | MITRE 技术 | 严重级别 | |----------------------------|------------------------------|----------| | 可疑端口连接 | T1571 – 非标准端口 | HIGH | | 端口扫描活动 | T1046 – 网络发现 | HIGH | | 横向移动尝试 | T1021 – 远程服务 | CRITICAL | | DNS 隧道 / 劫持 | T1071.004 – DNS | MEDIUM | | Tor 网络使用 | T1090.003 – 多跳代理 | HIGH | | C2 信标模式 | T1071 – 应用层协议 | MEDIUM | | 可疑进程生成 | T1059 – 脚本解释器 | CRITICAL | | ARP 缓存投毒 | T1557.002 – ARP 投毒 | CRITICAL | | 大量数据外泄 | T1048 – 替代协议外泄 | HIGH | ## 快速开始 ``` # 安装依赖 pip install rich psutil requests # 运行 60 秒分析 (默认) python3 netsentinel.py # 运行 5 分钟并使用自定义报告路径 python3 netsentinel.py -d 300 -o my_report.json # 使用 Ctrl+C 提前停止 — 报告依然会保存 ``` ## 输出 **实时仪表盘** (终端,每 2 秒刷新一次): - 带有 MITRE 映射的颜色编码威胁事件 - 活动连接(用青色标记外部 IP) - 监听端口(用红色标记高风险端口) - 系统 CPU/内存/网络错误指标 - 已用时间和威胁严重级别计数器 **JSON 报告** (`netsentinel_report.json`): ``` { "report_metadata": { "hostname": "...", "generated_at": "...", ... }, "executive_summary": { "total_threats": 3, "by_severity": { "HIGH": 2, "MEDIUM": 1 }, "risk_level": "HIGH" }, "threat_events": [...], "network_state": { "active_connections": [...], "listening_ports": [...] }, "recommendations": [...] } ``` ## 架构 ``` netsentinel.py ├── ThreatIntelEngine # All detection logic (pure Python, heuristic-based) │ ├── check_suspicious_port() │ ├── check_port_scan_victim() │ ├── check_lateral_movement() │ ├── check_dns_anomaly() │ ├── check_beaconing() │ ├── check_tor_usage() │ ├── check_unusual_parent() │ └── check_data_exfil_volume() │ ├── NetworkCollector # psutil-based live network state collection │ ├── get_connections() │ ├── get_listening_ports() │ ├── get_arp_table() │ ├── check_arp_spoofing() │ └── get_system_metrics() │ ├── Dashboard # Rich terminal UI — live, color-coded │ └── ReportGenerator # Structured JSON threat intelligence reports ``` ## 无需 Root NetSentinel 使用 **psutil** 进行连接检查——无需原始数据包捕获。 这意味着它可以在大多数系统上不使用 `sudo` 运行,既安全又便于移植。 对于 ARP 欺骗检测,它会调用所有平台均可用的 `arp -a` 命令。 ## 扩展 NetSentinel 在 `ThreatIntelEngine` 中添加新的检测规则: ``` def check_my_new_threat(self, connections): events = [] for c in connections: if : events.append(ThreatEvent( timestamp=datetime.now().isoformat(), threat_type="MY_THREAT", severity="HIGH", source_ip=c.local_addr, dest_ip=c.remote_addr, port=c.remote_port, description="...", mitre_tactic="...", mitre_technique="T1XXX – ...", )) return events ``` 然后在 `NetSentinel.run()` 中添加对它的调用。 ## 免责声明 NetSentinel 仅用于授权的安全监控。 请仅在您拥有或已获得明确授权进行监控的网络和系统上使用。 版权归 [0xNullVector](https://github.com/0xNullVector) 所有
标签:ARP欺骗检测, C2通信检测, Cloudflare, DNS隧道检测, IP 地址批量处理, MITRE ATT&CK, PE 加载器, PoC, Python, Tor网络检测, 入侵检测系统, 启发式检测, 威胁情报, 安全数据湖, 开发者工具, 开源安全工具, 插件系统, 数据渗出检测, 无后门, 暴力破解, 横向移动检测, 端口扫描检测, 终端安全, 网络安全, 网络流量分析, 被动网络监控, 逆向工具, 逆向工程平台, 隐私保护, 零依赖