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, 云存储安全, 安全扫描器, 密码管理, 插件系统, 数据统计, 无后门, 服务检测, 漏洞评估, 端口扫描, 网络安全, 网络审计, 网络工具, 网络扫描, 逆向工具, 防御性安全, 隐私保护, 风险评分