Un antivirus su Linux
by admin on May.27, 2009, under Linux, Sicurezza
La particolare concezione architetturale di Unix, e di conseguenza Linux, lo ha (quasi) sempre salvaguardato dalle infezioni che hanno invece bersagliato le varie versioni dei sistemi operativi Microsoft, tuttavia è doveroso ammettere che ciò non è affatto assumibile come verità assoluta.
Non è affatto impossibile che malware specifico possa essere concepito e realizzato per piattaforme Unix, inoltre si verificano sempre più spesso situazioni in cui la responsabilità di qualche infezione non è attribuibile al sistema operativo stesso bensì alle applicazioni che vi girano, e che sono molto spesso presenti su qualsiasi tipo di piattaforma.
Vi sono inoltre circostanze in cui una macchina Unix può essere utilizzata in maniera fraudolenta per distribuire malware senza essere minimamente vulnerabile allo stesso, oppure semplicemente si trova in una posizione privilegiata per svolgere una attività antivirale in una rete eterogenea.
E’ insomma il caso di iniziare a sviluppare e mandare in esercizio soluzioni software antivirus anche nel mondo del pinguino, che ha finora contato quasi esclusivamente sul progetto Clamav, peraltro ottimo e sopratutto opensource.
BitDefender Antivirus Scanner per Unix è la soluzione che BitDefender offre per la protezione antivirus di reti miste.
E’ ovviamente una soluzione proprietaria, ma il particolare utilizzo, la penuria di alternative opensource, e non da ultimo la buona fama conquistata sul campo dalla software-house rumena, ben giustificano questa eccezione.
BitDefender consiste fondamentalmente di due macroelementi:
• Uno scanner con interfaccia a riga di comando (bdscan).
• Uno scanner con interfaccia grafica (bdgui).
Il software è ottenibile, in forma del tutto gratuita, in versione trial valida per trenta giorni e limitata nelle funzionalità. Scaduto tale periodo, ma volendo, anche da subito, e limitatamente ad un utilizzo personale, è ottenibile una chiave di attivazione definitiva. Un eventuale utilizzo aziendale comporta invece un costo che dipende da quanti utenti utilizzano il prodotto (in realtà nella licenza c’è scritto “beneficiano”, il che potrebbe portare a differenti interpretazioni).
BitDefender Antivirus Scanner per Unix (o for Unices, come sarebbe il suo vero nome) può venire installato su:
• distribuzioni Debian-based (quindi Ubuntu, ecc.), tramite deb packages.
• distribuzioni Red Hat-based (quindi Fedora o Centos, ecc.), tramite deb packages.
• tutte le altre distribuzioni Linux, utilizzando un sistema di pseudo-packaging (ipk packages).
• FreeBSD, usando packages tbz (archivi tar compressi bzip2).
I packages sono inclusi in archivi auto-estraenti con estensione .run, che possono essere installati in maniera estremamente semplice, invocandoli come script di shell.
Perciò, se si utilizza Ubuntu, una volta ricevuto per posta elettronica il link da cui effettuare il download del software si può procedere così:
Innanzitutto va controllata l’integrità dell’archivio auto-estraente:
# sh BitDefender-Antivirus-Scanner-7.6-4.linux-gcc4x.i586.deb.run --check
Verifying archive integrity... MD5 checksums are OK. All good.
alternativamente con:
# mv BitDefender-Antivirus-Scanner-7.6-4.linux-gcc4x.i586.deb.run.md5 control.md5
# md5sum -c control.md5 BitDefender-Antivirus-Scanner-7.6-4.linux-gcc4x.i586.deb.run
BitDefender-Antivirus-Scanner-7.6-4.linux-gcc4x.i586.deb.run: OK
Per iniziare l’ installazione, dalla directory dove si trova l’archivio:
# sh BitDefender-Antivirus-Scanner-7.6-4.linux-gcc4x.i586.deb.run
La configurazione di BitDefender a livello globale si trova nel file /etc/BitDefender-scanner/bdscan.conf, che è un file di configurazione nel tipico stile UNIX, basato su coppie chiave=valore, ciascuna coppia su una singola linea.
Le chiavi possibili, il loro valore di default sono semplicemente i seguenti.
- InstallPath è il percorso verso la directory di installazione, impostata durante il processo installazione, .
- UpdateHttpLocation è la URL del server da cui effettuare gli aggiornamenti (per default: http://upgrade.bitdefender.com/av32bit
- HttpProxy Se necessita un proxy server per la connessione a Internet, viene impostato da questa key.
- QuarantinePath è il percorso della directory nella quale confinare in quarantena i files infetti se viene scelta questa azione. La directory di quarantena può venire specificata a run-time usando l’opzione –quarantine=path. Per default è /opt/BitDefender-scanner/var/quarantine.
- LogName è il log file contenente tutti i messaggi di output normalmente inviati sullo STDOUT. Può anche venire specificato a run-time, con l’opzione –log. Per default è /opt/BitDefender-scanner/var/bdscan.log
- Extensions è la lista delle estensioni, separate da virgola, che specifica i tipi di file da scansionare, che si può anche impostare usando il parametro –ext sulla riga di comando.
- Exclude-Extensions è la lista delle estensioni, separate da virgola, che specifica i tipi di file da escludere dalla scansione, e che si può ugualmente impostare sulla riga di comando usando il parametro –exclude-ext.
- Key è la license key, necessaria per la piena attivazione del prodotto.
Si può verificare il fatto che lo scanner funzioni correttamente grazie ad uno speciale file di testo, noto come EICAR Standard Anti-virus Test file.
Il file deve semplicemente contenere la seguente singola linea:
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
Si può salvare il file con un nome qualsiasi con estensione .COM, per esempio EICAR.COM. e testare il sistema di protezione periodicamente, col comando:
# bdscan EICAR.COM
Il relativo output deve indicare che un file è stato scansionato, trovato infetto, e che il virus è stato identificato. Come nome del virus dovrebbe figurare:
EICAR-Test-File (not a virus)
Il programma bdscan è uno scanner on-demand, concepito per la linea di comando o per essere utilizzato con shell scripts, e consente scansioni manuali di singoli files o interi file systems, e la rimozione del codice maligno. Al termine di ogni scansione, il programma evidenzia un rapporto dettagliato sul rilevamento di eventuali virus.
Tutti i files specificati sulla linea di comando vengono scansionati utilizzando degli scan engines specifici in grado di individuare i virus a partire da comuni files, archivi o mailbox. BitDefender supporta oltre 80 formati, inclusi archivi RAR, ZIP, ARJ, LZH, LHA, ACE, GZIP, TARGZ, JAR, UUE, MIME o CAB, non importa come siano stati creati (auto-estraenti, multivolume, etc). Se viene rilevata una infezione, il file verrà trattato conformemente alla opzione specificata (disinfezione, cancellazione, isolamento in una area di quarantena o solamente notifica) e una notifica verrà inviata alla console, oltre che al file di log.
Volendo periodicamente scansionare la mailbox locale, lo si può fare come di seguito:
# bdscan mail.mbox .evolution/mail/local/Inbox
[...]
.evolution/mail/local/Inbox=>(message 181) infected: Generic.Peed.Eml.705048B0
.evolution/mail/local/Inbox=>(message 184) infected: Generic.Peed.Eml.6A2350EE
[...]
.evolution/mail/local/Inbox=>(message 185) infected: Generic.Peed.Eml.5BA7C175
[...]
Volendo scansionare un singolo file, si può mandare in esecuzione bdscan specificando il percorso del file.
# bdscan --action=quarantine --verbose file.exe
Avendo recentemente parlato del worm gumblar e dei suoi vettori di propagazione, avevo ancora a disposizione i relativi exploits (readme.pdf e flash.swf), ed ero quindi curioso di verificare l’esito del loro esame da parte di BitDefender:
# bdscan readme.pdf
BitDefender Antivirus Scanner for Unices v7.90123 Linux-i586
[...]
/home/silversurfer/readme.pdf ok
/home/silversurfer/readme.pdf=>(JAVASCRIPT) ok
[..]
Il risultato non è stato incoraggiante, ma una volta aggiornato l’antivirus mi sono potuto tranquillizzare:
# bdscan --update --verbose
BitDefender Antivirus Scanner for Unices v7.90123 Linux-i586
[...]
pdf.xmd …………. updated
[...]
Update succeeded.
# bdscan readme.pdf
BitDefender Antivirus Scanner for Unices v7.90123 Linux-i586
Copyright (C) 1996-2009 BitDefender. All rights reserved.
[...]
/home/silversurfer/readme.pdf ok
/home/silversurfer/readme.pdf=>(JAVASCRIPT) infected: Exploit.PDF-JS.Gen
[...]
BitDefender è stato inoltre in grado di identificare correttamente anche il file swf
# bdscan --verbose flash.swf
[...]
/home/silversurfer/flash.swf infected: Exploit.SWF.Gen <- jpeg.xmd
[...]
Il percorso da passare come argomento al comando può fare riferimento ad intere directory, con la possibilità di specificare precisi livelli di ricorsione.
Considerando ad esempio il seguente tree:
radice
|– documenti
| |– documento1.doc
| `– documento2.pdf
|– programmi
| |– programma1.exe
| `– programma2.exe
`– file.exe
Per esaminare i files presenti nelle directory documenti e programmi è sufficiente specificare 1 come livello di ricorsione. Per esempio:
# bdscan --action=quarantine --recursive-level=1 radice
È possibile anche scansionare l’intero sistema. Dal momento che bdscan non effettua la scansione di links simbolici e files di devices, si può tranquillamente includere la directory /dev.
L’unico problema di una scansione globale è il numero dei files coinvolti e di conseguenza il tempo richiesto ad esaminarli, che potrebbe risultare molto lungo, dipendendo anche da altri fattori, come performance e capacità del filesystem. Limitandosi ad utilizzare un log file (da analizzarsi una volta completata la scansione) l’ output su schermo si limiterà ai files infetti e a quelli sospetti:
# bdscan --log=/tmp/bdscan.log --no-list /
Basterà utilizzare semplicemente effettuare un grep sul file di log alla ricerca delle keywords “infected” e “suspected” per ottenere i relativi report.
Lo scanner può scompattare archivi per poterne scansionare il contenuto. Vi è un limite alla profondità della ricorsione, allo scopo di prevenire il verificarsi di exploits del tipo zip-bomb:
# bdscan --verbose --archive-level=10 file.tar.gz.zip
L’interfaccia grafica dello scanner (bdgui) permette, in modo assolutamente intuitivo, le stesse operazioni possibili da linea di comando.
Diviene raggiungibile, una volta installata l’applicazione:
• Sui desktops Gnome, tramite: Applications → System Tools → BitDefender Scanner.
• Sui desktops KDE: Applications → System → BitDefender Scanner.
• Sui desktops Xfce, cliccando sul menu Xfce oppure cliccando col tasto destro sul desktop, quindi: System → BitDefender Scanner.

Lo scanner BitDefender può venire integrato con vari altri software sia client che server (ad es. e-mail server).
Per fare solo un semplice esempio voglio fare riferimento a come si possa impostare Evolution per fare in modo che i messaggi e-mail vengano controllati da BitDefender tramite la funzionalità Filters. In questo modo, qualsiasi nuovo messaggio verrà sottoposto alla scansione una volta scaricato.
Occorre creare uno script di shell come il seguente:
#!/bin/sh
# BitDefender STDIN scanner integration script
# Copyright (C) 1996-2008 BitDefender SRL. All rights reserved.
# Place this script in your BitDefender installation directory
# and name it bdscanpipe, such as:
#
# /opt/BitDefender-scanner/bin/bdscanpipe
#
BDSCAN=bdscan
TMPFILE=/tmp/bdscanpipe_$$
cat > $TMPFILE
$BDSCAN $TMPFILE
EXIT=$?
rm -f $TMPFILE
exit $EXIT
Per prima cosa, in Evolution va definita una nuova regola di filtraggio: Edit → Message Filters → Incoming, quindi Add.

Nella finestra di dialogo che appare, nel riquadro superiore, va indicata come regola “Pipe to Program”, come nome del programma quello dello script precedente, /opt/BitDefender-scanner/bin/bdscanpipe, mentre la condizione va impostata a “returns greater than” ed il valore a 0.
Nel riquadro inferiore, va definita l’azione da intraprendere nei confronti di una e-mail infetta, ad esempio spostarla in uno specifica cartella (qui chiamata Infected), marcarla con un dato colore, o semplicemente cancellarla.

Una volta che il filtro sia stato configurato, ogni nuova e-mail verrà sottoposta al filtro costituito dalla scansione.
Per scansionare manualmente un messaggio selezionato, basta usare la combinazione di tasti Control+Y
Per avere un senso, un antivirus deve essere mantenuto aggiornato. Perché lo sia, dovrà periodicamente controllare la disponibilità di nuovi aggiornamenti sui servers BitDefender.
Il processo di aggiornamento verrà avviato, on demand, dal comando:
# bdscan --update
Volendolo schedulare in maniera automatica, è possibile editare le tabelle del cron, usando il tool crontab.
Ad esempio, nel caso si desideri che ciò avvenga su base giornaliera e alle 2 del mattino:
# crontab -e
Aggiungendo questa linea:
00 02 * * * /opt/BitDefender-scanner/bin/bdscan --update


May 27th, 2009 on 6:19 pm