MajorCommotion/network-security-scanner

GitHub: MajorCommotion/network-security-scanner

一款纯Python实现的网络安全扫描工具,用于主机发现、端口扫描、服务检测和漏洞评估,提供风险评分和防护建议。

Stars: 0 | Forks: 0

⚠️ 法律警告 - 请仔细阅读 此工具仅用于**教育**和**防御性安全**目的。 **授权使用:** - ✅ 扫描您拥有的网络 - ✅ 在获得明确书面许可的情况下进行测试 - ✅ 对您自己的基础设施进行安全审计 - ❌ 禁止未经授权扫描网络 - ❌ 未经授权的扫描可能违反法律(如《计算机欺诈和滥用法》等) **使用本工具即表示您同意:** - 您拥有扫描目标网络的合法授权 - 您接受自己行为的全部责任 - 作者不对误用承担责任 # 网络安全扫描器 专业级网络侦察和漏洞评估工具,用于防御性安全操作。 ## 功能特性 ✅ **主机发现** - Ping 扫描以查找活动设备 ✅ **端口扫描** - 识别每个主机上的开放端口 ✅ **服务检测** - 确定运行的服务 ✅ **操作系统指纹识别** - 基于服务签名的有根据猜测 ✅ **漏洞评估** - 识别常见安全问题 ✅ **风险评分** - 自动风险等级分类 ✅ **MAC 地址解析** - 设备供应商识别 ✅ **综合报告** - 文本或 JSON 输出 ✅ **缓解指导** - 可操作的安全建议 ## 安装 ### 前置条件 ``` # Python 3.6+ python3 --version # 用于增强功能的可选工具: sudo apt install fping arp-scan # Debian/Ubuntu brew install fping arp-scan # macOS ``` ### 设置 ``` # 克隆仓库 git clone https://github.com/lexcellent/network-security-scanner.git cd network-security-scanner # 设置可执行权限 chmod +x scanner.py # 无依赖!纯 Python 标准库 ``` ## 使用方法 ### 基本扫描(家庭网络) ``` # 扫描本地网络 ./scanner.py 192.168.1.0/24 ``` **输出:** ``` [*] Performing ping sweep on 192.168.1.0/24... [+] Found 8 active hosts [*] Scanning 8 hosts for open ports and services... [*] Scanning 192.168.1.1... [*] Scanning 192.168.1.10... ... ``` ### 高级用法 #### 保存报告到文件 ``` ./scanner.py 192.168.1.0/24 --output security-report.txt ``` #### JSON 输出(用于自动化) ``` ./scanner.py 192.168.1.0/24 --format json --output report.json ``` #### 更快扫描(更短超时) ``` ./scanner.py 192.168.1.0/24 --timeout 1 ``` #### 扫描特定子网 ``` # 仅扫描 192.168.1.100-199 ./scanner.py 192.168.1.100/26 ``` ## 示例报告 ``` ============================================================ NETWORK SECURITY ASSESSMENT REPORT ============================================================ Scan Date: 2026-04-05 10:53:21 Network: 192.168.1.0/24 Total Hosts Discovered: 8 ============================================================ RISK SUMMARY: Critical: 0 High: 2 Medium: 3 Low: 3 🟠 HOST #1: 192.168.1.1 ------------------------------------------------------------ Hostname: router.local MAC Address: 00:11:22:33:44:55 Vendor: Ubiquiti Networks OS Guess: Unknown Risk Level: HIGH Open Ports: 3 Services: - 22/tcp: SSH - 80/tcp: HTTP - 443/tcp: HTTPS ⚠️ VULNERABILITIES: - HTTP (port 80): Unencrypted web traffic - use HTTPS 🟢 HOST #2: 192.168.1.10 ------------------------------------------------------------ Hostname: umbrel.local MAC Address: AA:BB:CC:DD:EE:FF Vendor: Raspberry Pi Foundation OS Guess: Linux/Unix (SSH, no SMB) Risk Level: LOW Open Ports: 2 Services: - 22/tcp: SSH - 443/tcp: HTTPS ... ============================================================ MITIGATION RECOMMENDATIONS ============================================================ 🟠 HIGH PRIORITY: - Enable encryption for FTP (use SFTP/FTPS) - Secure RDP with strong passwords + 2FA - Configure authentication for Redis/MongoDB 🟡 MEDIUM PRIORITY: - Enable HTTPS for all web services - Review unnecessary open ports - Implement firewall rules GENERAL RECOMMENDATIONS: 1. Keep all software up-to-date 2. Use strong, unique passwords 3. Enable two-factor authentication where possible 4. Close unnecessary ports and services 5. Implement network segmentation 6. Regular security audits 7. Monitor logs for suspicious activity ============================================================ ``` ## 工作原理 ### 阶段 1:主机发现(Ping 扫描) - 使用 `fping`(快速)或回退到标准 `ping` - 检查 CIDR 范围内每个 IP 的 ICMP 响应 - 编译活动主机列表 ### 阶段 2:端口扫描 - 对常见端口进行 TCP 连接扫描(21、22、23、25、80、443 等) - 非侵入性(无 SYN 扫描或激进方法) - 基于超时(默认每个端口 2 秒) ### 阶段 3:服务检测 - 将端口号映射到已知服务 - 识别 HTTP、SSH、FTP、数据库等 ### 阶段 4:操作系统指纹识别 - 基于启发式的操作系统猜测 - 基于服务组合(RDP = Windows,仅 SSH = Linux) ### 阶段 5:漏洞评估 - 检查未加密协议(Telnet、FTP、HTTP) - 识别历史上易受攻击的服务(SMB、无 2FA 的 RDP) - 标记容易配置错误的服务(Redis、MongoDB) ### 阶段 6:风险评分 - **严重:** Telnet 或极度易受攻击的服务 - **高危:** FTP、RDP、暴露的数据库 - **中等:** 无 HTTPS 的 HTTP、不必要的端口 - **低:** 正确保护的服务 ## 检测到的漏洞 ### 🔴 严重 - **Telnet(端口 23):** 未加密的远程访问,密码以明文发送 - **修复:** 禁用 Telnet,使用 SSH(端口 22) ### 🟠 高危 - **FTP(端口 21):** 未加密的文件传输 - **修复:** 使用 SFTP(SSH 文件传输)或 FTPS(TLS 上的 FTP) - **RDP(端口 3389):** 暴力破解目标、凭证填充 - **修复:** 强密码、2FA、仅限 VPN 访问 - **Redis(端口 6379):** 通常暴露且无身份验证 - **修复:** 绑定到本地主机,需要密码 - **MongoDB(端口 27017):** 历史上暴露且无身份验证 - **修复:** 启用身份验证,绑定到本地主机 - **SMB(端口 445):** EternalBlue、勒索软件攻击 - **修复:** 修补 Windows,禁用 SMBv1 ### 🟡 中等 - **HTTP(端口 80):** 未加密的 Web 流量 - **修复:** 重定向到 HTTPS(443),使用 TLS 证书 ## 使用场景 ### 1. 家庭网络安全审计 ``` # 扫描家庭网络 ./scanner.py 192.168.1.0/24 --output home-network-audit.txt # 查看报告以了解: # 未知设备(MAC 地址欺骗、未授权访问) # 意外开放的端口 # 意外运行的服务 ``` ### 2. Umbrel 基础设施检查 ``` # 扫描 Umbrel 服务器子网 ./scanner.py 10.21.21.0/24 --output umbrel-security.txt # 查找: # Bitcoin/Lightning 节点暴露 # 开放端口的 Docker 容器 # 不必要的服务 ``` ### 3. 部署前验证 ``` # 上线前,扫描您的服务器 ./scanner.py /32 # 确认: # 仅开放必要端口 # 无严重漏洞 # 服务配置正确 ``` ### 4. IoT 设备发现 ``` # 查找所有智能家居设备 ./scanner.py 192.168.1.0/24 --format json > iot-devices.json # 识别: # 智能摄像头 # 语音助手 # 智能门锁 # 可能不安全的设备 ``` ## 需求 ### 最小化(核心功能) - Python 3.6+ - 仅使用标准库(无需 pip install) ### 增强版(可选工具) - `fping` - 更快的 ping 扫描 - `arp-scan` - MAC 地址供应商查询(需要 root/sudo) - Root/sudo - 用于访问 ARP 表 **没有可选工具的情况下:** - 扫描器仍然可以工作 - 较慢的 ping 扫描(标准 ping) - 无法识别 MAC 供应商 ## 局限性 ### 此工具可以做到 - ✅ 发现活动主机 - ✅ 识别开放 TCP 端口 - ✅ 检测常见服务 - ✅ 标记明显漏洞 - ✅ 提供缓解建议 ### 此工具做不到 - ❌ 利用漏洞(仅限防御性) - ❌ 破解密码 - ❌ 详细版本指纹识别(无横幅抓取) - ❌ UDP 扫描 - ❌ 隐蔽扫描(SYN、ACK 等) - ❌ 替代专业工具(Nmap、Nessus、Metasploit) **对于专业渗透测试:** 请使用 Nmap、OpenVAS 或商业工具 ## 道德准则 ### ✅ 应该做 - 扫描您拥有的网络 - 在扫描他人网络前获得书面许可 - 用于教育目的 - 保护您自己的基础设施 - 负责任地报告漏洞 ### ❌ 不应该做 - 未经授权扫描网络 - 用于恶意目的 - 未获许可利用发现的漏洞 - 在负责任披露之前公开分享发现的漏洞 - 认为可以"只是测试"他人的网络 ## 与专业工具的比较 ### vs. Nmap - **Nmap:** 更多功能、隐蔽扫描、操作系统检测、NSE 脚本 - **此工具:** 教育性、更简单、无需安装、纯 Python ### vs. Nessus - **Nessus:** 商业级、CVE 数据库、深度漏洞扫描 - **此工具:** 免费、基本检查、快速审计 ### vs. Metasploit - **Metasploit:** 利用框架、渗透测试 - **此工具:** 仅限侦察,无利用 **何时使用此工具:** - 快速网络审计 - 学习网络安全概念 - 家庭/小型网络评估 - 部署前检查 **何时使用专业工具:** - 企业安全审计 - 合规要求(PCI-DSS、SOC 2) - 渗透测试项目 - 详细漏洞分析 ## 故障排除 ### "未找到活动主机" - **原因:** 防火墙阻止 ICMP、网络不可达 - **修复:** 检查网络连接,尝试不同的子网 ### "权限被拒绝"(MAC 地址查询) - **原因:** 访问 ARP 表需要 root 权限 - **修复:** 使用 sudo 运行:`sudo ./scanner.py 192.168.1.0/24` ### 扫描缓慢 - **原因:** 默认每个端口 2 秒超时 - **修复:** 减少超时:`--timeout 1`(可能会错过较慢的主机) ### 未找到 fping - **原因:** 可选工具未安装 - **修复:** 安装 `fping` 或使用回退(自动) ## 法律资源 **相关法律(因司法管辖区而异):** - 美国:《计算机欺诈和滥用法》(CFAA) - 欧盟:GDPR、网络和信息安全指令 - 英国:《1990 年计算机滥用法》 **关键原则:** - 扫描前需要授权 - "只是检查漏洞"不是法律辩护 - 即使意外扫描到错误的网络也可能产生后果 **推荐阅读:** - SANS 学院:"渗透测试中的法律与道德" - OWASP:"道德准则" - EC-Council:"道德黑客指南" ## 贡献 欢迎贡献!提交拉取请求以: - 添加新的漏洞检查 - 附加服务指纹 - 性能改进 - 错误修复 **准则:** - 保持防御性/教育性焦点 - 无利用代码 - 记录所有更改 - 尽可能添加测试## 许可证 MIT 许可证 - 请参阅 LICENSE 文件 **教育使用免责声明:** 本工具仅供教育目的。用户有责任遵守所有适用法律和法规。 ## 作者 **lexcellent** - 自托管爱好者 | 网络安全学习者 ## 路线图 - [ ] UDP 端口扫描 - [ ] 服务版本检测(横幅抓取) - [ ] 与 CVE 数据库集成 - [ ] 历史扫描比较(检测变化) - [ ] 自动调度(cron 集成) - [ ] 结果 Web 仪表板 - [ ] 导出 PDF 报告 - [ ] 与 SIEM 工具集成 **负责任地扫描。道德地学习。主动地保护。** 🛡️
标签:AES-256, Facebook API, GraphQL安全矩阵, MAC地址解析, OS指纹识别, Python, 云存储安全, 安全扫描器, 密码管理, 插件系统, 数据统计, 无后门, 服务检测, 漏洞评估, 端口扫描, 网络安全, 网络审计, 网络工具, 网络扫描, 逆向工具, 防御性安全, 隐私保护, 风险评分