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:
从 Nmap 官网 下载安装包并安装。
验证安装:
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