RustScan 使用教程 — 3 秒扫完 65535 个端口
概述
RustScan 是一个用 Rust 编写的高性能端口扫描器,默认速度 3000 端口/秒,最快能在 3 秒 内扫完全部 65535 个 TCP 端口。它的核心设计理念是 只负责找开放端口,然后自动把结果交给 Nmap 做深度扫描。
"把 17 分钟的 Nmap 全端口扫描变成 19 秒" — 这就是 RustScan 的价值
安装
Kali Linux(自带)
Kali 2024+ 默认已预装,直接在终端跑:
rustscan --version
其他 Linux / macOS
# 方式一:cargo 安装(推荐)cargo install rustscan# 方式二:Dockerdocker run -it --rm --name rustscan rustscan/rustscan:2.1.1 -a 192.168.1.1# 方式三:直接下载二进制# 去 https://github.com/RustScan/RustScan/releases 下载对应平台的可执行文件
前置依赖
RustScan 需要 Nmap 配合使用,Kali 自带,如果没有:
sudo apt update && sudo apt install nmap -y
基础用法
最简单的扫描
rustscan -a 192.168.1.1
-a 参数指定目标 IP,自动扫全部 65535 个 TCP 端口,找到开放端口后自动调 Nmap 做 -sC -sV(默认脚本 + 版本检测)。
扫描多个目标
# 多个 IPrustscan -a 192.168.1.1,192.168.1.2# CIDR 网段rustscan -a 192.168.1.0/24# 从文件读取目标rustscan -a targets.txt
只看开放端口,不调 Nmap
如果不想要 Nmap 深度扫描,加 -g(greppable 模式),只输出端口号:
rustscan -a 192.168.1.1 -g
输出示例:
22,80,443,8080
适合接管道给其他工具用。
进阶参数
调整扫描速度 (-b / -T)
# 慢速扫描(隐蔽模式):一次只扫 10 个端口rustscan -a 192.168.1.1 -b 10# 超快速模式:一次扫全部端口(适合 CTF 或内网环境)rustscan -a 192.168.1.1 -b 65535 -T 1000
| | |
|---|
-b | | 默认 3000,隐蔽用 10-50,快速用 65535 |
-T | | 默认 1000(1s),隐蔽用 3000-5000 |
自定义 Nmap 参数
RustScan 最强大的特性:-- 后面可以接 Nmap 的参数!
# 默认行为等效于:rustscan -a 192.168.1.1 -- -sC -sV# 指定输出格式rustscan -a 192.168.1.1 -- -sC -sV -oN scan_result.txt# 只做版本检测,不做脚本扫描rustscan -a 192.168.1.1 -- -sV# 加上 OS 检测rustscan -a 192.168.1.1 -- -sC -sV -O# 扫描 UDP 端口(用 Nmap 扫,RustScan 本身只扫 TCP)rustscan -a 192.168.1.1 -- -sC -sV -sU --top-ports 100
指定端口范围
# 只扫常见端口(不扫全部 65535)rustscan -a 192.168.1.1 -p 22,80,443,3306,8080# 扫范围rustscan -a 192.168.1.1 -p 1-1000
注:不加 -p 默认扫全部 65535 个端口,这是 RustScan 的核心优势
其他常用参数
# --accessible: 禁用进度条(适合输出重定向)rustscan -a 192.168.1.1 --accessible# --ulimit: 调整系统最大文件描述符数(默认 5000,扫大量端口可能需要调高)rustscan -a 192.168.1.1 --ulimit 65535# -r: 随机扫描端口顺序(防检测)rustscan -a 192.168.1.1 -r
实战场景
场景 1:渗透测试快速侦察
目标:快速了解目标开了哪些服务
rustscan -a 192.168.1.1 -- -sC -sV -oN recon.txt
2-3 秒出结果,Nmap 自动接上做详细扫描,结果保存到 recon.txt。
场景 2:内网全段资产发现
# 扫整个 C 段,只输出开放端口列表rustscan -a 192.168.1.0/24 -g > open_ports.txt# 再对每台机器的端口做 Nmap 深度扫描for ip in $(cat open_ports.txt | cut -d: -f1 | sort -u); do nmap -sC -sV $ip -oN "${ip}_scan.txt"done
场景 3:CTF 快速扫描
CTF 环境一般没有 IPS/IDS,放心用极速模式:
rustscan -a target.ctf.com -b 65535 -T 500 -- -sC -sV
解释: 批次 65535(一次全扫完),超时 500ms(CTF 内网响应速度极快),5 秒内拿到完整结果。
场景 4:渗透测试隐蔽扫描
真实环境怕被发现,调慢:
rustscan -a target.com -b 10 -T 5000 -r -- -sC -sV -T4
解释: 每次只扫 10 个端口,超时 5 秒,随机顺序扫描,配合 Nmap 的 T4 时间模板。
脚本引擎(高级)
RustScan 支持自定义脚本,可以用 Python、Lua、Shell 写。
示例:发现 SMB 端口后自动枚举
创建脚本 scripts/smb_check.sh:
#!/bin/bash# RustScan 会把开放端口传进来echo "[+] Ports found: $1"if echo "$1" | grep -q "445"; then echo "[*] SMB port found! Running enum..." nmap -p 445 --script smb-enum-shares $2fi
运行:
rustscan -a 192.168.1.1 --script ./scripts
内置脚本
RustScan 默认脚本就是自动把端口传给 Nmap 做 -sC -sV。你可以写脚本替代这个行为。
参数速查表
| | |
|---|
-a | --address | |
-p | --ports | |
-b | --batch | |
-T | --timeout | |
-g | --greppable | |
-r | --random | |
--accessible | | |
--ulimit | | |
--scripts | | |
-- | | |
注意事项
- • RustScan 只扫 TCP 端口。要扫 UDP 需要用
-- -sU 交给 Nmap - • 默认速度 3000 端口/秒 在公网上容易触发 IDS/IPS 报警,注意场景
- • 作者建议:不要对生产环境的敏感服务器用全速扫描,RustScan 设计初衷偏向 CTF 和内网场景
- • RustScan 有自适应学习功能,会根据你的使用习惯优化扫描策略
对比:RustScan vs Nmap
最佳实践: RustScan 找端口 → 输出给 Nmap 做深度扫描,两者互补。
想通扫全端口直接rustscan -a <目标>,3 秒出结果,省下等 Nmap 干瞪眼的 20 分钟。