Archivi tag: networking

Ottenere l’IP pubblico da terminale

Il modo migliore è quello di utilizzare un sito web pubblico che mostri l’IP del computer richiedente, ottenendo così l’indirizzo IP che si utilizza per navigare in rete.

Esistono molti siti che offrono questa funzione e ce ne è uno in particolare che restituisce la stringa senza tag o informazioni aggiuntive e dunque si presta bene per essere utilizzato negli script.

Dalla Bash è sufficiente scrivere:

# wget -qO- http://ipecho.net/plain

oppure

# curl http://ipecho.net/plain

se si desidera utilizzare Curl.

Identificare l’indirizzo IP di un dispositivo con Wireshark

Al giorno d’oggi esistono diversi tipi di apparati  in grado di comunicare in rete via TCP/IP: centrali di allarme, nebbiogeni, DVR, ecc. Non solo computer quindi, ma anche dispositivi di vario genere dotati di interfaccia di rete e quindi di un indirizzo IP. Molti di essi offrono addirittura la possibilità di essere configurati via web e di essere comandati da remoto, secondo le possibilità offerte dall’infrastruttura di rete alla quale questi apparati vengono collegati.

Capita a volte, per i motivi più disparati, di perdere o dimenticare l’indirizzo IP statico assegnato al dispositivo in fase di setup. Purtroppo in questi casi si è costretti a ripristare le impostazioni di default, perdendo così tutta la configurazione. Esiste un’alternativa: utilizzare Wireshark per sniffare il traffico di rete generato dal dispositivo e identificare così il suo indirizzo IP.

La procedura consiste nell’avviare il programma, selezionare l’interfaccia di rete corretta (ad esempio la scheda ethernet integrata), avviare il capturing  e collegare il proprio computer direttamente al dispositivo tramite un cavo incrociato.

Sullo schermo appariranno i primi pacchetti. Quelli di nostro interesse sono i pacchetti ARP generati dal dispositivo. Il protocollo ARP è un sistema attraverso il quale si associa l’indirizzo IP all’indirizzo fisco della scheda di rete (mac address) e serve per l’instradamento dei pacchetti nella rete.

Non importa che la scheda del nostro computer sia configurata sulla stessa sotto rete del dispositivo, ma è importante che sia configurata con un indirizzo IP statico.

Wireshark_arp

Installare Wireshark su Ubuntu

In informatica e in telecomunicazioni Wireshark è un software  per l’analisi di protocollo (o packet sniffer, letteralmente annusa-pacchetti) utilizzato per la soluzione di problemi di rete, per l’analisi e lo sviluppo di protocolli o di software di comunicazione e per la didattica.

Possiede un’interfaccia grafica che ne facilita l’utilizzo e la scrematura dei dati raccolti. Tuttavia richiede competenze specifiche e una profonda conoscenza delle reti informatiche e del modello ISO/OSI.

Wireshark riesce a “comprendere” la struttura di diversi protocolli di rete, è in grado di individuare eventuali incapsulamenti, riconosce i singoli campi e permette di interpretarne il significato.

Per gli utenti di Ubuntu e dei sistemi Debia-based è disponibile nei repository ufficiali e per l’installazione è sufficiente scrivere nel terminale:

$ sudo apt-get install wireshark

Prima del suo utilizzo  è necessario dare le corrette autorizzazioni al nostro utente affinché possa accedere correttamente alle interfacce di rete installate sul nostro sistema.

$sudo dpkg-reconfigure  wireshark-common

Alla domanda: “Permettere ai non-superuser di catturare i pacchetti?” rispondere <Sì>.

Dopodiché assegnare l’utente corrente al gruppo wireshark:

$ sudo usermod -a -G wireshark $USER

Infine riavviare il sistema, o effettuare un logout per rendere effettive queste modifiche. Adesso siamo pronti ad utilizzare il software che può essere avviato dal menù o dal terminale:

$ wireshark

Una volta selezionata l’interfaccia di rete e avviato il capturing dei pacchetti, vedremo una gran mole di dati e informazioni riferiti al traffico di rete verificatosi in quel medesimo instante. Come ho già detto all’inizio, l’analisi e l’interpretazione di questi dati richiede una buona conoscenza del funzionamenti delle reti e dei protocolli. Prossimamente pubblicherò alcuni casi concreti e qualche esempio pratico.

Clonazione di un disco

In questo periodo sto leggendo un libro davvero interessante: Computer Forensics di Ghirardini – Faggioli, Apogeo Editore. Il testo tratta delle tecniche di analisi forense in ambito informatico. Grazie a questo libro ho appreso una nuova tecnica per effettuare il clone di un disco. Avevo già trattato questo argomento in precedenza. Tuttavia questo sistema è molto più accurato ed elegante e merita certamente di essere menzionato tra i miei appunti di informatica, in quanto tale metodologia può rivelarsi davvero utile.
Per prima cosa la copia: viene usato il comando dd che esegue una copia byte per byte a prescindere dal tipo di filesystem utilizzato. Ad esempio il comando:

# dd if=/dev/sda of=/percorso/nome_file.img bs=2048

esegue una copia del disco (device) sda (compresa l’MBR, la struttura delle partizioni e lo spazio non utilizzato) nel file nome_file.img. Ovviamente, invertendo gli argomenti, è possibile ripristinare un’immagine creata precedentemente nel disco.
La destinazione deve risiedere necessariamente in un disco diverso da quello sorgente. Quindi dobbiamo disporre di un altro supporto, interno o esterno, purché abbastanza capiente da contenere il file immagine, che avrà come dimensione finale la dimensione nominale del disco sorgente. Come possiamo fare se non si dispone di un supporto secondario? Gli autori descrivono come trasferire il file immagine in un’altra macchina via rete attraverso il tool netcat. Questo programma è in grado di restare in ascolto su una determinata porta e riportare tutto quello vi passa in un file. Dunque, possiamo procedere in questa maniera: nel computer di destinazione, che farà da server, avviare netcat:

$ netcat -l -p 5959 > nome_file.img

Sul pc client, dove risiede il disco da clonare:

# dd if=/dev/sda bs=2048 | netcat 192.168.0.1 5959

I parametri sono ovviamente a titolo di esempio. Quindi, nel caso reale, dovremo indicare l’indirizzo reale del server e una porta che non sia già usata da un altro programma in quel momento.
Una volta ottenuta l’immagine del disco, è possibile ripristinarla allo stesso modo, oppure montarla attraverso i loop device. Tuttavia dobbiamo ricordarci che quello che abbiamo in mano è la copia raw del disco e non una partizione. Quindi dobbiamo prima analizzare lo schema di partizionamento del disco, poi procedere con il montaggio della partizione di nostro interesse. Quindi:

$ fdisk -u -l nome_file.img

e otterremmo un risultato simile a questo:

Device Boot      Start         End      Blocks   Id  System
nome_file.img1   *          63   113627744    56813841    7  HPFS/NTFS
nome_file.img2       113627745   156296384    21334320    7  HPFS/NTFS

Per montare la partizione dobbiamo calcolare il valore di offset che è dato dal numero di blocco iniziale * 512. Nell’esempio, la partizione nome_file.img1, che è di tipo ntfs inizia dal blocco 63, perciò: 63 * 512 = 32256. Quindi:

# mount -t ntfs -o ro,loop,offset=32256 nome_file.img /percorso/mountpoint