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:

Non tutti i router si preoccupano di riportare i messaggi di errore in maniera corretta, e dunque questa procedura non riesce sempre ad identificare tutti gli step.
Si considerino gli host con cui si è provato ad effetture il comando ping nell'esercizio 1, e si determini il percorso seguito dal paccheto per raggiunere la destinazione usando il comando 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.

Si confrontino i risultati ottenuti con netstat con quelli dati da 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).