Prags-server/port-scanner

GitHub: Prags-server/port-scanner

一款模拟SOC工作流的Python网络端口扫描器,集成了服务识别、风险分级与专业报告生成功能,帮助安全团队快速发现和评估暴露的网络服务。

Stars: 0 | Forks: 0

# 🔐 网络端口扫描器与安全报告生成工具 **一个生产级 Python 工具,模拟 SOC(安全运营中心)工程师的工作流程** [![Python 3.8+](https://img.shields.io/badge/Python-3.8+-blue.svg)](https://www.python.org/downloads/) [![安全](https://img.shields.io/badge/Security-Port%20Scanning-red.svg)](https://owasp.org/) [![许可证](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE) ## 📋 概述 该工具自动化了 SOC 工程师的日常工作:扫描网络开放端口、识别运行中的服务、分类安全风险以及生成专业报告。它将基于 socket 的端口扫描与智能服务识别及风险评估结合在一起。 ### 主要特性 ✅ **基于 Socket 的端口扫描** - 通过直接 TCP 连接识别开放端口 ✅ **服务识别** - 自动识别 25 种以上的常见服务 ✅ **风险分类** - 智能风险等级划分 (CRITICAL, HIGH, MEDIUM, LOW) ✅ **颜色编码输出** - 带有直观风险指示器的终端输出 ✅ **结构化报告** - 适用于合规性审查和文档记录的专业 .txt 报告 ✅ **多线程扫描** - 具有可配置线程数的快速并发扫描 ✅ **灵活的端口选择** - 可扫描常用端口、自定义端口或全部 65535 个端口 ✅ **生产就绪** - 健壮的错误处理和参数验证机制 ## 🛠️ 安装 ### 环境要求 - Python 3.8 或更高版本 - Linux、macOS 或 Windows - 无外部依赖(仅使用 Python 标准库) ### 安装步骤 ``` # 克隆或下载 repository git clone https://github.com/yourusername/port-scanner.git cd port-scanner # 使 script 可执行(Linux/macOS) chmod +x port_scanner.py # 直接运行(Python 将找到 script) python port_scanner.py --help ``` ## 🚀 使用方法 ### 基础扫描(常用端口) 扫描目标上最常受到攻击的 25 个端口: ``` python port_scanner.py 192.168.1.1 ``` **输出内容:** - 颜色编码的终端显示 - 报告保存在 `reports/` 目录中 ### 自定义端口扫描 扫描特定端口: ``` python port_scanner.py 10.0.0.5 -p 22,80,443,3306,5432 ``` ### 激进扫描 扫描所有 65535 个端口(⚠️ 速度较慢,请谨慎使用): ``` python port_scanner.py 172.16.0.1 --all-ports ``` ### 性能调优 调整线程数以实现更快或更慢的扫描: ``` # 更快的速度(100 个并发 threads) python port_scanner.py 192.168.1.1 -t 100 # 更慢,更可靠(20 个 threads) python port_scanner.py 192.168.1.1 -t 20 ``` ### 高级选项 ``` # 自定义输出文件名 python port_scanner.py 192.168.1.1 -o custom_report.txt # 仅报告(抑制终端输出) python port_scanner.py 192.168.1.1 --quiet # 组合选项 python port_scanner.py 10.0.0.5 -p 22,80,443,8080,8443 -t 50 -o security_audit.txt ``` ## 📊 输出示例 ### 终端输出 ``` ╔════════════════════════════════════════════════════════════════╗ ║ NETWORK PORT SCANNER & SECURITY REPORTER v1.0 ║ ╚════════════════════════════════════════════════════════════════╝ Target: 192.168.1.100 Scan Date: 2026-04-24 14:32:15 Total Ports Scanned: 25 Open Ports Found: 8 ═══════════════════════════════════════════════════════════════ PORT SERVICE DESCRIPTION RISK ═══════════════════════════════════════════════════════════════ 6379 Redis Redis Cache CRITICAL 27017 MongoDB MongoDB Database CRITICAL 22 SSH Secure Shell LOW 80 HTTP HyperText Transfer Protocol LOW 443 HTTPS Secure HyperText... LOW 3306 MySQL MySQL Database HIGH 5432 PostgreSQL PostgreSQL Database HIGH 5900 VNC Virtual Network Computing HIGH ═══════════════════════════════════════════════════════════════ RISK SUMMARY: ● CRITICAL: 2 ● HIGH: 3 ● LOW: 3 ⚠️ RECOMMENDATION: Review and close unnecessary open ports! ``` ### 报告文件 详细的 .txt 报告会自动保存到 `reports/` 目录,其中包含: - 扫描元数据 - 风险评估摘要 - 详细端口信息 - 安全建议 - 合规性就绪的格式化内容 ## 🔍 支持的服务(25+ 常用端口) | 端口 | 服务 | 风险 | 类别 | | ---------------- | ---------- | ----------- | ------------- | | 21 | FTP | 🔴 CRITICAL | 文件传输 | | 22 | SSH | 🟢 LOW | 远程访问 | | 23 | Telnet | 🔴 CRITICAL | 远程访问 | | 80 | HTTP | 🟢 LOW | Web | | 443 | HTTPS | 🟢 LOW | Web | | 445 | SMB | 🟡 HIGH | 文件共享 | | 3306 | MySQL | 🟡 HIGH | 数据库 | | 3389 | RDP | 🟡 HIGH | 远程访问 | | 5432 | PostgreSQL | 🟡 HIGH | 数据库 | | 6379 | Redis | 🔴 CRITICAL | 缓存 | | 27017 | MongoDB | 🔴 CRITICAL | 数据库 | | ... 以及 15+ 个端口 | | | | 请参阅 `port_scanner.py` 获取完整的端口数据库。 ## 🎯 使用场景 ### 1. **安全审计** 识别应被限制访问或修补的暴露服务。 ``` python port_scanner.py 10.0.0.0 -p 22,3306,5432,27017 ``` ### 2. **合规性验证** 为安全评估和合规性检查生成报告。 ``` python port_scanner.py 192.168.1.50 --all-ports -o compliance_report.txt ``` ### 3. **内部网络加固** 扫描内部系统以发现不必要的开放端口。 ``` python port_scanner.py 172.16.0.0 -t 100 # Fast scan with many threads ``` ### 4. **事件响应** 在调查受损系统时快速评估正在运行的服务。 ``` python port_scanner.py 192.168.1.1 --quiet # Get report without noise ``` ## 📈 SOC 工作流集成 此工具复现了真实的 SOC 工作流: ``` 1. Asset Discovery → 2. Port Enumeration → 3. Service Identification → 4. Risk Classification → 5. Report Generation → 6. Remediation Tasks ``` 专业的 SOC 团队每天使用类似的工具来: - 监控网络攻击面 - 验证安全策略 - 调查可疑连接 - 记录基础设施清单 - 跟踪合规性要求 ## ⚙️ 技术细节 ### 架构 ``` port_scanner.py ├── Colour Class → ANSI terminal formatting ├── PORT_DATABASE → Service metadata & risk classification ├── Scanning Functions → Socket operations & threading ├── Output Formatters → Terminal & report generation └── Main Entry Point → CLI argument parsing ``` ### 线程模型 - 可配置的工作线程(默认:50 个) - 并发 socket 连接 - 线程安全的结果收集 - 自动超时处理 ### 风险分类逻辑 - **CRITICAL**:具有已知默认漏洞的服务(Redis, MongoDB) - **HIGH**:不应暴露在外的数据库和远程访问服务 - **MEDIUM**:电子邮件及次关键服务 - **LOW**:标准 Web 服务和安全协议 ## 🔒 安全注意事项 ### ⚠️ 法律与道德使用 - **仅扫描您拥有或已获得测试授权的网络** - 未经授权的端口扫描在您所在的司法管辖区可能是违法的 - 仅用于经过授权的安全评估 - 始终记录授权信息以备合规检查 ### 运营安全 - 扫描行为可能会被 IDS/IPS 系统检测到 - 高线程数可能会产生大量网络噪音 - 在扫描前务必通知网络管理员 - 首先在内部/实验室网络上进行测试 ## 🐛 故障排除 ### 问题:"Invalid IP address" ``` # ✓ 正确的格式 python port_scanner.py 192.168.1.1 # ✗ 不正确 python port_scanner.py 192.168.1 python port_scanner.py example.com # Use IP, not hostname ``` ### 问题:在 Linux 上提示 "Permission Denied" ``` sudo python port_scanner.py 192.168.1.1 # OR chmod +x port_scanner.py ./port_scanner.py 192.168.1.1 ``` ### 问题:扫描速度慢 ``` # 增加 threads 并使用自定义 port 列表 python port_scanner.py 192.168.1.1 -p 22,80,443,3306 -t 100 ``` ### 问题:误报过多 ``` # 减少 thread 数量以避免超时 python port_scanner.py 192.168.1.1 -t 20 ``` ## 📝 工作原理 ### 1. 端口扫描 ``` # 创建 TCP socket 并尝试连接 socket.connect_ex((host, port)) # Returns 0 if open ``` ### 2. 服务识别 ``` # 在 PORT_DATABASE 中查找 port port_info = PORT_DATABASE.get(port) ``` ### 3. 风险分类 ``` # 基于 service 暴露风险的风险级别 "CRITICAL" → Redis/MongoDB exposed "HIGH" → Databases/RDP exposed ``` ### 4. 报告生成 ``` # 格式化结果并保存到文件 # 包含 metadata、recommendations、compliance 信息 ``` ## 🤝 贡献 欢迎贡献!以下是一些可以改进的方向: - 通过 banner grabbing 进行服务版本检测 - IPv6 支持 - CIDR 范围扫描 - 增加更多服务数据库条目 - 防火墙检测 - XML/JSON 报告格式 ## 📜 许可证 MIT 许可证 - 详情请参阅 LICENSE 文件 ## 🎓 学习资源 **理解端口扫描:** - [OWASP:端口扫描](https://owasp.org/) - [RFC 3629:TCP/IP 详解](https://tools.ietf.org/html/rfc793) - [Nmap 端口扫描指南](https://nmap.org/) **SOC 工程概念:** - Security Onion 文档 - NIST 网络安全框架 - CIS 网络安全控制措施 ## 💬 问题与支持 关于本项目的问题: 1. 查看上面的故障排除部分 2. 阅读代码注释 3. 先使用示例 IP 进行测试 4. 查看 README 中的示例 **用 🔒 为有志成为 SOC 工程师和安全专业人士的人打造**
标签:Python, Python标准库, Qt框架, TCP扫描, 占用监测, 合规报告, 安全报告生成, 安全运营中心, 开源安全工具, 插件系统, 数据统计, 无后门, 服务识别, 检测规则, 端口扫描, 网络安全, 网络扫描器, 网络映射, 网络资产发现, 资产管理, 逆向工具, 逆向工程平台, 隐私保护