Traceroute e netstat
Tutti gli esperimenti fatti fino ad ora si sono svolti interamente (o quasi) in rete locale. Cosa succede ad un pacchetto quando proviamo a contattare un host lontano, il cui IP non è direttamente raggiungibile? Come si è visto nell'esercizio 1, in questo caso è necessario affidare il pacchetto ad un router. A sua volta questo router potrebbe dover affidare il pacchetto ad un altro router, e così via.
All'interno del protocollo usato per la trasmissione dei pacchetti è possibile impostare un massimo numeri di salti ammissibili, ovvero di passaggi da un router ad un altro, prima che il pacchetto venga rifiutato. Usando questa caratteristica, è possibile ricostruire il percorso che è necessario fare per raggiungere un determinato host. Ad esempio:
- Si invia un pacchetto con il numero di salti impostato ad 1. Questo tornerà subito indietro appena incontra il primo router.
- Si invia un altro pacchetto, questa volta con un limite di 2 salti, e si prende nota del router che ci comunica l'errore nella trasmissione (il secondo nel percorso).
- Si continua questo processo incrementando il numero di salti, fino a che il pacchetto non arriva a destinazione.
tracepath
, che implementa la strategia
descritta sopra.
Monitorare i servizi attivi con netstat
Quando siamo loggati su una macchina, potremmo voler verificare i servizi disponibili controllando quali porte sono attualmente "aperte", ovvero per quali di queste è attivo un processo in ascolto.
Abbiamo già usato il metodo con la forza bruta di nmap,
che invia richieste a tutte le porte fino a che ne trova una aperta. Se
abbiamo però una shell attiva, possiamo elencare tutti i servizi in
ascolto tramite il comando netstat -natp
.
nmap localhost
. Il primo comando
fornirà una lista più completa, perché può monitorare anche le
connessioni attive, e perché non ha bisogno di provare le porte
una per una (nmap, per terminare in tempi ragionevoli, fa una selezione delle
porte da provare).