hping tutorial - sbocko/hping3-tutorial-sk GitHub Wiki

Hping


Úvod

  • command line tool
  • rozširuje možnosti klasického pingu
  • okrem ICMP podporuje aj TCP, UDP a IP protokoly
  • traceroute...

Hping sa používa ako nástroj na testovanie sieťovej bezpečnosti. Umožňuje scanovať porty, testovať firewall a sieťové protokoly, traceroute, remote OS fingerprinting, remote uptime guessing...

Inštalácia

Budeme používať Linux. Pre Windows je k dispozícii iba Hping2.

sudo apt-get install hping3

alebo si stiahneme Virtualbox, .vdi súbor a .vbox súbor s Ubuntu, kde je všetko potrebné nainštalované.

Základy TCL

Spustením príkazu hping3 sa dostaneme do TCL shell-u. TCL je skriptovací jazyk, ktorý hping používa. Píšu sa v ňom skripty, nástroje na testovanie siete a pod.

Tutoriál pre TCL nájdete na tejto adrese.

Hping API nájdete na tejto adrese.

Hping cheat sheet je k dispozícii tu.

Práca s premennými

  • premennej a priradíme hodnotu "hello": set a hello
  • volanie premennej: puts "$a world!" alebo aj puts "[set a] world!"

Pri volaní príkazu sa najprv interpretujú všetky vnorené príkazy a následne sa vykoná samotný príkaz. Kód medzi { a } sa neinterpretuje. Platí pravidlo, že v TCL je všetko string (premenné, príkazy, list-y...)

set i pu
set j ts
$i$j "Hi there"
puts {$i}
expr "20+30"

Procedúry

Procedúra sa definuje kľúčovým slovom proc. Za ním medzerami oddelené názov a parametre uzavreté v { a }. V ďalších zátvorkách je telo procedúry. V prípade, že sa nepoužije kľúčové slovo return, tak procedúra vráti výsledok posledného vyhodnoteného výrazu.

proc abs {x} {
    if {$x > 0} {
	  return $x
    } else {
	  expr -$x
    }
}

Listy

List je string, pričom každý element listu je oddelený medzerou. Príkazy na prácu s listom sú llength, lindex, list, lrange, lappend, lreverse, lset, lsort a pod.

llength "a b c"

set mylist {1 2 3 4 5 6}
foreach {x y} $mylist {
	puts "$x+$y = [expr $x+$y]"
}

lset {a b c d e} 2 X 

lsort -decreasing $mylist 

Hping3 - príklady

Preklad doménoveho mena na IP adresu.

hping resolve www.google.com

Klasický ping.

hping3 -1 www.google.com

Inak

hping send {ip(daddr=8.8.8.8)+icmp(type=8,code=0)}

A čo odpoveď?

hping recv eth0

Traceroute.

hping3 --traceroute -V -1 www.google.com

Príkaz recv defaultne vráti jeden paket (v liste) z radu daného sieťového rozhrania. Ak žiadny nie je k dispozícii, tak je vykonávanie blokované, pokiaľ nejaký nepríde na interface.

Smurf attack. DoS útok založený na rozposielaní broadcastových správ.

hping3 -1 --flood -a VICTIM_IP BROADCAST_ADDRESS

Príklady

  1. Pošlite TCP paket s príznakom SYN každých 5 sekúnd na port 443 na adresu www.google.com

  2. Spustite traceroute z portu 5000 na port 80 na adresu www.google.com

  3. Pošlite UDP paket so zdrojovou adresou 1.2.3.4 na adresu www.google.com

  4. Zistite všetky otvorené porty na localhoste v rozmedzí 1-1000

  5. Napíšte script, ktorý vypíše všetky zdrojové adresy a TTL paketov z rozhrania eth0.

nano script.tcl

while 1 {
    set p [lindex [hping recv eth0] 0]
    puts "[hping getfield ip saddr $p] -> [hping getfield ip ttl $p]"
}

Spustenie skriptu: sudo hping3 exec script.tcl

Úloha

Napíšte TCL skript, ktorý bude simulovať program traceroute. Skript by mal postupne posielať ICMP ECHO REQUEST pakety so zvyšujúcim sa TTL a zobrazovať odpovede z radu na rozhraní eth0 typu ICMP TTL EXCEEDED (type 11, code 0), pricom pri kazdej zvysi hodnotu TTL o jedna. Ak pride odpoved ICMP ECHO REPLY, tak skonci.

⚠️ **GitHub.com Fallback** ⚠️