Nping- Nmap中的一个工具-用于生成网络数据包并分析响应
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