root3315/net-sec-scanner
GitHub: root3315/net-sec-scanner
一款使用 Go 编写的快速网络安全扫描 CLI,专注于端口扫描、服务检测与基础漏洞评估,支持多种报告输出。
Stars: 0 | Forks: 0
# net-sec-scanner
一个用 Go 编写的快速网络安全扫描 CLI,用于漏洞评估和端口扫描。
## 功能
- **TCP 端口扫描**:可配置超时时间的快速并发端口扫描
- **服务检测**:识别开放端口上运行的服务
- **漏洞检查**:对常见服务进行基础漏洞评估
- **多种输出格式**:生成文本、JSON 和 CSV 报告
- **灵活的端口选择**:扫描特定端口、端口范围或常用端口
- **进度跟踪**:详细模式下的实时扫描进度
- **信号处理**:对中断信号进行优雅关闭
## 安装
### 从源码编译
```
git clone https://github.com/yourusername/net-sec-scanner.git
cd net-sec-scanner
go build -o net-sec-scanner .
```
### 使用 Go Install
```
go install github.com/yourusername/net-sec-scanner@latest
```
### 先决条件
- Go 1.21 或更高版本
- 访问目标主机的网络权限
## 用法
### 基本扫描
扫描目标主机的常用端口(1-1024):
```
./net-sec-scanner -host 192.168.1.1
```
### 指定端口
扫描特定端口:
```
./net-sec-scanner -host 192.168.1.1 -ports 22,80,443,8080
```
### 端口范围
扫描端口范围:
```
./net-sec-scanner -host 192.168.1.1 -range 1-1000
```
### 服务检测
在开放端口上启用服务检测:
```
./net-sec-scanner -host 192.168.1.1 -service-detect
```
### 漏洞检查
检查已知漏洞:
```
./net-sec-scanner -host 192.168.1.1 -vuln-check
```
### 输出格式
生成 JSON 报告:
```
./net-sec-scanner -host 192.168.1.1 -format json -output report.json
```
生成 CSV 报告:
```
./net-sec-scanner -host 192.168.1.1 -format csv -output report.csv
```
### 详细模式
启用详细输出:
```
./net-sec-scanner -host 192.168.1.1 -verbose
```
### 完整示例
```
./net-sec-scanner -host example.com -range 1-1024 -service-detect -vuln-check -format json -output scan_results.json -verbose
```
## 命令行选项
| 选项 | 描述 | 默认值 |
|------|------|--------|
| `-host` | 目标主机 IP 地址或主机名(必需) | - |
| `-ports` | 要扫描的端口列表(逗号分隔) | - |
| `-range` | 要扫描的端口范围(例如 1-1000) | 1-1024 |
| `-timeout` | 连接超时(秒) | 2 |
| `-concurrency` | 并发连接数 | 50 |
| `-format` | 输出格式:text、json、csv | text |
| `-output` | 输出文件路径(默认:stdout) | stdout |
| `-verbose` | 启用详细输出 | false |
| `-service-detect` | 检测开放端口上的服务 | false |
| `-vuln-check` | 检查已知漏洞 | false |
| `-version` | 显示版本信息 | false |
## 工作原理
### 端口扫描
扫描器使用 TCP 连接扫描来确定端口状态:
1. **开放**:TCP 连接成功
2. **关闭**:连接被拒绝(收到 RST 包)
3. **过滤**:连接超时(无响应)
### 服务检测
服务检测通过以下方式工作:
1. 检查知名端口分配(IANA)
2. 尝试在开放端口上进行横幅抓取
3. 与已知服务特征进行模式匹配
### 漏洞评估
漏洞检查器识别常见的安全问题:
- 明文协议(FTP、Telnet、POP3)
- 暴露的数据库端口(MySQL、PostgreSQL、MongoDB、Redis)
- 潜在易受攻击的服务(SMB、NetBIOS)
## 项目结构
```
net-sec-scanner/
├── main.go # Main entry point and CLI handling
├── go.mod # Go module definition
├── go.sum # Dependency checksums
├── scanner/
│ ├── scanner.go # Core scanning logic
│ └── port.go # Port utilities and service detection
├── report/
│ └── report.go # Report generation (text, JSON, CSV)
├── tests/
│ └── scanner_test.go # Unit tests
└── README.md # Documentation
```
## 运行测试
```
go test ./... -v
```
## 示例
### 扫描 Web 服务器
```
$ ./net-sec-scanner -host scanme.nmap.org -ports 22,80,443 -service-detect
========================================
NETWORK SECURITY SCAN REPORT
========================================
Target: scanme.nmap.org (45.33.32.156)
Scan Time: 2024-01-15 10:30:45
----------------------------------------
SUMMARY
----------------------------------------
Open Ports: 2
Closed Ports: 1
Filtered Ports: 0
Vulnerabilities: 0
----------------------------------------
OPEN PORTS
----------------------------------------
PORT STATUS SERVICE LATENCY
-------------------------------------------------------
22 open ssh 45ms
80 open http 52ms
```
### JSON 输出
```
$ ./net-sec-scanner -host 192.168.1.1 -ports 22,80 -format json
{
"target": "192.168.1.1",
"target_ip": "192.168.1.1",
"scan_time": "2024-01-15T10:30:45Z",
"open_ports": [
{"port": 22, "status": "open", "service": "ssh", "latency": "45ms"},
{"port": 80, "status": "open", "service": "http", "latency": "52ms"}
],
"summary": {
"total_open": 2,
"total_closed": 0,
"total_filtered": 0
}
}
```
## 安全注意事项
- 仅扫描您拥有或明确获得许可的系统
- 未经授权的扫描可能违反法律和服务条款
- 请负责任且合乎道德地使用
## 许可证
MIT 许可证 - 详情见 LICENSE 文件。
## 贡献
1. 叉取仓库
2. 创建功能分支
3. 提交您的更改
4. 推送到该分支
5. 创建拉取请求
## 支持
如有问题或功能请求,请在 GitHub 仓库中打开一个议题。
标签:AES-256, CSV, EVTX分析, Go语言, JSON, Qt框架, TCP扫描, 中断处理, 二进制发布, 云存储安全, 信号处理, 反取证, 安全扫描, 安全评估, 并发扫描, 开源工具, 数据统计, 文本输出, 日志审计, 时序注入, 服务发现, 服务识别, 正则表达式, 漏洞评估, 灵活配置, 程序破解, 端口扫描, 网络安全, 网络扫描, 网络防护, 计算机应急响应小组, 隐私保护