Nping- Nmap中的一个工具-用于生成网络数据包并分析响应

发布于:2025-03-15 ⋅ 阅读:(9) ⋅ 点赞:(0)

Nping 工具介绍

Nping 是 Nmap 项目中的一个网络工具,用于生成网络数据包并分析响应。它可以用于网络探测、性能测试、防火墙测试、ARP 欺骗检测等多种场景。Nping 支持多种协议(如 TCP、UDP、ICMP、ARP),并允许用户自定义数据包的内容和发送方式。


1. Nping 的工作原理

数据包生成

Nping 根据用户指定的协议(如 TCP、UDP、ICMP)和参数(如端口、标志位、负载)生成网络数据包。

用户可以完全控制数据包的内容,包括协议头、负载、时间戳等。

数据包发送

Nping 将生成的数据包发送到目标主机或网络。

支持单播、广播和多播。

响应分析

Nping 监听目标主机的响应,并记录响应时间、TTL、标志位等信息。

根据响应结果,Nping 可以判断目标主机的状态(如是否存活、端口是否开放)。

统计输出

Nping 提供详细的统计信息,包括发送和接收的数据包数量、响应时间、丢包率等。


2. Nping 的安装

Nping 是 Nmap 工具集的一部分,安装 Nmap 时会自动安装 Nping。

安装方法
  • Linux(Debian/Ubuntu)

    sudo apt update
    sudo apt install nmap
  • Linux(CentOS/RHEL)

    sudo yum install nmap
  • macOS

    brew install nmap
  • Windows

验证安装
nping --version

3. Nping 的参数说明

Nping 提供了丰富的参数,用于控制数据包的生成、发送和分析。以下是常用参数的分类和说明:

1. 目标指定(TARGET SPECIFICATION)

  • 功能:指定目标主机或网络。

  • 格式:目标可以是主机名、IP 地址、网络地址等。

  • 示例

    nping scanme.nmap.org
    nping 192.168.1.1
    nping 10.0.0.0/24

2. 探测模式(PROBE MODES)

  • 功能:选择 Nping 的探测模式。

  • 模式

    • --tcp-connect:非特权 TCP 连接模式(类似于 telnet)。

    • --tcp:TCP 探测模式。

    • --udp:UDP 探测模式。

    • --icmp:ICMP 探测模式。

    • --arp:ARP/RARP 探测模式。

    • --tr, --traceroute:路由跟踪模式(需与 TCP/UDP/ICMP 模式一起使用)。


3. TCP 连接模式(TCP CONNECT MODE)

  • 功能:用于非特权的 TCP 连接探测。

  • 参数

    • -p, --dest-port <port spec>:设置目标端口。

    • -g, --source-port <portnumber>:设置源端口。


4. TCP 探测模式(TCP PROBE MODE)

  • 功能:用于发送自定义的 TCP 数据包。

  • 参数

    • -g, --source-port <portnumber>:设置源端口。

    • -p, --dest-port <port spec>:设置目标端口。

    • --seq <seqnumber>:设置 TCP 序列号。

    • --flags <flag list>:设置 TCP 标志位(如 SYN、ACK、RST 等)。

    • --ack <acknumber>:设置 TCP 确认号。

    • --win <size>:设置 TCP 窗口大小。

    • --badsum:使用无效的校验和。


5. UDP 探测模式(UDP PROBE MODE)

  • 功能:用于发送自定义的 UDP 数据包。

  • 参数

    • -g, --source-port <portnumber>:设置源端口。

    • -p, --dest-port <port spec>:设置目标端口。

    • --badsum:使用无效的校验和。


6. ICMP 探测模式(ICMP PROBE MODE)

  • 功能:用于发送自定义的 ICMP 数据包。

  • 参数

    • --icmp-type <type>:设置 ICMP 类型(如 8 表示 Echo Request)。

    • --icmp-code <code>:设置 ICMP 代码。

    • --icmp-id <id>:设置 ICMP 标识符。

    • --icmp-seq <n>:设置 ICMP 序列号。

    • --icmp-redirect-addr <addr>:设置 ICMP 重定向地址。

    • --icmp-param-pointer <pnt>:设置 ICMP 参数问题指针。

    • --icmp-advert-lifetime <time>:设置路由器通告的生存时间。

    • --icmp-advert-entry <IP,pref>:添加路由器通告条目。

    • --icmp-orig-time <timestamp>:设置原始时间戳。

    • --icmp-recv-time <timestamp>:设置接收时间戳。

    • --icmp-trans-time <timestamp>:设置传输时间戳。


7. ARP/RARP 探测模式(ARP/RARP PROBE MODE)

  • 功能:用于发送自定义的 ARP/RARP 数据包。

  • 参数

    • --arp-type <type>:设置 ARP 类型(如 ARP、ARP-reply、RARP、RARP-reply)。

    • --arp-sender-mac <mac>:设置发送者 MAC 地址。

    • --arp-sender-ip <addr>:设置发送者 IP 地址。

    • --arp-target-mac <mac>:设置目标 MAC 地址。

    • --arp-target-ip <addr>:设置目标 IP 地址。


8. IPv4 选项(IPv4 OPTIONS)

  • 功能:设置 IPv4 数据包的选项。

  • 参数

    • -S, --source-ip:设置源 IP 地址。

    • --dest-ip <addr>:设置目标 IP 地址。

    • --tos <tos>:设置服务类型字段(8 位)。

    • --id <id>:设置标识字段(16 位)。

    • --df:设置“不分片”标志。

    • --mf:设置“更多分片”标志。

    • --ttl <hops>:设置生存时间(TTL)。

    • --badsum-ip:使用无效的 IP 校验和。

    • --ip-options <S|R [route]|L [route]|T|U ...>:设置 IP 选项。

    • --ip-options <hex string>:设置 IP 选项(十六进制格式)。

    • --mtu <size>:设置 MTU(最大传输单元)。


9. IPv6 选项(IPv6 OPTIONS)

  • 功能:设置 IPv6 数据包的选项。

  • 参数

    • -6, --IPv6:使用 IPv6。

    • --dest-ip:设置目标 IP 地址。

    • --hop-limit:设置跳数限制(类似于 IPv4 的 TTL)。

    • --traffic-class <class>:设置流量类别。

    • --flow <label>:设置流标签。


10. 以太网选项(ETHERNET OPTIONS)

  • 功能:设置以太网帧的选项。

  • 参数

    • --dest-mac <mac>:设置目标 MAC 地址。

    • --source-mac <mac>:设置源 MAC 地址。

    • --ether-type <type>:设置以太网类型字段。


11. 负载选项(PAYLOAD OPTIONS)

  • 功能:设置数据包的负载。

  • 参数

    • --data <hex string>:设置自定义负载(十六进制格式)。

    • --data-string <text>:设置自定义负载(ASCII 文本)。

    • --data-length <len>:设置随机负载的长度。


12. 回显客户端/服务器(ECHO CLIENT/SERVER)

  • 功能:用于回显模式的客户端或服务器。

  • 参数

    • --echo-client <passphrase>:以客户端模式运行。

    • --echo-server <passphrase>:以服务器模式运行。

    • --echo-port <port>:设置回显端口。

    • --no-crypto:禁用加密和认证。

    • --once:服务器在接收一个连接后停止。

    • --safe-payloads:清除回显数据包中的应用数据。


13. 时间和性能选项(TIMING AND PERFORMANCE)

  • 功能:控制数据包的发送时间和速率。

  • 参数

    • --delay <time>:设置数据包之间的延迟。

    • --rate <rate>:设置每秒发送的数据包数量。


14. 其他选项(MISC)

  • 功能:杂项选项。

  • 参数

    • -h, --help:显示帮助信息。

    • -V, --version:显示版本信息。

    • -c, --count <n>:发送指定数量的数据包后停止。

    • -e, --interface <name>:指定网络接口。

    • -H, --hide-sent:不显示发送的数据包。

    • -N, --no-capture:不捕获响应数据包。

    • --privileged:假设用户具有完全权限。

    • --unprivileged:假设用户没有原始套接字权限。

    • --send-eth:在以太网层发送数据包。

    • --send-ip:使用原始 IP 套接字发送数据包。

    • --bpf-filter <filter spec>:指定自定义的 BPF 过滤器。


15. 输出控制(OUTPUT)

  • 功能:控制输出的详细程度。

  • 参数

    • -v:增加输出的详细程度。

    • -v[level]:设置输出的详细程度(如 -v4)。

    • -d:增加调试信息的详细程度。

    • -d[level]:设置调试信息的详细程度(如 -d3)。

    • -q:减少输出的详细程度。

    • -q[N]:减少输出的详细程度 N 次。

    • --quiet:将输出的详细程度设置为最低。

    • --debug:将输出的详细程度设置为最高。


4. Nping 参数的使用方法

以下是 Nping 参数的具体使用示例:

示例 1:发送 TCP SYN 数据包
nping --tcp -p 80 192.168.1.1
  • 向 192.168.1.1 的 80 端口发送 TCP SYN 数据包。

示例 2:发送 UDP 数据包
nping --udp -p 53 192.168.1.1
  • 向 192.168.1.1 的 53 端口发送 UDP 数据包。

示例 3:发送 ICMP Echo 请求
nping --icmp 192.168.1.1
  • 向 192.168.1.1 发送 ICMP Echo 请求(类似于 ping 命令)。

示例 4:发送 ARP 请求
nping --arp 192.168.1.1
  • 向 192.168.1.1 发送 ARP 请求,获取其 MAC 地址。

示例 5:自定义 TCP 标志位
nping --tcp -p 80 --flags SYN,ACK 192.168.1.1
  • 向 192.168.1.1 的 80 端口发送 TCP 数据包,标志位为 SYN 和 ACK。

示例 6:设置数据包负载
nping --udp -p 123 --data "AABBCCDD" 192.168.1.1
  • 向 192.168.1.1 的 123 端口发送 UDP 数据包,负载为十六进制数据 AABBCCDD

示例 7:设置发送间隔
nping --icmp --delay 500ms 192.168.1.1
  • 每隔 500 毫秒向 192.168.1.1 发送 ICMP Echo 请求。

示例 8:显示统计信息
nping --tcp -p 80 --stats-every 2 192.168.1.1
  • 每隔 2 秒显示一次统计信息。


5. Nping 的典型应用场景

网络探测

使用 ICMP 或 TCP 数据包探测目标主机是否存活。

示例:

nping --icmp 192.168.1.1

端口扫描

使用 TCP SYN 数据包扫描目标主机的端口。

示例:

nping --tcp -p 1-100 192.168.1.1

防火墙测试

使用自定义 TCP/UDP 数据包测试防火墙规则。

示例:

nping --tcp -p 80 --flags SYN 192.168.1.1

ARP 欺骗检测

使用 ARP 数据包检测网络中的 ARP 欺骗行为。

示例:

nping --arp 192.168.1.1

网络性能测试

使用 ICMP 或 UDP 数据包测试网络延迟和丢包率。

示例:

nping --icmp --delay 100ms 192.168.1.1
  • 示例 :发送 TCP RST 数据包到目标主机的 80 端口。

    nping --tcp -p 80 --flags rst --ttl 2 192.168.1.1
  • 示例 :发送 ICMP 时间戳请求到目标主机。

    nping --icmp --icmp-type time --delay 500ms 192.168.254.254
  • 示例 :以回显服务器模式运行。

    nping --echo-server "public" -e wlan0 -vvv