用于有界网络侦察的 Rust CLI:TCP/UDP 端口发现、服务识别、DNS/TLS/HTTP 证据收集,以及带关联分析的公开来源用户名搜索。
Raw Excess Scan
基于 Rust 的有界侦察与证据关联。
RXScan 将网络侦察、公开来源搜索、调查和证据关联整合到一个 CLI 中。
它可以发现主机和端口、识别观测到的服务、收集有界的协议和 Web 证据、搜索公开提供商、关联发现结果,并持久化结果以供后续分析和比较。
RXScan 对报告内容刻意保持保守。端口号并不能标识服务,HTTP 成功本身并不能确认账户存在,覆盖不完整与否定结果被严格区分。
从仓库构建并安装:
git clone https://github.com/DarkRX1/RXScan.git
cd RXScan
cargo install --path . --locked
检查已安装的构建:
rxscan --version
rxscan --help
运行常规侦察扫描:
rxscan example.test
搜索公开来源:
rxscan search --username exampleuser
调查并关联公开发现结果:
rxscan investigate --username exampleuser
这是三个主要入口点:
rxscan TARGET
rxscan search ...
rxscan investigate ...
默认扫描使用 recon 工作流、级别 3 和均衡执行设置。
rxscan example.test
需要精确选择端口时指定端口:
rxscan example.test --ports 22,80,443
rxscan example.test --ports 1-1024
rxscan example.test --ports 22,80,443,8000-8100
扫描完整的 TCP 端口范围:
rxscan example.test --all-ports
UDP 发现需要显式启用:
rxscan example.test --udp
显示有效计划和额外的执行细节:
rxscan example.test --explain
RXScan 支持:
rxscan example.test --scan-mode auto
rxscan example.test --scan-mode connect
rxscan example.test --scan-mode syn
TCP connect 扫描是 RXScan 目前在其支持的平台上使用的可移植扫描路径。
在 Linux 上,当所需能力可用时,原始 SYN 扫描可用于 IPv4。当请求的 SYN 路径无法使用时,RXScan 会报告有效的回退方案,而不是静默地将 connect 扫描呈现为 SYN。
UDP 扫描使用有界原生探测,并且保持为可选启用。
当前协议感知的 UDP 发现包括针对 DNS、NTP 和 SSDP 等服务的小型探测。
UDP 静默不会被报告为端口开放或关闭的证明。RXScan 保留由此产生的 open|filtered 不确定性。
RXScan 根据观测到的协议行为来识别服务,而不是仅根据端口号分配服务。
当前原生识别覆盖常见协议,包括:
根据协议和可用证据,观测结果可能包括产品/版本信息、横幅、HTTP 端点和标题、TLS 证书事实、SSH 身份信息以及规范化技术证据。
当 RXScan 没有足够证据识别未知服务时,它们保持为未知。
这些识别探测不需要身份验证。
用户名搜索可通过以下方式使用:
rxscan search --username exampleuser
常规输出专注于有用的正面和不确定发现,而不是打印每个否定提供商结果。
发现结果可以区分观测到的个人资料、其他观测到的资源和未确认的候选位置。
例如:
FINDINGS
✓ provider / exampleuser
Profile https://example.test/exampleuser
high · 94% · public profile
? another-provider / exampleuser
Candidate https://example.test/u/exampleuser
low · 25% · weak evidence
这些标签是有意设计的:
| 标签 | 含义 |
|---|---|
Profile | 观测到的身份特定公开个人资料 |
Resource | 观测到的身份特定资源,不一定是公开个人资料 |
Candidate | 尚未确认的身份特定位置 |
通用提供商主页或 API 端点不会作为已确认的个人资料 URL 呈现。
RXScan 还会将提供商结果(如被阻止、速率受限、未知、错误和未扫描)保持区分,而不是将其转换为假否定结果。
显示完整的人类可读结果集:
rxscan search --username exampleuser --all
显示额外的执行和分类细节:
rxscan search --username exampleuser --explain
公开发现结果可以通过 RXScan 的调查和关联管道传递:
rxscan investigate --username exampleuser
默认视图专注于账户、有用的 URL、置信度和有意义的关系。
次要 Web 资源(如静态 JavaScript、样式表、字体和图像)在与底层证据相关时会被保留,但不会主导默认的人类报告。
详细视图可以暴露更多收集到的关系数据。
调查默认保持被动。通过公开证据发现网络目标不会自动授权或触发网络扫描。
RXScan 将观测结果存储为类型化证据,供其报告、调查、图、历史和分析路径使用。
项目中刻意强制执行若干规则:
200 不能确立公开账户存在;这种观测与解释之间的区分是 RXScan 设计的核心部分。
对于已确认的 Web 服务,RXScan 可以收集有界 HTTP 观测,例如:
robots.txtsitemap.xml工作流和证据还可以允许有界爬取、基线检查、托管内容发现和上下文 GET 查询跟进。
DNS 观测支持有界记录收集,包括:
TLS 观测记录握手和证书证据。它不是穷尽式 TLS 密码套件扫描器。
网络活动受 RXScan 的范围策略约束。
可以显式提供额外的允许目标:
rxscan example.test --scope example.test
也可以排除目标:
rxscan example.test --exclude api.example.test
超出范围的工作会在相应的网络接触之前被拒绝。
范围强制执行可减少意外接触。它不能替代操作者获得授权的责任。
RXScan 对调度、并发、重试、执行时间、主机扩展、证据收集和跟进活动等工作设置限制。
当截止时间或其他执行限制阻止工作运行时,RXScan 会保留已完成的证据并说明剩余工作,而不是将运行呈现为完全完成。
这也适用于部分网络扫描。
人类可读输出用于交互式使用:
rxscan example.test
颜色在适合终端时自动启用,并可通过以下方式控制:
rxscan --color auto example.test
rxscan --color always example.test
rxscan --color never example.test
--explain 暴露额外的规划器、策略、核算和推理信息,这些信息有意从常规的发现优先视图中省略。
机器可读输出可单独使用:
rxscan example.test --format jsonl
rxscan example.test --output scan.jsonl
机器输出不包含终端 ANSI 样式。
扫描还可以写入检查点:
rxscan example.test --checkpoint scan.rxscan
RXScan 支持持久化证据和离线工作流,包括报告、分析、比较和项目图操作。
示例:
rxscan report scan.rxscan
rxscan diff old.rxscan new.rxscan
历史比较是覆盖感知的。如果后续扫描未覆盖相同的目标或证据面,仅凭缺失不会被解释为已确认的移除。
RXScan 目前面向 Linux。
原始 SYN 扫描是 Linux/IPv4 特定的。其他扫描路径和协议功能有各自的能力要求。
运行:
rxscan capabilities
以检查当前构建/运行时可以使用什么。
已知限制包括:
RXScan 是一个年轻的项目。不应将其视为具有长期建立的网络扫描器那样的协议覆盖、指纹语料库、平台广度或运营历史。
RXScan 是侦察工具,不是利用框架。
它不提供自动的:
网络扫描应仅用于您拥有或明确授权评估的系统。
要求:
构建:
cargo build --release --locked
运行:
./target/release/rxscan --help
测试:
cargo test --locked
完整项目检查:
cargo fmt --check
cargo check --all-targets --all-features
cargo clippy --all-targets --all-features -- -D warnings
cargo test --locked
git diff --check
cargo run -- search lint
网络测试应使用确定性的本地夹具,而不是依赖公共互联网服务。
已发布的版本及其说明可在 GitHub Releases 页面获取。
v1.0.0 和 v1.0.1 标签发布时带有错误的 0.1.0 Cargo 包元数据。这些历史标签有意保持不变。
v1.0.2 是第一个版本号正确的 1.x 发布。
master 上的开发可能包含比最新发布版本更新的更改。
参见 docs/ROADMAP.md。
路线图描述计划中的工作,不应被解读为当前能力列表。
保持更改有界、证据驱动且可测试。
对于网络行为,优先使用确定性的本地夹具。避免依赖任意公共服务的测试。
新的检测声明背后应有可执行证据,扫描行为的更改应保留范围、截止时间、取消、部分结果和核算。
MIT。参见 LICENSE。