Nping
Description
Nping is an open source tool for network packet generation, response analysis and response time measurement. Nping can generate network packets for a wide range of protocols, allowing users full control over protocol headers. While Nping can be used as a simple ping utility to detect active hosts, it can also be used as a raw packet generator for network stack stress testing, ARP poisoning, Denial of Service attacks, route tracing, etc. Nping's novel echo mode lets users see how packets change in transit between the source and destination hosts. That's a great way to understand firewall rules, detect packet corruption, and more.
Installation
Backtrack
Backtrack 5 R2 already comes with nping 0.5.61TEST4 installed, in /usr/local/bin.
From scratch
Nping is part of nmap. To install it, run following commands:
$ cd ~/src/ $ wget http://nmap.org/dist/nmap-6.01.tar.bz2 $ bzip2-cd nmap-6.01.tar.bz2 | tar xf - $ cd nmap-6.01/ $ ./configure $ make $ sudo make install
Usage
Syntax
nping [Probe mode] [Options] {target specification}
Options
Target Specification
Targets may be specified as hostnames, IP addresses, networks, etc.
Ex: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254
Probe modes
- --tcp-connect
- Unprivileged TCP connect probe mode.
- --tcp
- TCP probe mode.
- --udp
- UDP probe mode.
- --icmp
- ICMP probe mode.
- --arp
- ARP/RARP probe mode.
- --tr, --traceroute
- Traceroute mode (can only be used with TCP/UDP/ICMP modes).
TCP CONNECT mode
- -p, --dest-port <port spec>
- Set destination port(s).
- -g, --source-port <portnumber>
- Try to use a custom source port.
TCP Probe mode
- -g, --source-port <portnumber>
- Set source port.
- -p, --dest-port <port spec>
- Set destination port(s).
- --seq <seqnumber>
- Set sequence number.
- --flags <flag list>
- Set TCP flags (ACK,PSH,RST,SYN,FIN...)
- --ack <acknumber>
- Set ACK number.
- --win <size>
- Set window size.
- --badsum
- Use a random invalid checksum.
UDP Probe mode
- -g, --source-port <portnumber>
- Set source port.
- -p, --dest-port <port spec>
- Set destination port(s).
- --badsum
- Use a random invalid checksum.
ICMP Probe mode
- --icmp-type <type>
- ICMP type.
- --icmp-code <code>
- ICMP code.
- --icmp-id <id>
- Set identifier.
- --icmp-seq <n>
- Set sequence number.
- --icmp-redirect-addr <addr>
- Set redirect address.
- --icmp-param-pointer <pnt>
- Set parameter problem pointer.
- --icmp-advert-lifetime
- Set router advertisement lifetime.
- --icmp-advert-entry <IP,pref>
- Add router advertisement entry.
- --icmp-orig-time <timestamp>
- Set originate timestamp.
- --icmp-recv-time <timestamp>
- Set receive timestamp.
- --icmp-trans-time <timestamp>
- Set transmit timestamp.
ARP/RARP Probe mode
- --arp-type <type>
- Type: ARP, ARP-reply, RARP, RARP-reply.
- --arp-sender-mac <mac>
- Set sender MAC address.
- --arp-sender-ip <addr>
- Set sender IP address.
- --arp-target-mac <mac>
- Set target MAC address.
- --arp-target-ip <addr>
- Set target IP address.
IPv4 options
- -S, --source-ip
- Set source IP address.
- --dest-ip <addr>
- Set destination IP address (used as an alternative to {target specification} ).
- --tos <tos>
- Set type of service field (8bits).
- --id <id>
- Set identification field (16 bits).
- --df
- Set Don't Fragment flag.
- --mf
- Set More Fragments flag.
- --ttl <hops>
- Set time to live [0-255].
- --badsum-ip
- Use a random invalid checksum.
- --ip-options <S|R [route]|L [route]|T|U ...>
- Set IP options
- --ip-options <hex string>
- Set IP options
- --mtu <size>
- Set MTU. Packets get fragmented if MTU is small enough.
IPv6 Options
- -6, --IPv6
- Use IP version 6.
- --dest-ip
- Set destination IP address (used as an alternative to {target specification}).
- --hop-limit
- Set hop limit (same as IPv4 TTL).
- --traffic-class <class>
- Set traffic class.
- --flow <label>
- Set flow label.
Ethernet Options
- --dest-mac <mac>
- Set destination mac address. (Disables ARP resolution)
- --source-mac <mac>
- Set source MAC address.
- --ether-type <type>
- Set EtherType value.
Payloads Options
- --data <hex string>
- Include a custom payload.
- --data-string <text>
- Include a custom ASCII text.
- --data-length <len>
- Include len random bytes as payload.
Echo Client/Server
- --echo-client <passphrase>
- Run Nping in client mode.
- --echo-server <passphrase>
- Run Nping in server mode.
- --echo-port <port>
- Use custom <port> to listen or connect.
- --no-crypto
- Disable encryption and authentication.
- --once
- Stop the server after one connection.
- --safe-payloads
- Erase application data in echoed packets.
Timing and Performance
Options which take
- --delay
- Adjust delay between probes.
- --rate <rate>
- Send num packets per second.
Miscellaneous
- -h, --help
- Display help information.
- -V, --version
- Display current version number.
- -c, --count <n>
- Stop after <n> rounds.
- -e, --interface <name>
- Use supplied network interface.
- -H, --hide-sent
- Do not display sent packets.
- -N, --no-capture
- Do not try to capture replies.
- --privileged
- Assume user is fully privileged.
- --unprivileged
- Assume user lacks raw socket privileges.
- --send-eth
- Send packets at the raw ethernet layer.
- --send-ip
- Send packets using raw IP sockets.
- --bpf-filter <filter spec>
- Specify custom BPF filter.
Output
- -v
- Increment verbosity level by one.
- -v[level]
- Set verbosity level. E.g: -v4
- -d
- Increment debugging level by one.
- -d[level]
- Set debugging level. E.g: -d3
- -q
- Decrease verbosity level by one.
- -q[N]
- Decrease verbosity level N times
- --quiet
- Set verbosity and debug level to minimum.
- --debug
- Set verbosity and debug to the max level.
Examples
ICMP ping
# nping aldeid.com Starting Nping 0.6.01 ( http://nmap.org/nping ) at 2012-06-20 20:27 CEST SENT (0.1879s) ICMP 192.168.60.129 > 199.83.132.66 Echo request (type=8/code=0) ttl=64 id=53514 iplen=28 SENT (1.1890s) ICMP 192.168.60.129 > 199.83.132.66 Echo request (type=8/code=0) ttl=64 id=53514 iplen=28 SENT (2.1901s) ICMP 192.168.60.129 > 199.83.132.66 Echo request (type=8/code=0) ttl=64 id=53514 iplen=28
TCP Flags
# nping --tcp -p 80 --flags rst -c 3 aldeid.com Starting Nping 0.6.01 ( http://nmap.org/nping ) at 2012-06-20 20:30 CEST SENT (0.2140s) TCP 192.168.60.129:46880 > 199.83.132.66:80 SR ttl=64 id=39564 iplen=40 seq=3392761691 win=1480 SENT (1.2144s) TCP 192.168.60.129:46880 > 199.83.132.66:80 SR ttl=64 id=39564 iplen=40 seq=3392761691 win=1480 SENT (2.2144s) TCP 192.168.60.129:46880 > 199.83.132.66:80 SR ttl=64 id=39564 iplen=40 seq=3392761691 win=1480 nping_event_handler(): READ-PCAP killed: Resource temporarily unavailable nping_event_handler(): TIMER killed: Resource temporarily unavailable Max rtt: N/A | Min rtt: N/A | Avg rtt: N/A Raw packets sent: 3 (120B) | Rcvd: 0 (0B) | Lost: 3 (100.00%) Tx time: 2.00146s | Tx bytes/s: 59.96 | Tx pkts/s: 1.50 Rx time: 3.00116s | Rx bytes/s: 0.00 | Rx pkts/s: 0.00 Nping done: 1 IP address pinged in 3.21 seconds
# nping --tcp -p 80 --flags syn -c 3 aldeid.com Starting Nping 0.6.01 ( http://nmap.org/nping ) at 2012-06-20 20:31 CEST SENT (0.1981s) TCP 192.168.60.129:47803 > 199.83.132.66:80 S ttl=64 id=52526 iplen=40 seq=2617481754 win=1480 RCVD (0.3703s) TCP 199.83.132.66:80 > 192.168.60.129:47803 SA ttl=128 id=65419 iplen=44 seq=3288422312 win=64240 <mss 1460> SENT (1.1984s) TCP 192.168.60.129:47803 > 199.83.132.66:80 S ttl=64 id=52526 iplen=40 seq=2617481754 win=1480 RCVD (1.3191s) TCP 199.83.132.66:80 > 192.168.60.129:47803 SA ttl=128 id=65420 iplen=44 seq=1833067768 win=64240 <mss 1460> SENT (2.1984s) TCP 192.168.60.129:47803 > 199.83.132.66:80 S ttl=64 id=52526 iplen=40 seq=2617481754 win=1480 RCVD (2.3342s) TCP 199.83.132.66:80 > 192.168.60.129:47803 SA ttl=128 id=65421 iplen=44 seq=935977506 win=64240 <mss 1460> Max rtt: 172.048ms | Min rtt: 120.478ms | Avg rtt: 142.689ms Raw packets sent: 3 (120B) | Rcvd: 3 (138B) | Lost: 0 (0.00%) Tx time: 2.00137s | Tx bytes/s: 59.96 | Tx pkts/s: 1.50 Rx time: 3.00543s | Rx bytes/s: 45.92 | Rx pkts/s: 1.00 Nping done: 1 IP address pinged in 3.20 seconds
# nping --tcp -p 80 --flags ack -c 3 aldeid.com Starting Nping 0.6.01 ( http://nmap.org/nping ) at 2012-06-20 20:32 CEST SENT (0.1972s) TCP 192.168.60.129:59078 > 199.83.132.66:80 SA ttl=64 id=21833 iplen=40 seq=991426470 win=1480 RCVD (0.1977s) TCP 199.83.132.66:80 > 192.168.60.129:59078 R ttl=128 id=65424 iplen=40 seq=2736126497 win=32767 SENT (1.1983s) TCP 192.168.60.129:59078 > 199.83.132.66:80 SA ttl=64 id=21833 iplen=40 seq=991426470 win=1480 RCVD (1.1989s) TCP 199.83.132.66:80 > 192.168.60.129:59078 R ttl=128 id=65425 iplen=40 seq=2736126497 win=32767 SENT (2.1989s) TCP 192.168.60.129:59078 > 199.83.132.66:80 SA ttl=64 id=21833 iplen=40 seq=991426470 win=1480 RCVD (2.1995s) TCP 199.83.132.66:80 > 192.168.60.129:59078 R ttl=128 id=65426 iplen=40 seq=2736126497 win=32767 nping_event_handler(): TIMER killed: Resource temporarily unavailable Max rtt: 0.078ms | Min rtt: 0.056ms | Avg rtt: 0.066ms Raw packets sent: 3 (120B) | Rcvd: 3 (138B) | Lost: 0 (0.00%) Tx time: 2.00279s | Tx bytes/s: 59.92 | Tx pkts/s: 1.50 Rx time: 3.00183s | Rx bytes/s: 45.97 | Rx pkts/s: 1.00 Nping done: 1 IP address pinged in 3.20 seconds
Echo client / server
Server
On the server, run:
# nping --echo-server "pass123" -e eth0 -vvv Starting Nping 0.6.01 ( http://nmap.org/nping ) at 2012-06-20 20:38 CEST Packet capture will be performed using network interface eth0. Waiting for connections... Server bound to 0.0.0.0:9929 [1340217541] Connection received from 192.168.1.13:56108 [1340217541] Client #0 (192.168.1.13:56108) disconnected [1340217552] Connection received from 192.168.1.13:53935 [1340217552] Good packet specification received from client #1 (Specs=8,IP=4,Proto=6,Cnt=5) [1340217552] NEP handshake with client #1 (192.168.1.13:53935) was performed successfully [1340217555] Client #1 (192.168.1.13:53935) disconnected ^C Raw packets captured: 0 (0B) | Echoed: 0 (0B) | Not Matched: 0 (0B) (0.00%) Tx time: 20.92945s | Tx bytes/s: 0.00 | Tx pkts/s: 0.00 Rx time: 20.92945s | Rx bytes/s: 0.00 | Rx pkts/s: 0.00 Nping done: 1 client served in 20.93 seconds
Client
On the client, run:
# nping --echo-client "pass123" 192.168.1.18 --tcp -p1-30 --flags ack Starting Nping 0.5.61TEST4 ( http://nmap.org/nping ) at 2012-06-20 14:39 EDT SENT (0.5060s) TCP 192.168.1.13:9776 > 192.168.1.18:1 SA ttl=64 id=8941 iplen=40 seq=563261407 win=1480 RCVD (0.5069s) TCP 192.168.1.18:1 > 192.168.1.13:9776 R ttl=64 id=0 iplen=40 seq=2016569017 win=0 SENT (1.5085s) TCP 192.168.1.13:9776 > 192.168.1.18:2 SA ttl=64 id=8941 iplen=40 seq=563261407 win=1480 RCVD (1.5097s) TCP 192.168.1.18:2 > 192.168.1.13:9776 R ttl=64 id=0 iplen=40 seq=2016569017 win=0 SENT (2.5120s) TCP 192.168.1.13:9776 > 192.168.1.18:3 SA ttl=64 id=8941 iplen=40 seq=563261407 win=1480 RCVD (2.5137s) TCP 192.168.1.18:3 > 192.168.1.13:9776 R ttl=64 id=0 iplen=40 seq=2016569017 win=0 ^C Max rtt: 0.976ms | Min rtt: 0.491ms | Avg rtt: 0.811ms Raw packets sent: 3 (120B) | Rcvd: 3 (138B) | Lost: 0 (0.00%)| Echoed: 0 (0B) Tx time: 2.51520s | Tx bytes/s: 47.71 | Tx pkts/s: 1.19 Rx time: 2.51520s | Rx bytes/s: 54.87 | Rx pkts/s: 1.19 Nping done: 1 IP address pinged in 3.02 seconds