Archivio Categorie: Linux

Come Montare Immagini ISO

In Linux esistono diverse utility per poter gestire immagini di diversi tipi ma in questo articolo presenteremo un programma che risulta essere uno dei più completi, dotato di interfaccia grafica e multilanguage, Furius ISO mount.

Caratteristiche:

Monta automaticamente ISO, IMG, BIN, MDF e NRG Image File.
Crea automaticamente un punto di montaggio nella vostra home directory.
Unmounts automaticamente il file di immagine.
Rimuove automaticamente la directory di mount per far tornare la vostra home directory al suo stato precedente.
Montaggio di immagini multiple.
Collegamento con Brasero o Nautilus (a scelta) per masterizzare le immagini
Genera checksum MD5 e SHA1.
Genera automaticamente un file di log di tutti i comandi necessari a montare e smontare le immagini manualmente.
Procediamo al download e all’installazione come illustrato di seguito…

Dobbiamo prima precisare che esistono 2 versioni del programma una python e l’altra mono la differenza sta che la versione python è solo in inglese ma supporta il drag n drop (invece di cliccare susfoglia trasportiamo il file di immagine all’interno del apposito riquadro e questa viene montata).

Colleghiamoci al sito ufficiale nella sezione riguardante il programma in questione, scorriamo la pagina fino alla sezione in cui sono disponibile le ultime versioni (al momento quelle nell’immagine, il procedimento di intallazione non dovrebbe cambiare in caso di future versioni):

e scegliamo la versione che ci interessa (consigliamo comunque la versione Mono perchè è disponibile in italiano), per entrambe le versione sono disponibili più pacchetti:

se avete Debian o derivati come Ubuntu, Kubuntu, ecc… scaricate il pacchetto .deb
in alternativa scaricate il pacchetto dei sorgenti furiusisomount-X.X.X.X.tar.gz (dove le X rappresentano la versione) che dovrà essere compilato
CASO 1 (file .deb):

Scarichiamo il pacchetto e facciamo doppio click poi clicchiamo su Installa Pacchetto (se rischiesto inseriamo la password di root e scarichiamo i pacchetti necessari)

CASO 2 (file .tar.gz):

Versione Mono:

Innanzitutto, se non è è già presente, procediamo all’installazione di mono.
per chi ha ubuntu basterà dare da terminale il comando:

sudo apt-get install build-essential mono-gmcs fuseiso libgtk2.0-cil libmono-system2.0-cil gksu
Ora possiamo installare Furius ISO mount, estraiamo l’archivio e apriamo il terminale posizionandoci nella cartella appena estratta (cd nomecartella)
Per installare un programma da sorgente dovremmo dare i seguenti comandi:
./configure
make
make install
Versione Python:

Per lanciare il programma è sufficiente dare il comando:

./furiusisomount
FUNZIONAMENTO

Una volta eseguito il programma basterà:

cliccare su Browse
scegliere la nostra immagine
cliccare su:  Mount per montarla; Checksum per generare il checksum-file; Burn per masterizzarla con il software scelto a lato (Brasero o Nautilus)
Ecco che la nostra immagine verrà montanta senza alcuno sforzo.

Come Convertire Video con Linux

In questo articolo spiegheremo come procedere alla conversione di un qualunque tipo di video (per esempio .flv scaricato da MegaVideo o youtube… Per scaricare i video da qualunque sito vi rimando a questo articolo in cui mi sono soffermato sul caso MegaVideo ma il procedimento è uguale anche per youtube ed altri…); è presente anche questa guida specifica per i limiti di tempo e download file da Megavideo, MegaUpload e Veoh.

L’unica cosa di cui necessitiamo è Avidemux, un semplice ma efficace editor video (può essere usato anche per estrarre tracce audio oppure tagliare o unire video).

Avidemux è un software OpenSource (e pericò naturalmente gratuito) che include diversi formati come AVI, QuickTime, MPEG, OGM, MP4, ASF offrendo anche la possibilità si supportare tutto ciò per cui abbiamo installato un codec…

Ubuntu: apriamo Synaptic (Sistema => Amministrazione => Gestore pacchetti Synaptic) e cerchiamo “Avidemux” (installiamo, se presente, anche “Avidemux-common”)

Kubuntu: apriamo il terminale e diamo il comando

sudo apt-get install avidemux-qt
Per altre distribuzioni (a meno che non troviate qualcosa di “pronto”) installare i sorgenti scaricabili da sito ufficiale.

INSTALLAZIONE DEI SORGENTI:
Estraiamo i files dal pacchetto .tar.gz appena scaricato (vedi sopra) con il comando da terminale (possiamo in alternativa posizionarci sul pacchetto e con tasto destro cercare l’opzione “Estrai” o simile…):
tar -zxvf nomefile.tar.gz

Dalla versione 2.4 (quella che avete scaricato) basta solo dare il comando da terminale, dopo esserci posizionati nella cartella contenente i sorgenti:
cmake .
e poi

make
UTILIZZO

Ora che il software è stato installato possiamo procedere alla conversione.

Nell’esempio convertiremo un video in formato .flv in un video in formato .avi (il procedimento è analogo per altri formati di video)

Apriamo Avidemux e clicchiamo su Apri selezionando il video che vogliamo convertire (per esempionomedelvideo.flv)
Nel menù di sinistra impostiamo:
Video = “MPEG 4 ASP (Xvid4)” (se non è presente cerchiamo qualcosa del tipo “Xvid”, “Divx”… Se nulla di ciò è disponibile dovremmo scaricare un codec xvid, divx, ecc…)
Audio = “MP3 (LAME)” (se non è presente cerchiamo qualcosa del tipo “MP3″)
Formato lasciamo “AVI” (se volessimo trasformare il nostro video in un altro formato modificheremo questa opzione con quello interessato, es. MP4, PSP, ecc…)
Infine clicchiamo su File => Salva => Salva video… per avviare il processo di conversione (potrebbe durare anche molto tempo se il video è di dimensioni notevoli, il tempo impiegato dipenderà naturalmente dalla velocità del vostro computer).

Molto interessante.

Come Installare e Rimuovere Programmi in Linux

Ormai esistono diverse utility per installare software con le varie distribuzioni linux ma tenere a mente come eseguire questi procedimenti “da terminale” è sempre utile…

Nell’articolo tratteremo come Installare, Rimuovere e Aggiornare pacchetti .RPM, .TGZ, .DEB, .SH, .RUN e naturalmente software da sorgente, sfatando così il mito che l’installazione di software sotto Linux è complicata e a volte quasi impossibile per le difficoltà d’uso del terminale… è importante far notare che anche se vengono presentati gli eventuali comandi da teminale in alcuni casi (verrà specificato) il tutto si può ridurre a un doppio click come in ambiente Windows (ad esempio con pacchetti .RPM e .DEB).

Software da Sorgente

Decomprimiamo il file
tar -xvzf nome-file.tar.gz

oppure (dipende dall’estensione dell’archivio)

tar -xvjf nome-file-tar.bz2

A questo punto è necessario eseguire i seguenti comandi che andranno prima a controllare la disponibilità di tutto il necessario alla compilazione e poi a compilare il pacchetto inserendo, nella maggior parte dei casi, l’eseguibile nella directory /usr/local/bin
./configure

make

su (richiede la password di root)

make install

Per eseguire l’applicazione basterà scrivere il nome del suo eseguibile (che di solito coincide con il nome dell’applicazione) nel terminale e premere invio.

Molte volte dopo il comando ./configure si ricevono diversi errori dovuti alla mancanza di componenti necessari che vanno perciò cercati e installati a parte…

Software .RPM

Per installare questo tipo di pacchettiè sufficiente utilizzare il comando da terminale
rpm -i nome-pacchetto.rpm

oppure

rpm -ivh nome-pacchetto.rpm

Se si vuole solo aggiornare un pacchetto già installato bisogna eseguire
rpm -U nome-pacchetto.rpm

oppure

rpm -Uvh nome-pacchetto.rpm

Per rimuoverlo
rpm -e nome-pacchetto.rpm

…è comunque importante ricordare che la maggior parte delle attuali distribuzioni che utilizzano questi tipi di pacchetti contengono pre-installate utility in grado di semplificare il tutto riducendo l’installazione a un doppio-click sul file.

Pacchetti .TGZ

Per questo tipo di pacchetti utilizzeremo lo script “integrati”: explodepkg e il tool installpkg

Per estrarre l’archivio TGZ nella directory corrente eseguiamo il seguente comando da terminale
explodepkg nome-pacchetto.tgz

Per installare il pacchetto TGZ
installpkg [opzioni] nome-pacchetto.tgz

Opzioni:

warn mostra i file e le directory che verrebbero create senza eseguire l’installazione

r installa i pacchetti contenuti a partire dalla directory corrente

m genera un archivio tar.gz (ma con estensione .tgz) costitito dal contenuto della directory corrente

Per rimuovere un pacchetto TGZ il comando da terminale è il seguente
removepkg nome-pacchetto.tgz

Per aggiornare un pacchetto TGZ esistente
upgradepkg nome-pacchetto-vecchio nome-pacchetto-nuovo

Pacchetti .DEB

è sufficiente fare doppio click sul pacchetto ma se ciò non fosse possibile esistono naturalmente i comandi da terminale…

Installare il pacchetto
sudo dpkg -i pacchetto.deb

Disinstallare il pacchetto (è preferibile utilizzare Synaptic):
sudo dpkg -r pacchetto.deb

Script .SH e .RUN:

prima di eseguire questo tipo di file è necessario renderli eseguibili con il comando da terminale

sudo chmod a+rwx pacchetto.sh (oppure pacchetto .run)

Per eseguire lo script (dopo averlo reso eseguibile con il comando precedente)
sudo ./pacchetto.sh (oppure pacchetto .run)

Molto interessante.

Linux Leggero – Le Migliori Distribuzioni

Linux è certamente il sistema di riferimento per chi cerca una alternativa a Windows enon dispone di un computer Apple. Ecco quindi che nasce l’esigenza di ricercare la migliore versione di Linux, o meglio, quella più leggera in circolazione. Questo per garantire una buona compatibilità anche sui computer meno prestanti.

Cosa sono le distribuzioni leggere di Linux? Si tratta di versioni ridotte per spazio e richiesta hardware in grado di girare anche su computer di qualche hanno fa, ossia macchine che hanno ancora 512MB di RAM e non solo. Capirete che non tutti hanno la possibilità di acquistare un nuovo computer ma non per questo sono esclusi dal poter avere una versione di questo sistema operativo perfettamente in regola con le ultime novità.

In questa guida andremo a darvi un elenco delle migliori distribuzioni Linux leggere da utilizzare, in questo modo avrete una scelta alternativa per il sistema operativo da usare. Senza ulteriori indugi eccovi la lista completa.

Live CD Knoppix – Si tratta di una versione particolare poiché avviabile da CD-ROM, che quindi non necessità di essere installata su disco fisso per essere riconosciuta. Un vantaggio per chi non dispone di molto spazio su HHD interno. Come tutte le soluzioni alternative, anche in questo caso si hanno delle forti limitazioni riguardanti la parte multimediale e quella degli strumenti disponibili, tra quelli più recenti. Nel complesso però risulta una versione funzionale e semplice da configurare.

Xubuntu – Una distribuzione linux leggere basata su Ubuntu. La caratteristica di Xubuntu è che come desktop manager viene utilizzato Xfce, molto più leggero rispetto a Gnome e Kde che troviamo in molte altre distribuzioni.
Si tratta di una soluzione molto interessante per chi vuole provare Linux su un computer non troppo recente.

Linux Mint – Installare Linux senza dovere cancellare Windows è una operazione che ormai diventa automatica grazie a programmi e cd auto installanti. Non fa eccezione anche Linux Mint CD, che permette di provare il sistema operativo semplicemente inserendo il cd il quale andrà a creare una partizione nell’hard disk per ospitare il nuovo OS. Un vantaggio enorme per chi non ha mai sentito parlare di partizione HDD e vuole ugualmente installare Linux su pc senza cancellare Windows.

Ricordate che esistono centinaia di distribuzioni di Linux in giro per il web, comunque affidandovi a quelle che abbiamo elencato in questo articolo non resterete certamente delusi del risultato ottenuto.

Linux – Eliminare i File Temporanei in Ubuntu

Molte applicazioni utilizzano file temporanei che possono essere scritti nelle directory /tmp o /var/tmp o anche in altre directory a seconda dell’applicazione.

Di default Ubuntu elimina i file che si trovano nella directory /tmp all’avvio tramite lo script /etc/rcS.d/S35mountall.sh che chiama lo script /etc/init.d/boot-clean.sh mentre non vengono eliminati i file che si trovano nella directory /var/tmp.

Se si vuole che vengano eliminati anche i file che si trovano in questa directory o in altre directory che contengono file temporanei, è possibile creare uno script e fare in modo che venga eseguito all’avvio.

Oltre a file temporanei esistono sul sistema anche i file di cache.
La cache di default di Firefox è cinquanta mb per utente.
Generalmente non si ha la necessità di questi file per cui è possibile eliminarli utilizzando le opzioni del browser.

Oltre alla cache del browser esiste anche la cache di APT.
Per rimuovere questi file è possibile utilizzare il comando sudo apt-get autoclean.
Inoltre è possibile configurare l’eliminazione periodica dei file modificando il file /etc/apt/apt.conf.d/10periodic.
Per impostare l’eliminazione automatica una volta alla settimana è possibile aggiungere il seguente comando nel file
APT::Periodic::AutocleanInterval “7”;

L’eliminazione dei file temporanei è particolarmente importante se lo spazio libero sul disco è ridotto.

Come clonare un’installazione di Linux

In passato abbiamo visto come clonare un hard disk in Windows, oggi analizziamo come clonare un disco in Linux in modo semplice e veloce.

Possiamo clonare un’installazione di linux copiando la partizione di un hard disk in un file e usando questo file per distribuire l’insallazione su più computer.

Il primo passo consiste nella creazione di un’immagine che può essere fatta utilizzando dd, data dump, che è uno strumento incluso nelle distribuzioni linux.
-Avviare Linux in single user mode utilizzando  l’opzione single all’avvio.
Questo deve essere fatto perchè non è sicuro clonare una partizione mentre è in uso visto che i processi in esecuzione sul sistema possono modificare i dati.
-Creare un mount point per una nuova partizione su cui è possibile scrivere l’immagine della partizione che contiene il filesystem root. Visto che si vuole distribuire l’immagine su altri computer è possibile utilizzare un disco usb esterno per creare la nuova partizione.
-Creare l’immagine usando il comando
dd if=<DiscoOrigine> of=<FileDestinazione>
test@server:~# dd if=/dev/hda1 of=/mnt/disk2/image.bin
l’opzione if specifica il disco che deve essere clonato mentre l’opzione of specifica il file su cui viene salvata l’immagine.

Una volta completata la creazione dell’immagine è possibile utilizzarla per distribuire l’installazione su altri computer
-Avviare il computer utilizzando un cd di Linux e entrando in recovery mode
-Effettuare il mount del disco esterno dove è stata salvata l’immagine.
-Partizionaer il disco della nuova macchina creando una partizione per il filesystem root e un partizione swap.
-Scrivere l’immagine sul disco
dd if=<FileOrigine> of=<DiscoDestinazione>
test@server:~# dd if=/mnt/disk2/image.bin of=/dev/hda1
-Effettuare il mount della partizione e entare nella partizione con chroot
test@server:~# mkdir /newlinux
test@server:~# mount /dev/hda1 /newlinux
test@server:~# chroot /newlinux /bin/bash
-Eseguire grub-install per scrivere il master boot record
test@server:~# grub-install /dev/hda
-Uscire da chroot e riavviare il server.

Linux – Eseguire il Rotate dei Log in Ubuntu

Il comando principale per eseguire il rotate dei log in Ubuntu è savelog che rinomina il file di log specificato.
Quindi usando il comando savelog prova.log, il file prova.log viene spostato in prova.log.0 e a loro volta vengono spostati i file di log più vecchi.

Questo comando di default permette di mantenere sette livelli di backup, l’ultimo file disponibile sarebbe quindi prova.log.7 nell’esempio visto in precedenza.

L’impostazione relativa al numero di backup che possono essere salvati può essere modificata con il comando savelog -c <Numero> <File log>.

Il sistema di rotate dei log principale è logrotate che è eseguito secondo le schedulazioni previste da anacron nella directory /ect/cron.daily/logrotate.
La configurazione di logrotate è contenuta nei file che si trovano nella directory /etc/logrotate.d.
In questa directory si trova un file per ogni file di log che deve essere gestito.

La struttura dei file è simile alla seguente
/var/log/acpid {
weekly
rotate 4
compress
missingok
postrotate
/etc/init.d/acpid restart >/dev/null
endscript
}

In questo caso vengono impostate quattro rotazioni dei log di /var/log/acpid su base settimanale.
Le linee contenute tra postrotate e endscript definiscono cosa deve essere eseguito dopo il rotate dei log.
In questo caso il servizio viene riavviato.

Linux – Verificare le Prestazioni del Processore con Top

Top permette di ottenere numerose informazioni sulle prestazioni del processore, si tratta quindi di uno strumento molto utile disponibile su Linux.

La sintassi per avviare top è la seguente
top [-d intervallo] [-n iter] [-i] [-b]
-d intervallo – Specifica il tempo che deve passare tra gli aggiornamenti delle statistiche.
-n iter – Il numero di volte in cui le statistiche devono essere aggiornate prima che il programma termini.
-i – Specifica se devono essere mostrati i processi nello stato idle.
-b – Specifica l’esecuzione in modalità batch in cui vengono mostrati tutti i processi e non solo una schermata unica.

Durante l’esecuzione del programma è possibile diverse opzioni
A – Cambia la visualizzazione delle statistiche.
I – Specifica se l’utilizzo del processore deve essere diviso per il numero di processori del sistema.
f – Visualizza una schermata di configurazione che permette di selezionare le statistiche da mostrare.
o – Visualizza una schermata di configurazione che permette di modificare l’ordine in cui sono mostrate le statistiche.

[root@localhost ~]# top
top – 19:53:26 up 43 min,  1 user,  load average: 0.00, 0.00, 0.00
Tasks:  65 total,   1 running,  64 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.3%sy,  0.0%ni, 99.3%id,  0.0%wa,  0.0%hi,  0.3%si,  0.0%st
Mem:    255336k total,   131148k used,   124188k free,     9804k buffers
Swap:   522104k total,        0k used,   522104k free,    76680k cached

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
1835 root      16   0  2244  824  732 S  0.3  0.3   0:01.18 hald-addon-stor
2213 root      15   0  2168 1044  824 R  0.3  0.4   0:00.03 top
1 root      15   0  2032  676  576 S  0.0  0.3   0:02.24 init
2 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0
3 root      34  19     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/0
4 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 watchdog/0
5 root      10  -5     0    0    0 S  0.0  0.0   0:00.02 events/0
6 root      10  -5     0    0    0 S  0.0  0.0   0:00.00 khelper
7 root      11  -5     0    0    0 S  0.0  0.0   0:00.00 kthread
10 root      10  -5     0    0    0 S  0.0  0.0   0:00.02 kblockd/0
11 root      20  -5     0    0    0 S  0.0  0.0   0:00.00 kacpid
70 root      18  -5     0    0    0 S  0.0  0.0   0:00.00 cqueue/0
73 root      10  -5     0    0    0 S  0.0  0.0   0:00.00 khubd
75 root      10  -5     0    0    0 S  0.0  0.0   0:00.02 kseriod
133 root      22   0     0    0    0 S  0.0  0.0   0:00.00 pdflush
134 root      15   0     0    0    0 S  0.0  0.0   0:00.00 pdflush
135 root      17  -5     0    0    0 S  0.0  0.0   0:00.00 kswapd0

Le seguenti colonne mostrano informazioni relative alle prestazioni del processore
us – Tempo in cui il processore ha eseguito processi in user mode.
sy – Tempo in cui il processore ha eseguito processi in kernel mode.
ni – Tempo in cui il processore ha eseguito processi in user mode su cui la priorità è stata impostata usando nice.
id – Tempo nello stato idle.
wa – Tempo in attesa di I/O.
hi – Tempo nello stato irq che è utilizzato per gestire interrupt di priorità alta.
si – Tempo nello stato softirq che è utilizzato per gestire interrupt di priorità più bassa.
%CPU – Percentuale di processore utilizzata da un determinato processo.
PRI – Specifica la priorità di un processo.
NI – Il valore di nice di un processo. Un valore più elevato indica una priorità più bassa.
WCHAN – Specifica la funzione del kernel relativa ai processi in attesa di I/O.
TIME – Il totale di tempo che il processo ha utilizzato da quando è stato avviato.
COMMAND – Il comando che il processo sta eseguendo.
S – Lo stato del processo. Il valore può essere uno dei seguenti
S – Sleeping
R – In esecuzione
Z – Processo in attesa di terminare
D – Uninterruptable sleep.
T – Traced.

Top permette di capire quali sono i processi che stanno utilizzando maggiormente il processore e offre quindi la possibilità di individuare e risolvere eventualiproblemi.

Grub – Rendere Sicuro il Bootloader

Grub permette a chiunque abbia accesso al server in fase di avvio di avviare nella modalità single user mode e di cambiare i parametri di avvio, di conseguenza è necessario proteggere il bootloader tramite una password.

Per generare la password che sarà criptata con MD5 bisogna eseguire i seguenti comandi

server# grub

grub > md5crypt
Password: **********
Encrypted:
grub > quit

A questo punto la password che è stata generata deve essere inserita nel file di configurazione di Grub /etc/grub.conf
In questo file deve essere aggiunta una linea con l’opzione password -md5 seguita dalla password criptata che è stata generata in precedenza.

In questo modo al prossimo riavvio sarà necessario inserire la password se si vogliono modificare le opzioni di Grub

Grub permette inoltre di proteggere un particolare elemento nel menu di avvio.
Per fare questo è necessario inserire l’opzione lock dopo la direttiva title.
In questo modo sarà possibile avviare il sistema operativo relativo a quel elemento del menu solo dopo che si è inserita la password.

Una volta che si è configurato Grub in modo che si debba inserire una password per modificarne le opzioni all’avvio è necessario impostare i permessi cul file di configurazione /etc/grub.conf

server# chown root:root /etc/grub.conf
server# chown 0600 /etc/grub.conf

Proteggere Grub è quindi molto importante per la sicurezza di un computer.

Session Hijacking – In Cosa Consiste

Il Session hijacking consiste nel prendere possesso di una sessione attiva tra due host, questo significa che chi effettua con successo questo attacco si trova già autenticato con il server.

Questo tipo di attacco funziona solo se effettuato verso protocolli di tipo session oriented come telnet e ftp, inoltre per aumentare le probabilità di successo chi effettua l’attacco deve trovarsi nella stessa rete dei due host che hanno la sessione attiva.

Per capire esattamente il funzionamento dell’hijacking è necessario comprendere il protocollo TCP e in particolare due caratteristiche che sono il three way handshake e i sequence numbers.

Il three way handshake è il modo con cui due host stabiliscono una connessione tcp.
Un host A che vuole iniziare una connessione con un host B invia a questo un segmento TCP con il flag SYN attivo e un certo sequence number impostato a x.
L’host B, se accetta la connessione, risponde con un segmento in cui sono settati i flag SYN e ACK. Inoltre in questo segmento è impostato il sequence number di questo host con valore y e viene incrementato il sequence number dell’host A di uno.
Infine l’host A, dopo avere ricevuto la risposta dall’host B, invia un segmento con il flag ACK attivo e un sequence number pari a x + 1.
A questo punto la connessione è stabilita.

I sequence numbers che abbiamo già visto nella fase in cui viene stabilita la connessione tra gli host sono un elemento chiave del Session Hijacking.
I sequence number sono usati dall’host che riceve i pacchetti per stabilirne l’ordine, inoltre tramite questi la macchina ricevente è in grado di indicare all’host che invia quali pacchetti sono stati ricevuti e quali no in modo che siano nuovamente inviati.
Il punto chiave è che è possibile prevedere il modo in cui questi sequence numbers vengono generati.

Dopo aver completato l’introduzione al Session Hijacking possiamo analizzare come aviene l’attacco.

Innanzitutto chi lo effettua deve individuare un obiettivo che deve essere un server che supporta connessioni di tipo session oriented come un server telnet o ftp.

A questo punto è necessario individuare come il sistema operativo dell’host obiettivo dell’attacco. Infatti a seconda del sistema operativo si ha un diverso modo di generazione dei sequence numbers, i sistemi windows generano sequence number che sono molto più facilmente prevedibili rispetto a quelli generati da un sistema linux.

Una volta fatto questo bisogna individuare una sessione attiva visto che questo la presenza di questa è un requisito indispensabile pe un session hijacking. Bisogna anche considerare che è preferire svolgere questo tipo di operazione in un momento di elevato traffico visto che ci sono meno possibilità che l’attacco venga notato in questo modo.

A questo punto chi effettua l’attacco è in grado di conosce l’indirizzo ip del server e del client che hanno la sessione attiva e anche i numeri di porta su cui sta avvenendo la comunicazione.
Quindi è necessario individurare il corretto sequence number per effettuare il session hijaking, infatti se il server aspetta di ricevere un pacchetto con il sequence number 77777 e l’attaccante in via un pacchetto con un sequence number 22222 questo non verrà accettato in modo corretto.

Una volta individuati i corretti sequence numbers chi effettua l’attaco ha la necessita di fare in modo che l’host che ha la sessione attiva con il server sia disconnesso in modo che non possa più inviare pacchetti.
Questo generalmente avviene eseguento un attacco di dipo DoS nei confronti dell’host.

Fatto questo, chi effettua l’attacco può iniziare a inviare pacchetti al server nascondendo l’origine e il sequence number di questi.

Analizziamo alcuni degli strumenti usati per effettuare il session hijacking.

Hunt è un tool disponibile per linux che permette di effettuare il session hijacking.
Una funzionalità molto interessante di questo tool è la possibilità di riattivare la sessione originaria tra il server e il client una volta completato l’attacco, in questo modo ci sono maggiori possibilità che l’operazione non venga notata.

Installazione

Una volta che si è scaricato il tool dal sito http://packetstorm.linuxsecurity.com/sniffers/hunt/ è necessario decomprimerlo con il seguente comando

host# tar -xvzf hunt-1.5.tgz

A questo punto è possibile spostarsi nella directory hunt-1.5 e compilare il programma.

host# cd hunt-1.5
host# make

Per eseguire il tool è sufficiente il seguente comando

host# ./hunt

Utilizzo di Hunt

Avviando Hunt si accede al seguente menu

[root@localhost hunt-1.5]# ./hunt
/*
 *      hunt 1.5
 *      multipurpose connection intruder / sniffer for Linux
 *      (c) 1998-2000 by kra
 */
starting hunt
— Main Menu — rcvpkt 0, free/alloc 64/64 ——
l/w/r) list/watch/reset connections
u)     host up tests
a)     arp/simple hijack (avoids ack storm if arp used)
s)     simple hijack
d)     daemons rst/arp/sniff/mac
o)     options
x)     exit
->

Le varie opzioni del menu ci permettono le seguenti azioni

l    Mostra tutte le connessioni attive
w    Permette di visualizzare il traffico tra due host specifici
r    Resetta una conessione specifica
h    Mostra quali sono gli host attivi.
a    Permette di effettuare lo spoofing di un MAC address
s    Permette di eseguire un simple hijack che consiste nell’inserire un     solo comando nella sessione attiva tra l’host e il server.
d    Imposta le opzioni relative a rst, arp, sniff e mac
o    Imposta le opzioni relative al tool come i tempi di timeout

Analizziamo ora come utilizzare il tool per effettuare un arp simple hijack.
Questa opzione sfrutta l’arp spoofing che consiste nel far credere al server che il MAC address che corrisponde all’indirizzo ip del client che ha la sessione attiva sia quello dell’host utilizzato da chi effettua l’atttacco.
In questo modo il server invia i dati all’host di chi sta effettuando l’hijacking.

-> a
0) 192.168.1.1 [35481]         –> 192.168.1.4 [23]

Ci vengono mostrate tutte le sessioni attive.
In questo caso abbiamo una sola session attiva quindi la selezioniamo con l’opzione 0

choose conn> 0
arp spoof src in dst y/n [y]>
src MAC [EA:1A:DE:AD:BE:04]>
arp spoof dst in src y/n [y]>
dst MAC [EA:1A:DE:AD:BE:05]>
input mode [r]aw, [l]ine+echo+\r, line+[e]cho [r]>
dump connectin y/n [y]> n
press key to take over of connection
CTRL-] to break

A questo punto chi effettua l’attacco può prendere possesso della sessione e eseguire comandi con i permessi dell’utente che si era precedentemente autenticato.

rm -rf ~/*

[r]reset connection/[s]ynchronize/[n]one [r]> s

user have to type 12 characters and print 29 characters to synchronize connection

CTRL-C to break

Done

Juggernaut è uno sniffer che implementa particolari funzionalità utilizzabili per effettuare il session hijacking.

Installazione

Una volta che si è scaricato il file è possibile procedere decomprimendolo

host# tar -xvf 1.2.tar

Quindi si compila eseguendo il seguente comando

host# make all

A questo punto è possibile avviare il tool

host# ./juggernaut

In questo modo si accede al seguente menu

?) Help
0) Program information
1) Connection database
2) Spy on a connection
3) Reset a connection
4) Automated connection reset daemon
5) Simplex connection hijack
6) Interactive connection hijack
7) Packet assembly module
8) Souper sekret option number eight
9) Step down

Analizziamo quindi le varie opzioni che sono fornite da questo menu

Connection database
Questa opzione mostra tutte le sessioni attive, è da notare però che in presenza di una rete ethernet switched il tool potrebbe non essere in gradi di vedere sessioni anche se sono attive.

Spy on a connection
Accedendo a questa opzione è possibile effettuare lo sniffing di una sessione.

Reset a connection
Permette di selezionare una sessione attiva e di resettarla-

Automated connection reset daemon
Attivando questa opzione è possibile resettare ogni tentativo di connessione proveniente da un determinato indirizzo ip.
Il tool ci permette di specificare se devono essere impedite le connessione dall’host specificato verso tutti gli altri host o verso uno specifico server

Enter source IP [q] >192.168.1.4
Enter target IP (optional) [q] >
Reseting all connection requests from: 192.168.1.4
[cr]

Simplex connection hijack
Questa opzione permette di effettuare un simple hijack, di inserire quindi un comando all’interno del flusso di dati tra client e server.

Choose a connection [q] >1
Enter the command string you wish executed [q] > touch file
Spying on connection, hit ‘ctrl-c’ when you want to hijack.
NOTE: This may cause an ACK storm until client is RST.
Spying on connection: 192.168.1.4 [5247]  –>  192.168.1.1 [23]

Interactive connection hijack
Permette di effettuare un session hijacking completo.
Bisogna tenere presente che utilizzando questo metodo si crea quello che viene chiamato ACK Storm che ha come conseguenza il rischio di interruzione delle altre connessioni presenti sulla rete.

Packet assembly module
Attivando questa opzione è possibile creare i propri pacchetti specificando cosa devono contenere i vari campi.

Il Session Hijacking è un tipo di attacco molto pericoloso e quindi è necessario limitare la possibilità che venga eseguito all’interno della propria rete.

Una soluzione è l’utilizzo di connessioni criptate che rendono molto più difficile questo tipo di attacco, quindi è bene rimpiazzare Telnet con ssh che permette l’invio di dati criptati e ftp con sftp.

Un modo per limitare la possibilità di effettuare è la presenza di una rete Ethernet di tipo switched, in cui gli host sono connessi a degli switch invece che a degli hub. Ma comunque tecniche come quella dell’ARP spoofing non garantiscono che questo tipo di rete non sia a rischio di Session Hijacking.

1 2 3 4