Network & Sniffing

Networking a go go

Mattepuffo's logo
Monitorare il traffico di rete in tempo reale con nload

Monitorare il traffico di rete in tempo reale con nload

Ho scoperto un utile programmino per monitorare il traffico di rete in tempo reale su Linux: nload!

E' un programma per terminale, quindi utile soprattutto in ambito server o per controllo da remoto tramite SSH.

Per installarlo su Debian e derivate:

# aptitude install nload

Per Fedora:

# yum install nload

Una volta installato possiamo avviarlo digitando direttamente nload nel terminale.

Mattepuffo's logo
Controllo della rete con Nethogs

Controllo della rete con Nethogs

Nethogs è un programma per Linux da lanciare da terminale che controlla la rete su un'interfaccia specificata.

E' molto semplice da usare e anche molto comodo in quanto da solo poche e utili informazioni.

Nello specifico dice quali programmi stanno usando la rete.

Per installarlo su Debian basta un:

# aptitude install nethogs

Poi per lanciarlo:

# nethogs eth1

dove eth1 è l'interfaccia con la quale vi connettete alla rete; nel mio caso è la scheda WiFi che è la eth1 sulla mia Debian.

Mattepuffo's logo
Guida a Netstat

Guida a Netstat

Netstat è un comando disponbile sia su Windows che su Unix (e quindi su Linux, Mac OS X, BSD, ecc....).

Il comando permette di vedere lo stato delle connessioni del computer locale.

Il comando è eseguibile anche da utente normale, ma se potete è meglio eseguirlo da root in quanto da utente normale da errori sui processi che non gli appartengono.

Le prove le ho fatte su Linux, ma dovrebbero valere anche su Windows.

Vediamo alcuni esempi.

Listare tutte le porte:

# netstat -a | less

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 *:ssh                   *:*                     LISTEN
tcp        0      0 localhost.localdoma:ipp *:*                     LISTEN
tcp        0      0 *:mysql                 *:*                     LISTEN
tcp        0      0 *:rfb                   *:*                     LISTEN
tcp        0      0 192.168.1.130:ssh       62.94.208.157:38011     ESTABLISHED
tcp        0      0 localhost.localdoma:ipp *:*                     LISTEN
tcp        0      0 *:5800                  *:*                     LISTEN
tcp        0      0 *:rfb                   *:*                     LISTEN
tcp        0      0 *:www-http              *:*                     LISTEN
udp        0      0 *:ipp                   *:*
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node Path
unix  2      [ ACC ]     STREAM     LISTENING     6588   /tmp/.X11-unix/X0
unix  2      [ ACC ]     STREAM     LISTENING     6555   /var/run/cups/cups.sock
unix  2      [ ACC ]     STREAM     LISTENING     6772   /tmp/ssh-JznlyRfE1208/agent.1208
unix  2      [ ACC ]     STREAM     LISTENING     6787   /tmp/.ICE-unix/1219
unix  2      [ ACC ]     STREAM     LISTENING     7106   /tmp/orbit-casa/linc-589-0-2d27571c78035
unix  2      [ ACC ]     STREAM     LISTENING     6262   /var/run/syslog-ng.ctl
unix  2      [ ACC ]     STREAM     LISTENING     91352  /var/run/httpd/cgisock.1039
unix  2      [ ACC ]     STREAM     LISTENING     6587   @/tmp/.X11-unix/X0
unix  2      [ ACC ]     STREAM     LISTENING     7115   /tmp/orbit-casa/linc-54c-0-286f67bfa7764
unix  8      [ ]         DGRAM                    6260   /dev/log
unix  2      [ ACC ]     SEQPACKET  LISTENING     5178   @/org/kernel/udev/udevd
unix  2      [ ACC ]     STREAM     LISTENING     6786   @/tmp/.ICE-unix/1219
unix  2      [ ACC ]     STREAM     LISTENING     6648   @/tmp/dbus-hkcgAq60WC
unix  2      [ ACC ]     STREAM     LISTENING     6247   /var/run/dbus/system_bus_socket
unix  2      [ ACC ]     STREAM     LISTENING     7959   @/tmp/dbus-SKLywgy1Al
unix  2      [ ACC ]     STREAM     LISTENING     7868   /var/run/mysqld/mysqld.sock
unix  2      [ ]         DGRAM                    140683
unix  3      [ ]         STREAM     CONNECTED     139977
unix  3      [ ]         STREAM     CONNECTED     139976
unix  3      [ ]         STREAM     CONNECTED     139938 /var/run/dbus/system_bus_socket
unix  3      [ ]         STREAM     CONNECTED     140513
unix  3      [ ]         STREAM     CONNECTED     120365 @/dbus-vfs-daemon/socket-e0CHnaSH
unix  3      [ ]         STREAM     CONNECTED     119700
unix  3      [ ]         STREAM     CONNECTED     120366 @/dbus-vfs-daemon/socket-FfJaXrqO
unix  3      [ ]         STREAM     CONNECTED     119699
unix  3      [ ]         STREAM     CONNECTED     120359 @/dbus-vfs-daemon/socket-F35KezQT
unix  3      [ ]         STREAM     CONNECTED     119698
unix  3      [ ]         STREAM     CONNECTED     120360 @/dbus-vfs-daemon/socket-EQjCPyDf
unix  3      [ ]         STREAM     CONNECTED     119697
unix  3      [ ]         STREAM     CONNECTED     119693 @/dbus-vfs-daemon/socket-8CM7p1LP
unix  3      [ ]         STREAM     CONNECTED     119692

.................

Ho usato il comando less per scorrere tutti i risultati che non sono pochi.

Questo comando lista tutte le porte, sia in ascolto che non.

Mattepuffo's logo
Sniffare la rete con Cain & Abel

Sniffare la rete con Cain & Abel

Cin & Abel è, a mio avviso, uno dei migliori sniffer in circolazione.

Lo trovate qua.

E' gratuitio e richiede solo le librerie WinPcap (che coumunque potete installare direttamente insieme al programma).

L'unico "difetto" è che è disponibile solo per Windows.

Vediamo come usarlo per sniffare il traffico di rete.

Una volta installato avviatelo.

Come vedete la prima linea è composta del classico menu; poi trovate una serie di icone con varie funzioni; infine una serie di tab.

Mattepuffo's logo
Tshark: usare Wireshark da riga di comando

Tshark: usare Wireshark da riga di comando

Wireshark è considerato il miglior sniffer in circolazione, anche se non è molto semplice da usare.

Inoltre è dotato di un'ottima gui in Gtk.

Però, come ho fatto più volte notare, non sempre le gui sono migliori del terminale.

Può sembra anacronistico e strano, ma oggi vediamo come usare Wireshark da terminale con Tshark.

La forma più semplice è questa:

# tshark -i eth0

Con l'opzione -i specifichiamo l'interfaccia da usare.

Mattepuffo's logo
Il footprinting

Il footprinting

Ho fatto una spece di riassunto di varie info trovate in giro e vorrei riportarvele.

Il footprinting è l'attività che consente di creare un profilo sulla sicurezza di un bersaglio.

Attraverso vari strumenti e metodi è possibile arrivare a conoscere moltissime info su un determinato bersaglio (organizzazioni, privati, ecc).

E' la prima attività svolta dagli hacker quando voglio attaccare qualcuno (per qualsiasi scopo lo vogliano fare), ed è fondamentale in quanto permette di raccogliere molte info.

Gli elementi che vengono monitorati sono:

Internet Nomi di dominio
  Blocchi di reti/sottoreti
  Servizi
  IP raggiungibili
  Architettura di sistema
  ecc
Intranet Protocolli di rete
  Nomi host DNS
  ecc
Extranet Meccanismo di controllo di accesso
  Tipi di connessione
  ecc
Accesso remoto Numeri di telefonp
  VPN
  Tipo di sistema remoto
  ecc

I vari passi che vengono effettuati sono abbastanza personali, ma facendo un riassunto ne ho individuati 6.

PASSO 1: definire l'ambito di attività

Si tratta di determinare su cosa raccogliere informazioni:

  • tutta l'organizzazione o solo una parte?
  • anche i partner e le extranet?
  • consideraare anche le relazioni più "lontane"?

PASSO 2: autorizzazioni

Supponendo che stiate facendo tutto in buona fede e per testare la sicurezza della vostra organizzazione. dovete ottenere i permessi per svolgere la vostra attività.

In sostanza si tratta dei livelli 8 e 9 del modello OSI a 7 livelli: politica e finanziamenti.

PASSO 3: informazioni pubbliche

Molti di voi magari non ci pensano, ma ci sono tantissime informazioni pubblilche se sapete dove cercare:

  • pagine web
    • commenti codice sorgente pagine (HTML e CSS)
    • url per vpn, microsoft exchange
    • openconnect/java
  • organizzazioni correlate, ad esempio quando ci si rifà all'outsourcing per determinate attività, in quanto è facile che i partner non stiano attenti alla sicurezza degli altri
    • commenti codice sorgente pagine (HTML e CSS)
  • dettagli sulla sede, attraverso servizi come Google Maps o Google Earth
  • dettagli sui dipendenti, come numeri di telefono, indirizzi e email
    • paginebianche.it
  • eventi come fusioni, acquisizioni, liquidazioni, licenziamenti, che spesso, per velocizzare le operazioni, portano a trascurare la sicurezza
  • politiche di sicurezza che indicano che ci sono meccanismi di sicurezza attivi
  • informazioni archiviate non disponibili presso la fonte originale
    • webarchive.org
  • dipendenti scontenti
  • motori di ricerca e Usenet, attraverso i quali è possibile reperire molte informazioni usando le chiavi di ricerca adeguate; se andiamo qua possiamo ottenere molte di queste chiavi;
    • ad esempio cercando in Google "allinurl:tsweb/default.htm" possiamo ottenere i server Microsoft con la connessione wed desktop attiva

PASSO 4: enumerazione WHOIS

Mattepuffo's logo
Scoprire il MAC address dei computer connessi in rete

Scoprire il MAC address dei computer connessi in rete

Ogni computer connesso in rete ha un indirizzo logico che si chiama indirizzo IP che nella versione 4 (quella più usata e che sarà sosituita dalla versione 6) è composta da 4 numeri che possono andare da 0 a 255.

Ad esempio il mio router ha indirizzo 192.168.1.1.

Inoltre ogni macchina connessa ha anche un indirizzo MAC univoco fomrato da 6 numeri esadecimali (tipo 00-01-02-AA-BB-CC), di cui i primi tre identificano il costruttore e gli altri sono diversi per ogni modello.

Mentre l'IP, se non impostato, può cambiare ad ogni connessione, il MAC no.

Può essere quindi importante trovare i MAC delle macchine connesse e associrali agli IP.

Questa associazione è compito del protocollo ARP (Address Resolution Protocol).

Il sistema mantiene  una tabella di associazioni, in cui sono registrati gli indirizzi IP ed il loro Mac corrispondente.

Quando un computer deve contattare un altro computer, per sapere a quale dispositivo deve mandare i dati, cerca nella tabella ARP a quale indirizzo fisico corrisponde l’indirizzo IP.

Vediamo che comandi possiamo usare per identificare un MAC address usando Linux.

Su Linux aprite un terminale qualunque.

Mattepuffo's logo
Come funziona Ping

Come funziona Ping

Dopo aver spiegato come è possibile scoprire il sistma operativo usato da una macchina in rete usando il comando Ping, ho deciso di spiegare in maniera generale (anche perchè più di così non saprei) come funziona il comando stesso.

Ping è un comando disponibile su tutte le piattaforme e serve per misurare il tempo impiegato tra l’invio di un pacchetto dati e la ricezione della risposta dall’host remoto.

E' usato soprattutto per capire se una macchina è raggiungibile in rete (LAN o Web che sia).

Se non è raggiungibile il comando non ha riposta e la colpa può essere sia del target che del mittente.

Facciamo un esempio di comando lanciato dalla mia macchina con Linux verso il router:

$ ping -c 3 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=255 time=0.569 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=255 time=0.627 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=255 time=0.601 ms

--- 192.168.1.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.569/0.599/0.627/0.023 ms

Il parametro -c 3 serve per inviare solo 3 ping; in Windows potete ometterlo perchè lo fa di default.

Le macchine comunicano e anche abbastanza velocemente (e ci mancherebbe altro visto che è il router attraverso il quale mi collego).

Ma come funziona di preciso?

Mattepuffo's logo
Scoprire il sistema operativo con ping e traceroute

Scoprire il sistema operativo con ping e traceroute

Faccio una piccola premessa: per scoprire il sistema operativo usato dai computer in rete sarebbe meglio usare altri sistemi con Nmap; però se non si ha la possibilità/voglia di installare/studiare qualcosa di nuovo questo potrebbe essere un buon metodo, tenendo però in considerazioni i suoi limiti.

Detto ciò cominciamo con una breve descrizione di che cosa è l'OS Fingerprint: in breve è, appunto, il processo che permette di determinare il sistema operativo dell’host remoto.

Esistono due modi per farlo, uno attivo e uno passivo.

Quello attivo consiste nell'inviare pacchetti e analizzare la risposta.

Quello passivo nell'intercettare (sniffing) i dati in transito e valutare particolari campi dei protocolli.

Possiamo dire che tutti i sistemi operativi creano i pacchetti con valori arbitrari e distintivi.

Analizzando questi valori è possibile sapere con buona precisione quale sistema ha creato quei pacchetti, e di rimbalzo capire quale sistema operativo sta girando sulla macchina target.

Dei vari protocolli disponibili a noi interessa il protoccolo IP (Internet Protocol).

In maniera abbastanza generica possiamo dire che ogni informazione (email, streaming, ecc) attraversa la rete in forma frammentata: ogni frammento viene chiamato pacchetto dati.

Ogni connessione TCP viene fatta a pezzi e inglobata in pacchetti IP.

Questi pezzi contengo sia informazioni sui dati trasmessi, sia informazioni specifiche sul protocollo IP.

Di questi a noi interessa il campo TTL (Time To Live).

Il TTL è un valore che indica per quanto tempo il pacchetto IP può vagare per la rete prima di raggiungere la destinazione, e serve per evitare che pacchetti per qualche motivo sfuggiti al controllo continuino all’infinito a girare per la rete.

Infatti una volta che questo tempo scade, il pacchetto stesso viene eliminato.

Il TTL funziona così: quando il pacchetto viene creato/trasmesso viene impostato un valore TTL non specificato da nessuna parte; ognuno lo può impostare come vuole; ad ogni passaggio di router questo valore è decrementato di uno; quando raggiunge lo zero viene scartato.

Per verificare il TTL basta il comando Ping (disponibile su tutte le piattaforme).

Mattepuffo's logo
Nmap online

Nmap online

Vi segnalo questo ottimo servizio che permette di usare Nmap dirrettamente online.

Avete tre opzioni di scan:

  • Quick
  • Full
  • Custom

La scansione è abbastanza veloce e risultati vi vengono spediti tramite email.

L'unica pecca (inevitabile) è che non fa lo scan della Lan.