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网络检测, 入侵检测系统, 启发式检测, 威胁情报, 安全数据湖, 开发者工具, 开源安全工具, 插件系统, 数据渗出检测, 无后门, 暴力破解, 横向移动检测, 端口扫描检测, 终端安全, 网络安全, 网络流量分析, 被动网络监控, 逆向工具, 逆向工程平台, 隐私保护, 零依赖