JefferyCyber/Network-traffic-monitor

GitHub: JefferyCyber/Network-traffic-monitor

基于 Python 和 Scapy 的轻量级实时网络流量监控与异常检测工具,能捕获数据包并针对端口扫描、SYN 洪水、DNS 隧道等威胁即时告警。

Stars: 0 | Forks: 0

# 🛡️ NetWatch — 实时网络流量监控工具 ![Python](https://img.shields.io/badge/Python-3.8+-blue?style=flat-square&logo=python) ![License](https://img.shields.io/badge/License-MIT-green?style=flat-square) ![Platform](https://img.shields.io/badge/Platform-Windows%20%7C%20Linux%20%7C%20macOS-lightgrey?style=flat-square) ![Status](https://img.shields.io/badge/Status-Active-brightgreen?style=flat-square) 一个基于 Python 和 Scapy 构建的实时网络流量监控与异常检测工具。能够捕获实时数据包,分析协议,并针对可疑活动(包括端口扫描、SYN 洪水攻击、DNS 隧道以及连接到已知恶意端口的行为)自动发出警报。 ## 🚀 功能特性 - **实时数据包捕获** — 使用 Scapy 嗅探所选接口上的所有流量 - **协议分析** — 深入解析 TCP、UDP、ICMP、DNS、HTTP、ARP 流量 - **异常检测** — 基于滑动窗口检测以下威胁: - 端口扫描(10秒内探测 15 个以上独立端口) - SYN 洪水攻击(10秒内出现 50 个以上 SYN 数据包) - ICMP Ping 洪水(10秒内出现 20 个以上数据包) - DNS 隧道(长查询 + 高频查询请求) - 可疑端口流量(Metasploit、Tor、C2 端口等) - **HTTP 检查** — 记录 HTTP 方法、主机和路径 - **DNS 日志** — 捕获会话期间的所有 DNS 查询 - **实时统计仪表盘** — 每 15 秒输出主要通信节点(Top talkers)及协议分布情况 - **双重报告输出** — 退出时保存 `.txt` 摘要和 `.json` 报告 ## 📋 系统要求 - Python 3.8+ - Scapy - **Windows:** 必须安装 [Npcap](https://npcap.com/#download) 才能进行数据包捕获 - **Linux/macOS:** 需使用 `sudo` 运行 ## ⚙️ 安装说明 ``` # Clone 仓库 git clone https://github.com/JefferyCyber/network-traffic-monitor.git cd network-traffic-monitor # 安装依赖 pip install -r requirements.txt # Windows — 同时安装 Npcap # https://npcap.com/#download ``` ## 🖥️ 使用方法 ``` # Linux/macOS — 需要 root sudo python3 src/monitor.py # Windows — 以管理员身份运行终端 python src/monitor.py # 指定网络接口 python src/monitor.py -i eth0 python src/monitor.py -i "Wi-Fi" # Apply BPF filter(仅捕获 TCP 端口 80) python src/monitor.py -f "tcp port 80" # 精确捕获 500 个数据包后停止 python src/monitor.py -c 500 # 禁用定期统计 python src/monitor.py --no-stats ``` 随时按下 **Ctrl+C** 可停止捕获并保存报告。 ## 📊 示例输出 ``` [+] Capture started... [DNS] 192.168.1.5 → google.com [DNS] 192.168.1.5 → api.github.com [HTTP] 192.168.1.10 → example.com/index.html [GET] ─────────────────────────────────────────────────── LIVE STATS | 14:32:10 ─────────────────────────────────────────────────── Packets captured : 1,204 (80.3/s) Alerts raised : 2 Protocols : {'TCP': 890, 'UDP': 210, 'DNS': 85, 'ICMP': 19} Top talkers: 192.168.1.5 432 packets 192.168.1.10 198 packets [HIGH] [14:32:18] PORT SCAN DETECTED Source IP : 192.168.56.101 Details : Probed 17 unique ports in 10s [+] JSON report : reports/netwatch_20260514_143210.json [+] Text report : reports/netwatch_20260514_143210.txt ``` ## 📁 项目结构 ``` network-traffic-monitor/ ├── src/ │ └── monitor.py # Main monitor ├── reports/ # Auto-generated session reports ├── screenshots/ # Demo screenshots ├── requirements.txt ├── LICENSE └── README.md ``` ## 🔍 异常检测规则 | 威胁 | 触发条件 | 严重级别 | |---|---|---| | 端口扫描 (Port Scan) | 同一 IP 在 10秒内访问 15 个以上独立端口 | HIGH | | SYN 洪水攻击 (SYN Flood) | 同一 IP 在 10秒内发送 50 个以上 SYN 数据包 | CRITICAL | | ICMP 洪水攻击 (ICMP Flood) | 同一 IP 在 10秒内发送 20 个以上 ICMP 数据包 | HIGH | | DNS 隧道 (DNS Tunnelling) | 10秒内超过 30 次 DNS 查询或查询长度大于 50 个字符 | MEDIUM | | 可疑端口 (Suspicious Port) | 流量指向 4444、1337、6667、9050 等端口 | HIGH | ## 🗺️ 发展路线图 - [ ] GUI 仪表盘(Tkinter 或基于 Web) - [ ] 源 IP 的 GeoIP 查询 - [ ] 邮件/Slack 告警集成 - [ ] PCAP 文件分析模式 - [ ] IP 白名单/黑名单管理 - [ ] 与威胁情报源集成 ## 👤 作者 **Jeffery Ayando** - GitHub: [@JefferyCyber](https://github.com/JefferyCyber) - LinkedIn: [jeffery-ayando](https://linkedin.com/in/jeffery-ayando-00a662265) ## ⚖️ 法律免责声明 本工具仅供**授权的网络监控和教育目的**使用。 未经许可监控网络是非法的。 作者不对任何滥用行为承担责任。 ## 📄 许可证 MIT License — 详见 [LICENSE](LICENSE)。
标签:AMSI绕过, DNS隧道检测, HTTP分析, ICMP洪水, Python, Scapy, SYN洪泛检测, 入侵检测系统, 协议分析, 威胁检测, 安全数据湖, 开源安全工具, 异常检测, 插件系统, 无后门, 权限提升, 流量监控, 端口扫描检测, 网络安全, 轻量级工具, 逆向工具, 逆向工程平台, 防御绕过, 隐私保护