Genereer alle soorten netwerkpakketten met Nping
Gepubliceerd: Dinsdag 29 maart 2011
Auteur: Koen Vervloesem
Om netwerkproblemen te testen zou je in sommige gevallen netwerkpakketten tot op het niveau van individuele velden van de protocolheaders moeten kunnen tunen. Dat kan dankzij het programma Nping.
Je kunt Nping gebruiken als een vervanger voor ping om actieve hosts op het netwerk te ontdekken, maar het programma kan veel meer: je kunt er netwerkpakketten met willekeurige inhoud mee genereren voor troubleshooting-taken. Zo kun je er aangepaste tcp-, udp-, icmp- en arp-pakketten mee genereren, en zelfs Ethernet-frames. Wil je bijvoorbeeld tcp-pakketten naar poort 80 en 433 sturen van de hosts scanme.nmap.org en webwereld.nl, dan gaat dat als volgt met de volgende uitvoer:
$ sudo nping -c 1 --tcp -p 80,433 scanme.nmap.org webwereld.nl
Starting Nping 0.5.51 ( http://nmap.org/nping ) at 2011-03-28 18:49 CEST
SENT (0.1553s) TCP 192.168.0.111:2029 > 85.112.20.124:80 S ttl=64 id=22179 iplen=40 seq=710836429 win=1480
RCVD (0.1858s) TCP 85.112.20.124:80 > 192.168.0.111:2029 SA ttl=54 id=44538 iplen=44 seq=2043223841 win=5840
SENT (1.1556s) TCP 192.168.0.111:2029 > 85.112.20.124:80 S ttl=64 id=22179 iplen=40 seq=710836429 win=1480
RCVD (1.1888s) TCP 85.112.20.124:80 > 192.168.0.111:2029 SA ttl=54 id=62204 iplen=44 seq=3444421433 win=5840
SENT (2.1566s) TCP 192.168.0.111:2029 > 64.13.134.52:433 S ttl=64 id=22179 iplen=40 seq=710836429 win=1480
SENT (3.1577s) TCP 192.168.0.111:2029 > 85.112.20.124:433 S ttl=64 id=22179 iplen=40 seq=710836429 win=1480
Statistics for host scanme.nmap.org (64.13.134.52):
| Probes Sent: 2 | Rcvd: 0 | Lost: 2 (100.00%)
|_ Max rtt: N/A | Min rtt: N/A | Avg rtt: N/AStatistics for host webwereld.nl (85.112.20.124):
| Probes Sent: 2 | Rcvd: 2 | Lost: 0 (0.00%)|_ Max rtt: 33.007ms | Min rtt: 33.007ms | Avg rtt: 33.007ms
Raw packets sent: 4 (160B) | Rcvd: 2 (92B) | Lost: 2 (50.00%)
Tx time: 3.00332s | Tx bytes/s: 53.27 | Tx pkts/s: 1.33
Rx time: 4.00418s | Rx bytes/s: 22.98 | Rx pkts/s: 0.50
Nping done: 2 IP addresses pinged in 4.16 seconds
Zoals je ziet, krijg je na het verzenden en ontvangen van de pakketten ook statistieken voor elke host. Als hosts kun je overigens ook een hostmask gebruiken, zoals 192.168.0.0/24 voor alle 256 hosts in het lokale netwerk. Met de optie -c geef je op hoeveel keer je elke host als target wilt gebruiken. Als je tussen elk verzonden pakket bijvoorbeeld een vertraging van 500 ms wilt inbouwen, dan kan dat met de optie --delay 500ms.
In de tcp-mode heb je volledige controle over allerlei velden van de protocolheader. Met --seq kun je bijvoorbeeld het tcp sequence number opgeven en met --flags individuele flags, bijvoorbeeld --flags syn,ack,rst. Met --win specificeer je de tcp window size en met --badsum gebruikt Nping een ongeldige tcp checksum voor het pakket, waardoor je bijvoorbeeld een firewall of intrusion detection system die de checksum niet controleert kunt ontmaskeren. Ook de opties van de icmp-mode en de arp-mode van Nping zijn extreem uitgebreid. Tot slot kun je ook de payload van een pakket opgeven met de opties --data (voor hex strings), --data-string (voor strings) of --data-length (voor willekeurige bytes van een bepaalde lengte).
Nping werkt net zoals het moederproject Nmap op Linux, Mac OS X en Windows. Uitgebreide uitleg over de mogelijkheden vind je in de man-pagina. Voer je Nping zonder parameters uit, dan toont het een overzicht van de belangrijkste opties.
De rubriek Tips & Tools biedt praktische informatie die IT-professionals in hun dagelijkse werk kunnen toepassen.
