4 个版本 (重大更新)

0.3.0 2024 年 7 月 21 日
0.2.0 2024 年 7 月 21 日
0.1.0 2024 年 7 月 18 日
0.0.1 2024 年 7 月 17 日

#1 in #端口扫描

Download history 199/week @ 2024-07-15 129/week @ 2024-07-22

每月下载量 328

MIT 许可证

1MB
16K SLoC

nrev Crates.io

简单快速的网络揭示/映射器。用 Rust 编写。
设计用于网络映射、探测和安全测试。

功能

  • 端口扫描
  • 主机扫描
  • Ping
  • Traceroute
  • 邻居发现
  • 子域名扫描
  • 显示网络接口

支持的平台

  • Linux
  • macOS
  • Windows

安装

通过 shell 脚本安装预构建的二进制文件

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/shellrow/nrev/releases/latest/download/nrev-installer.sh | sh

通过 powershell 脚本安装预构建的二进制文件

irm https://github.com/shellrow/nrev/releases/latest/download/nrev-installer.ps1 | iex

通过 Homebrew 安装预构建的二进制文件

brew install shellrow/tap-nrev/nrev

从版本中

您可以从 版本 下载预编译二进制文件的存档。

Cargo

如果您已经在您的系统上安装了 Rust 和 Cargo 软件包管理器,您可以使用以下命令安装(下载和构建) nrev

cargo install nrev

或者您可以使用 binstall 从 GitHub 发布版安装 nrev。

cargo binstall nrev

基本用法

默认端口扫描

要扫描目标上的默认 1000 个端口,只需指定目标

nrev --target scanme.nmap.org

子命令和选项

Usage: nrev [OPTIONS] [COMMAND]

Commands:
  port        Scan port. nrev port --help for more information
  host        Scan host in specified network or host-list. nrev host --help for more information
  ping        Ping to specified host. nrev ping --help for more information
  trace       Traceroute to specified host. nrev trace --help for more information
  subdomain   Find subdomains. nrev subdomain --help for more information
  nei         Resolve IP address to MAC address
  interfaces  Show network interfaces
  interface   Show default network interface
  check       Check dependencies (Windows only)
  help        Print this message or the help of the given subcommand(s)

Options:
  -t, --target <target>             Specify the target host. IP address or Hostname
  -i, --interface <interface_name>  Specify the network interface
      --noping                      Disable initial ping
  -F, --full                        Scan all ports (1-65535)
  -j, --json                        Displays results in JSON format.
  -o, --save <file_path>            Save scan result in JSON format - Example: -o result.json
  -h, --help                        Print help
  -V, --version                     Print version

示例

端口扫描

扫描默认 1000 个端口

nrev port scanme.nmap.org

指定端口

nrev port scanme.nmap.org --ports 22,80,443,5000,8080

指定范围

nrev port scanme.nmap.org --range 20-100

扫描知名端口

nrev port scanme.nmap.org --wellknown

设置

默认情况下,nrev 根据初始 PING 的结果确定接收数据包的等待时间(在完成扫描任务之前),
初始 PING 按照以下顺序执行:ICMP Ping、UDP Ping、TCP Ping(在端口 80 上),如果成功,则继续下一个扫描任务。
如果所有 PING 尝试都失败,nrev 在执行扫描之前退出。可以通过设置 --noping 标志来跳过此步骤。
有关其他设置,请参阅 nrev port -h 以获取详细信息。

主机扫描

ICMP 主机扫描

nrev host 192.168.1.0/24
nrev host <path-to-host-list>

TCP 主机扫描

nrev host 192.168.1.0/24 -P TCP --port 80

Ping

默认 ICMP Ping

nrev ping 1.1.1.1

UDP Ping

nrev ping 1.1.1.1 -P UDP

TCP Ping

nrev ping 1.1.1.1:443 -P TCP

Traceroute

TCP Ping

nrev trace 8.8.8.8

您可以指定以毫秒为单位的间隔以加快速度。

nrev trace 8.8.8.8 --rate 500

子域名扫描

nrev subdomain google.com

邻居(ARP/NDP)

nrev nei 192.168.1.1

指定网络接口

nrev -i tun0 port 10.10.11.14

权限

nrev 使用原始套接字,需要提升权限。请以管理员权限执行。

Linux 用户注意事项

nrev 发送/接收原始数据包需要提升权限。在 Linux 上,您可以使用两种主要方法来配置这些权限

1. 使用 setcap

将权限授予 nrev 二进制文件,允许其在不需要每次执行都使用 sudo 的情况下操作所需的权限。
此方法适用于单用户机器或所有用户都受信任的环境。

将必要的权限分配给 nrev 二进制文件

sudo setcap 'cap_sys_ptrace,cap_dac_read_search,cap_net_raw,cap_net_admin+ep' $(command -v nrev)

以非特权用户运行 nrev

nrev

权限说明

  • cap_sys_ptrace,cap_dac_read_search: 允许 nrev 访问 /proc/<pid>/fd/ 来识别哪个打开的端口属于哪个进程。
  • cap_net_raw,cap_net_admin: 启用数据包捕获功能。

2. 使用 sudo(多用户环境)

对于有多个用户的环境,每次运行 nrev 时都需要提升权限可以增强安全性。

sudo nrev

macOS 用户注意事项

在 macOS 上,管理对伯克利数据包过滤器(BPF)设备的访问对于 nrev 发送/接收原始数据包是必要的。当然,您也可以使用 sudo 临时授予必要的权限。

安装 chmod-bpf 以自动管理 BPF 设备的权限

通过 shell 脚本安装预构建的二进制文件

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/shellrow/chmod-bpf/releases/latest/download/chmod-bpf-installer.sh | sh

通过 Homebrew 安装预构建的二进制文件

brew install shellrow/tap-chmod-bpf/chmod-bpf

检查 BPF 设备权限

chmod-bpf check

安装 chmod-bpf 守护程序以自动管理 BPF 设备权限

sudo chmod-bpf install

Windows 用户注意事项

  • 确保您已安装 Npcap,这是在 Windows 上使 nrev 发送/接收原始数据包所必需的
  • Npcap 下载并安装 Npcap。在安装过程中,选择“以 WinPcap API 兼容模式安装 Npcap”。
  • 构建依赖项
    • 将来自 Npcap SDK 或 WinPcap 开发者包的 Packet.lib 文件放置在位于此存储库根目录的 lib 目录中。
    • 您可以使用 %LIB% 或 $Env:LIB 环境变量中列出的任何位置。
    • 对于 64 位工具链,Packet.lib 位于 /Lib/x64/Packet.lib。
    • 对于 32 位工具链,Packet.lib 位于 /Lib/Packet.lib。

依赖项

~26–40MB
~746K SLoC