Analizzare una rete LAN con Wireshark

Icona Wireshark
Attenti allo squalo!!

Il nome Ethereal oramai è stato surclassato di gran lunga da Wireshark, software di sniffing considerato tra i migliori in assoluto. Non molto ostico da imparare a chi ha una base anche minima, Wireshark offre numerosi vantaggi per il controllo del traffico della rete, e permette di individuare subito eventuali problemi che affliggono la nostra rete, e con una precisione a dir poco sorpendente.

Detto in parole povere, lo sniffing equivale al controllo di tutti i dati di traffico che viaggiano in una determinata rete. Questa rete può essere la LAN del vostro ufficio come quella di casa vostra, ma anche una rete geografica più grande (come il vostro quartiere o la vostra città!). Con uno sniffer, si può controllare in modo preciso ogni pacchetto che attraversa la nostra rete, per cui si possono visualizzare tutti i siti visitati da un indirizzo IP, tutte le connessioni effettuate da un’altro indirizzo (FTP, HTTP, Bittorent ecc), ma anche le password inserite nei vari form dei siti.

Ma oggi, non ci occupiamo di questo. 🙂

Oggi impareremo a tenere sotto controllo una rete LAN via cavo (quindi non wireless), per riuscire ad analizzarla fino al pacchetto più basico, e capire come viaggiano le informazioni dentro quel groviglio di cavi dietro la nostra scrivania.

Per prima cosa, bisogna sapere che esistono due tipi di classificazioni per la rete LAN via cavo:

  • Rete Switched, dove i cavi LAN passano da uno switch prima di essere collegati alla rete;
  • Rete Non-Switched, dove i cavi LAN sono collgati direttamente dal PC al Router;

Rete Switched:

Questo tipo di rete è presente quando, in un ufficio o in una azienda, ci sono molti PC e macchine che lavorano in rete. Si fa affidamento ad uno switch per gestire la grande quantità di cavi che arrivano fino al server, e lo switch funziona come un “raccoglitore”. Tutti i cavi vengono collegati allo switch (possono essere anche più di uno), che poi, tramite un solo cavo, viene collegato al router. Gli switch più recenti, e generalmente tutti quelli di Layer 2, dopo un primo avvio memorizzano la posizione dei cavi nei vari slot, velocizzando in seguito il processo di comunicazione.

In parole povere, al primo collegamento lo switch chiede ad ogni slot se c’è qualcuno in ascolto (controlla che ci sia un cavo collegato ad un apparecchio), e se c’è una macchina dall’altra parte, questa gli risponderà inviandogli delle informazioni. Lo switch memorizzerà (utilizzando il MAC) dunque che nello slot 1 comunica con la macchina CAL00, nello slot 2 con la macchina CAL01 ecc., e gestirà le varie richieste in modo “privato”, ossia ogni PC potrà visualizzare solo le informazioni che passano nel suo cavo.

Rete Non-Switched:

È la classica rete domestica o di un piccolo ufficio, dove i pochi apparati presenti sono tutti collegati direttamente al router/modem, ed immessi direttamente in rete. Anche il router memorizza i cavi negli slot, ma a differenza dello switch non effettua nessuno smistamento dei dati di traffico.

Utilizzando queste prime informazioni, possiamo già dedurre che analizzare un’intera rete LAN è possibile, ma analizzare una rete non-switched è sicuramente molto più facile di una rete switched. Adesso vedremo come fare in entrambi i casi.

Analizzare una rete Non-Switched:

Analizzare una rete non-switched è molto semplice, e può essere fatto da un qualunque PC collegato alla rete che vogliamo analizzare. Basta installare Wireshark sul PC, e prima di avviare la scansione, selezionare dalle opzioni di cattura la modalità promiscua (promiscus mode).

Dopo, ci basta avviare la scansione, e la modalità promiscua ci permetterà di visualizzare i dati di tutte le macchine collegate alla rete. Semplice semplice.

Ovviamente, ricordatevi di salvare i dati catturati, in modo da poterli analizzare con calma.

Analizzare una rete Switched:

Per analizzare un rete switched invece ci sono dei problemi non indifferenti. Come spiegato sopra, non è possibile sniffare i dati di traffico per un motivo molto semplice, perché non passano fisicamente dal nostro cavo. Lo switch li indirizza direttamente alla macchina, avendone memorizzato i collegamenti.

Wireshark però ci offre la possibilità di aggiungere delle schede remote da controllare. C’è bisogno che ogni macchina di cui si voglia controllare il traffico abbia installato il driver WinPcap, disponibile sia come eseguibile per Windows che come codice sorgene per Linux. Si può scaricarlo direttamente dal sito ufficiale. Una volta installato su una macchina, questo applicativo non è visibile in nessun menù. Lo si può vedere solo nella lista dei programm installati.

Dopo averlo installato, bisogna avviare il suo servizio. Se siete su Windows, basta fare Start -> Esegui -> services e poi selezionare il servizio Packet Capture Driver per avviarlo. Ovviamente potete decidere anche di impostarlo con avvio automatico. In secondo luogo, bisogna anche aprire la porta 2002 TCP/UDP del Firewall. Il driver infatti comunica con Wireshark attraverso questa porta, ed è necessario che sia aperta.

A noi, dalla nostra postazione (che ovviamente dovrà essere collegata alla rete che intendiamo sniffare) e dopo aver fatto queste impostazioni, basta aggiungere l’indirizzamento IP della macchina, specificare la porta 2002 e, se è impostato sulla macchina remota, le credenziali di un account amministratore (campi che altrimenti possono essere lasciati vuoti). A questo punto, dare l’ok.

La nostra macchina chiederà all’indirizzamento IP da noi inserito di poter comunicare con WinPcap, e questo, rispondendo, gli invierà tutti i dati del traffico da quella scheda di rete fino allo switch. In questo modo, possiamo controllare quante più macchine vogliamo.

Mi rendo conto che effettivamente installare WinPcap su tutte le macchine può essere un’operazione noiosa. Potrebbe essere una buona idea distribuire il software dal server se non si vuole andare manualmente su ogni macchina.

Altri metodi per una rete switched?

In realtà, esistono altri metodi per controllare il traffico di una rete switched, ma nonsempre funzionano, sopratutto sulle reti più moderne, che sono state appositamente immunizzate da questo tipi di attacchi.

Stiamo parlando di attacchi di MAC Flooding e ARP Poisoning, che puntano entrambi ad ingannare lo switch, in modo da fargli dimenticare gli indirizzamenti memorizzati, ed inviare tutti i dati di rete a tutti i pc.

Questi metodi sono efficaci su vecchie reti, ma come già detto sopra, sono completamente inutili sulle nuove (a meno che non si trova qualcuno che ha disabilitato volontariamente le apposite protezioni). Inoltre, causano spesso una disconnessione da internet (sopratutto se il traffico è elevato), e non sempre permettono di sniffare tutti i dati che passano. Una dose di pacchetti viene di solito persa con questi metodi, cosa che invece, con il controllo remoto, non succede.

Ma a cosa server “sniffare” una rete LAN?

Sicuramente viene da pensare che ci si voglia fare i fatti degli altri, oppure si voglia controllare i propri dipendenti. Fondamentalmente, il concetto di controllo del traffico della LAN nasce da altre necessità, anche se oggi si controllano di più i siti che vengono visitati.

Controllare il traffico di rete serve per capire se in rete ci sono dei problemi, che spesso ne causano un rallentamento. Certo, anche un dipendente che passa un paio d’ore su Google Maps o su un Browser Game causa un rallentamento, ma mai quanto dei pacchetti che viaggiano all’infinito nella rete senza risposte, o comunicazioni sbagliate. Analizzando la rete si può anche capire se vi sono dei danni a livello fisico nella cablatura (analizzando dei segmenti di traffico, tipo da un PC ad una stampante), vedere quante richieste (e quanti accessi) esterni avvengono su determinate macchine, ed, infine, anche il traffico di rete di un singolo utente.

Wireshark è un programma completo, semplice da usare ma complesso nel totale. A seguito spiegherò con sniffare altre reti, come eseguire dei filtri, e come impostare delle opzioni avanzate. Per ora, sapete come controllare una rete domestica/aziendale 🙂

  • ReF

    Oh, io aspetto il seguito da giù di un anno 😉

    Scherzi a parte, sarebbe interessante avere una guida-tutorial per monitorare una rete domestica. Ad esempio capire perché, se c’è una pagina Facebook aperta su un computer in casa, la rete ha un crollo di circa 500Kb in download. Oppure se è possibile fare dei benchmark tra diversi sistemi operativi presenti in rete.

    • Eheh, diciamo che da allora con Wireshark ci ho smanettato poco 😛

      Comunque, per controllare una rete domestica, ti basta seguire l’esempio della rete non-switched. In questo modo, puoi visualizzare tutto il traffico che passa in casa.

      Facebook carica molti script, anche se non li vediamo. Aggiungendo poi i contenuti della pagina, il peso è comprensibile.

      Cosa intendi con “fare dei benchmark”?

      • ReF

        Intendo dire che ogni sistema operativo ha la sua sequela di pacchetti più o meno nascosti che viaggiano avanti e indietro per la rete e sarebbe bello poter fare un’analisi più accurata per ogni sistema operativo.
        Mi ricordo che, quando ero sotto tesi e mi drogavo di radio online mentre la scrivevo, utilizzando linux tutto procedeva tranquillamente mentre se utilizzavo windows la stessa stazione radio faceva il buffering ogni 3 minuti.

        All’epoca ci avevo fatto il pensierino, ma poi ho lasciato tutto così com’era (sono passato ad Apple, linux e, soprattutto, banda più larga e non ho più sentito necessità di confrontarmi con una cosa del genere).
        Ultimamente facebook sul computer della mia ragazza (con elementaryOS) mi fa collassare la banda e sarei curioso di capire che diamine succede. Dato che con OS X tutto procede regolarmente, non può essere un problema (solo) di fb, ma ci deve essere qualcosa in ElementaryOS che rompe le scatole.
        E il pensierino ritorna prepotente! 🙂

        • Claro! 🙂

          In questo caso, non ti consiglio di usare una postazione come punto di monitoraggio, sarebbe meglio che installassi il programma su ogni macchina che vuoi monitorare. Lo lasci attivo e salvi i dati, cosìli puoi controllare meglio.

          Ad ogni modo, mi metto a buttare giù qualche altro metodo (anche senza usare Wireshark, utilizzando programmi storici come nmap) e qualche altro modus operandi, così ti togli il dente 🙂

          Per ogni eventuale chiarimento o discorso più complesso, puoi liberamente contattarmi via mail!