Použití
Dnes si ukážeme manuální metodu, jak detekovat, že je určitý počítač na síti živý, tzv. online. Tato informace se hodí síťovým administrátorům i etickým hackerům, protože řada síťových skenerů právě provádí nejdříve tuto detekci, tzv. host discovery, pokud chtějí sbírají další informace o systému. Pokročilejší detekce počítačů na síti si můžete vyzkoušet v našem SKP02 – skenování počítačů na síti.
Ping
Příkaz ping s parametrem IP adresy vysílá ICMP zprávu s dotazem echo Request a pokud tato zpráva dorazí na cílový počítač, odpoví ICMP zprávou echo reply. Síťový protokol ICMP není jediným protokolem, kterým lze detekci provádět, více informací lze získat v SKP01 – kali linux a protokoly TCP/IP.
Příkaz ping je dostupný v příkazové řádce téměř na všech platformách a použití parametrů se může mírně lišit. Náš příklad budeme cvičit na linuxu v prostředí shellu Bash, protože skriptování je zde relativně jednoduché.
Spustíme-li příkaz ping s IP adresou 127.0.0.1, což je vždy Váš lokální počítač. Nakonec stiskneme klávesu CTRL+C, protože jinak bychom vysílali ICMP zprávy do nekonečna.
1 2 3 4 5 6 7 8 9 |
ping 127.0.0.1 PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data. 64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.023 ms 64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.060 ms 64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.031 ms ^C --- 127.0.0.1 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 1998ms rtt min/avg/max/mdev = 0.023/0.038/0.060/0.015 ms |
Z výpisu jsou vidět odpovědi z cílového počítače (řádky s atributy ttl a time). Na konci příkaz ping přiložil statistiku odeslaných a přijatých paketů. Z výpisu vidíme, že počítač 127.0.0.1 odpovídá na naše dotazy a je online. Pokud bychom chtěli ping naskriptovat a systematicky používat, musíme se zanořit do nápovědy příkazu ping (man ping) a najít parametr omezující počet opakování (-c) a parametr omezující dobu čekání na odpověd (-w). Vyzkoušíme hned tyto parametry.
1 2 3 4 5 6 7 |
ping 127.0.0.1 -c1 -w2 PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data. 64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.026 ms --- 127.0.0.1 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.026/0.026/0.026/0.000 ms |
Z výpisu vidíme, že příkaz ping odeslal pouze jeden ICMP dotaz, oznámil, že dostal odpověd od cílového počítače a ukončil se.
Skript host-discovery.sh
Všechny získané vědomosti vložíme do skriptu, abychom mohli volání opakovat bez specifikace parametrů.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#!/bin/bash # host-discovery.sh | hackingkurzy.cz, Petr Juhanak 2014 HOST="$1" PING="/bin/ping $HOST -c1 -w2" # spustime ping # echo "[*] debug $PING" CMD=`$PING` # zeptame se, jak to dopadlo if [ $? -eq 0 ]; then echo "$HOST - je online" else echo "$HOST - se zda offline, zkuste zvysit dobu na cekani!" fi |
Soubor uložíme pod názvem host-discovery.sh a přidělíme mu práva ke spuštění příkazem chmod.
1 |
chmod 700 ./host-discovery.sh |
Testujeme skript
Můžeme vyzkoušíme pár příkladů ze světa.
1 2 3 4 5 6 7 8 |
./host-discovery.sh 8.8.8.8 8.8.8.8 - je online ./host-discovery.sh 127.0.0.1 127.0.0.1 - je online ./host-discovery.sh 6.6.6.6 6.6.6.6 - se zda offline, zkuste zvysit dobu na cekani! |
Závěr
Uvedený příklad skriptu začne být zajímavý v případě, pokud jej doplníte o funkcionalitu překladu doménového jména nebo rozšíříte dotazování na celou adresu sítě.
To je pro dnešek vše. Zvažujete-li cestu etického hackera od začátku, rád uvidím na hacking kurzech.