jorgealonsodev/net-audit-scanner
GitHub: jorgealonsodev/net-audit-scanner
一款 Rust 编写的局域网安全审计命令行工具,集设备发现、服务指纹识别、CVE 漏洞关联和默认口令检测于一体,帮助非专业人员快速掌握内网资产安全状况。
Stars: 0 | Forks: 0
# netascan

网络安全审计 CLI。通过单个命令发现局域网中的设备、进行服务指纹识别、检查已知 CVE、测试默认凭据,并生成 HTML/JSON 报告。
**[文档](https://jorgealonsodev.github.io/net-audit-scanner)**
```
netascan scan --network 192.168.1.0/24
```
## 安装说明
### 预编译二进制文件 (推荐)
从 [Releases 页面](https://github.com/jorgealonsodev/net-audit-scanner/releases)下载最新版本。
**Linux (tar.gz)**
```
tar -xzf netascan-v0.1.0-x86_64-unknown-linux-gnu.tar.gz
sudo mv netascan /usr/local/bin/
```
**macOS (tar.gz)**
```
tar -xzf netascan-v0.1.0-aarch64-apple-darwin.tar.gz
sudo mv netascan /usr/local/bin/
```
### Debian / Ubuntu (.deb)
```
wget https://github.com/jorgealonsodev/net-audit-scanner/releases/latest/download/netascan-v0.1.0-amd64.deb
sudo dpkg -i netascan-v0.1.0-amd64.deb
```
### 从源码构建
需要 Rust stable (`rustup update stable`),在 Linux 上还需要 `libpcap-dev`。
```
# Linux
sudo apt-get install -y libpcap-dev
# Build
cargo build --release
sudo mv target/release/netascan /usr/local/bin/
```
## 快速开始
```
# 扫描本地网络(自动检测接口)
sudo netascan scan
# 扫描特定范围并打开 HTML 报告
sudo netascan scan --network 192.168.1.0/24 --report html
# 将最近一次扫描查看为报告
netascan report --last
# 启动 Web 仪表板(上传 + 浏览报告)
netascan serve
```
## 命令
### `scan`
发现主机、扫描端口、丰富 CVE 和供应商信息、测试默认凭据并输出结果。
| 标志 | 默认值 | 描述 |
|------|---------|-------------|
| `--network` / `-n` | `auto` | CIDR 范围,或 `auto` 从活动接口自动检测 |
| `--target` | — | 用于深度扫描的单个 IP |
| `--port-range` | `top-1000` | 端口集:`top-1000`、`full` (1–65535),或自定义范围 |
| `--full` | off | 等同于 `--port-range full` |
| `--concurrency` | 512 | 最大并行连接数 |
| `--timeout-ms` | 1500 | TCP 连接超时 (毫秒) |
| `--banner-timeout-ms` | 500 | Banner 抓取超时 (毫秒) |
| `--report` / `-r` | `html` | 输出格式:`html` 或 `json` (文件),并在标准输出打印表格 |
| `--json` | off | 将 JSON 打印到标准输出,而不是表格 |
| `--no-cve` | off | 跳过 CVE 丰富 |
| `--no-update` | off | 使用内嵌的 OUI 数据库代替缓存 |
### `report`
从已保存的扫描中生成或查看报告。
```
netascan report --last # most recent scan
netascan report --format html # html (default) or json
```
### `serve`
在 `http://localhost:3000` 启动本地 Web 仪表盘。上传扫描 JSON 并在浏览器中浏览 HTML 报告。
```
netascan serve
netascan serve --port 8080
```
### `update`
刷新用于 MAC 指纹识别的 OUI (供应商) 数据库。
```
netascan update
netascan update --source https://your-mirror.example.com/manuf
```
## 扫描过程
```
discover hosts (ICMP + ARP + TCP)
↓
scan ports (top-1000 by default)
↓
grab banners → infer OS hint (TTL + banner)
↓
enrich with OUI vendor data
↓
enrich with CVE data (NVD API, cached in ~/.cache/netascan/cve.db)
↓
test default credentials (HTTP Basic, FTP, Telnet)
↓
persist to ~/.cache/netascan/scans/
↓
output (table / JSON / HTML report)
```
## 配置
配置文件:`~/.config/netascan/config.toml` (首次运行时使用默认值创建)。
```
[scan]
default_network = "auto"
port_range = "top-1000"
timeout_ms = 1500
banner_timeout_ms = 500
concurrency = 512
[cve]
nvd_api_key = "" # optional — raises NVD rate limit
cache_ttl_hours = 24
[report]
default_format = "html"
open_browser = false
[credentials_check]
enabled = true
custom_list = "" # path to a custom credentials file
```
**NVD API key** (可选但推荐):在 获取并在配置中设置,或将其作为 `NVD_API_KEY` 环境变量。
## 扫描持久化
每次扫描都会以 JSON 格式保存在 `~/.cache/netascan/scans/` 下。使用 `report --last` 加载最近的一次扫描,而无需重新扫描。
## 环境要求
| 要求 | 备注 |
|-------------|-------|
| Rust 2024 edition | `rustup update stable` |
| Root / CAP_NET_RAW | 仅用于 ICMP 扫描。TCP+ARP 回退可在无此权限下工作。 |
| Internet 访问 | 通过 NVD API 进行 CVE 丰富 (可选,可通过 `--no-cve` 跳过) |
## 开发
```
cargo test # run all tests
cargo clippy --all-targets # lint
cargo bench # benchmarks (criterion)
```
需要网络访问的测试被标记为 `#[ignore]` 并默认跳过。
## 许可证
MIT
标签:CVE漏洞扫描, Facebook API, HTML/JSON报告, IoT设备安全, Linux安全工具, NVD漏洞库, Python安全, Rust编程语言, Web仪表盘, 可视化界面, 后门检测, 命令行工具(CLI), 安全基线检查, 局域网安全, 局域网设备发现, 开源安全工具, 插件系统, 数据统计, 端口扫描, 系统管理员工具, 网络安全扫描器, 网络审计, 网络资产盘点, 设备指纹识别, 逆向工程平台, 通知系统, 默认凭证测试