ashishkra065/Network-scanner-project

GitHub: ashishkra065/Network-scanner-project

一款基于 Python 和 Nmap 的网络扫描器,将 TCP 端口发现、Banner 抓取、服务/版本检测、OS 识别与漏洞检查整合为端到端的侦察工作流。

Stars: 0 | Forks: 0

# 🔍 Python 网络漏洞扫描器 一款基于 Python 的网络安全评估工具,旨在执行 **TCP 端口发现、Banner 抓取、服务/版本检测、OS 识别以及基于 Nmap 的漏洞扫描**。 本项目展示了网络侦察和漏洞评估中使用的实用概念。 ## ⚙️ 工作原理 扫描器遵循以下工作流程: ``` Target IP / Hostname │ ▼ TCP Port Scanning (Python Socket) │ ▼ Open Ports │ ┌─────────┴─────────┐ ▼ ▼ Banner Grabbing Nmap Scanning │ ┌────────┴────────┐ ▼ ▼ OS & Service Vulnerability Detection Checks │ │ └────────┬────────┘ ▼ Scan Results ``` ### 1. TCP 端口扫描 用户提供以下信息: ``` Target IP/Hostname Starting Port Ending Port ``` 扫描器使用 Python 的 `socket` 库尝试对指定范围内的每个端口进行 TCP 连接。 概念如下: ``` socket.connect_ex((target, port)) ``` 成功连接的端口将被识别为 **OPEN**。 示例: ``` [SCAN] Checking port 21... [-] Port 21 is closed [SCAN] Checking port 22... [+] Port 22 is OPEN [SCAN] Checking port 80... [+] Port 80 is OPEN ``` ### 2. Banner 抓取 在发现开放端口后,扫描器会尝试获取服务 Banner。 ``` sock.recv(1024) ``` 根据协议的不同,Banner 可以提供有关运行在该端口上的服务的信息。 示例: ``` 22 → SSH 80 → HTTP 443 → HTTPS ``` ### 3. Nmap 服务检测 扫描器通过以下方式集成 Nmap: ``` nmap -sV ``` `-sV` 执行 **服务/版本检测**。 这有助于确定与暴露服务相关联的软件。 ### 4. 操作系统检测 扫描器还会使用: ``` nmap -O ``` `-O` 启用 Nmap 的操作系统检测。 因此,扫描器可以收集有关目标可能的操作系统的信息。 ### 5. 漏洞扫描 项目执行: ``` nmap --script=vuln ``` Nmap 的 NSE 漏洞类别脚本会对与检测到的服务相关的潜在漏洞执行检查。 目前的实现将这些功能组合如下: ``` nmap -O -sV --script=vuln ``` 因此,整个 Nmap 阶段执行的操作为: ``` OS Detection + Service/Version Detection + NSE Vulnerability Checks ``` ## ▶️ 运行扫描器 启动程序: ``` python scanner.py ``` 扫描器会要求输入: ``` Enter the target IP or Hostname: Enter the starting port for scanning: Enter the ending port for scanning: ``` 示例: ``` Enter the target IP or Hostname: 192.168.1.10 Enter the starting port for scanning: 1 Enter the ending port for scanning: 1000 ``` 生成的工作流程如下: ``` 192.168.1.10 │ ├── Scan ports 1-1000 │ ├── Identify open ports │ ├── Attempt banner grabbing │ ├── Detect services │ ├── Attempt OS detection │ └── Run vulnerability checks ``` # 🎯 使用场景 ### 攻击面评估 识别服务器或网络资产暴露的 TCP 端口。 ``` Server ├── 22 SSH ├── 80 HTTP └── 443 HTTPS ``` 这提供了面向网络的攻击面的初始概览。 ### 服务枚举 使用 Banner 抓取和 Nmap 服务检测来识别与发现的端口相关联的服务。 适用于以下场景: **网络安全评估 → 资产发现 → 服务枚举 → 漏洞评估** ### 漏洞评估 Nmap NSE 漏洞脚本对与暴露服务相关的潜在漏洞提供自动化检查。 这有助于识别需要进一步调查或修复的系统。 ### 安全监控实验室 扫描器可以针对授权的实验室主机生成侦察流量。 随后可以使用以下工具观察该流量: ``` Scanner │ ▼ Target │ ├── Firewall Logs ├── IDS/IPS ├── SIEM └── Network Monitoring ``` 这使得该项目在练习**攻击性侦察和防御性检测**时都非常实用。 ### 网络暴露验证 管理员可以对比预期和观察到的服务。 例如: ``` Expected: 22, 443 Detected: 22, 80, 443, 3306 Unexpected: 80 3306 ``` 随后可以对意外暴露的服务进行调查。 # ⚡ 性能提升 — 多线程 目前的扫描器**按顺序**执行端口扫描。 ``` Port 1 ↓ wait ↓ Port 2 ↓ wait ↓ Port 3 ↓ wait ``` 在扫描数百或数千个端口时,这可能会变得非常缓慢,因为 socket 连接主要是 **I/O 密集型** 的。 未来的版本可以使用 Python 的: ``` ThreadPoolExecutor ``` 来并发执行多个连接尝试。 概念如下: ``` Current Worker → 21 → 22 → 23 → 24 → 25 → ... Multithreaded Worker 1 ──► 21 Worker 2 ──► 22 Worker 3 ──► 23 Worker 4 ──► 24 Worker 5 ──► 25 ``` 有界工作线程池可以显著减少扫描时间,同时防止程序创建过多的线程。 设计示例: ``` with ThreadPoolExecutor(max_workers=50) as executor: results = executor.map(scan_port, ports) ``` 随后可以使用扫描器现有的计时功能对性能进行基准测试: ``` Sequential Ports: 1-1000 Time: X seconds Multithreaded Ports: 1-1000 Workers: 50 Time: Y seconds ``` 这提供了一种可量化的方式,用于展示**并发如何提升网络 I/O 工作负载的性能**。 ## 🛡️ 授权使用 本项目适用于: - 网络安全教育 - 个人安全实验室 - CTF 环境 - 授权的漏洞评估 - 网络安全测试 未经授权,请勿扫描系统。
标签:CTI, Python, 密码管理, 插件系统, 数据统计, 无后门, 端口扫描, 网络安全, 逆向工具, 隐私保护