[Tutorial] Cos'è e come funziona un antivirus

Stato
Discussione chiusa ad ulteriori risposte.

eraser

Utente Attivo
60
5
Miniguida: cos'è e come funziona un antivirus

Ho voluto scrivere questo testo poiché l'ho considerato molto importante per chi vuole capire come funziona un antivirus e quali sono le varie tecniche che le case antivirus utilizzano per far fronte ai continui attacchi dei virus, che si moltiplicano giorno dopo giorno.

-------------------------------------------------------------------------------------
Innanzitutto: che cos'è un antivirus? Un antivirus è un programma capace di individuare, bloccare e cercare di rimediare ai danni procurati da un virus informatico.
Cosa è un virus informatico? Un virus informatico è un particolare programma capace di autoreplicarsi e di diffondersi in maniera totalmente, o quasi, trasparente. (come effetti secondari un virus può anche fare danni, ma questo tralasciamolo per ora :) )
Come fa il virus a replicarsi? Copia parte del suo codice negli altri files presenti nel sistema colpito. I ricercatori di virus non dovettero fare altro che analizzare i files infetti e trovare la stringa comune a tutti, quello era il codice del virus. Inserirono la stringa in un programma, il quale non faceva altro che ricercare nei files quella determinata stringa. Se c'era una corrispondenza tra la stringa che avevano nei database e una stringa nel file, significava che il file era infetto. Il gioco era semplice.
Gli sviluppatori di virus si sono accorti di questo fatto e hanno complicato un pochino le cose ;)
Una scansione usando un database di signatures è possibile solamente se il virus è in forma non criptata. E siccome lo scopo del virus è di replicarsi in modo totalmente trasparente, ecco che i virus writers cominciarono a criptare i virus in modo tale che uno scanner di stringhe non poteva piu trovare una corrispondenza nei files infetti. Questi virus polimorfici cambiano forma ogni volta che il virus infetta un nuovo file, in modo tale che il loro codice risulti "confuso" agli scanner.
Quando il virus viene attivato, prima di tutto viene attivato un engine di decrypt che decripta il virus, il quale ha la possibilità di fare quello che vuole in modo totalmente trasparente.
Per far ciò, l'engine di decrypt deve essere un file eseguibile valido, cioè riconosciuto dal sistema operativo.
In alcuni casi un software antivirus è capace di rilevare le signatures di alcuni engine di decrypt in modo tale da scoprirli.
Comunque, sapendo ciò, i virus writers cominciarono e offuscare il codice aggiungendo del codice falso, e usando istruzioni differenti per fare le medesime cose. Il virus aggiunge così istruzioni supplementari quali jumps tra istruzioni valide, o codice vario che sembra buono, ma in realtà non serve a nulla. Se il codice non è modificato in modo tale da confonderlo totalmente, è ancora possibile trovare tra i files infetti una signature che può identificare il virus, o un "numero magico" che non cambia tra le varie versioni del virus.
La tecnologia euristica viene usata quando la scansione attraverso le signatures non rivela nessun problema. Se l'euristica indica che il file è sospetto, questo viene isolato in una zona virtuale protetta (sandbox) che emula un sistema operativo base. Il virus crede di essere nel sistema infetto e comincia la sua opera di decrypt. una volta decriptato il codice viene scansionato con una scansione delle signatures per cercare di identificare il virus. Se viene identificato un virus, l'esecuzione della sandbox termina e il virus viene riconosciuto.
I virus writers, però, ne sanno una più del diavolo e inventano i virus metamorfici. Questo tipo di virus cambia la struttura del corpo del virus e l'engine di decrypt, rendendo impossibile una scansione di signatures. Un esempio è il virus W32.Simile, il quale usa un engine di decrypt polimorfico che cambia continuamente dimensione e locazione delle infezioni. Ciò avviene in questo modo: l'engine disassembla il virus in una forma intermedia, lo comprime rimuovendo codice superfluo e modifica il codice del virus riordinando le istruzioni che lo compongono. Successivamente l'engine aggiunge al codice del virus codice inutile in modo random. Infine riassembla il codice intermedio ed è pronto per infettare nuovi computers. In aggiunta al danno di solito c'è anche la beffa e il virus può a volte far comparire una message box. (dipende dalle varianti del virus)
Questo tipo di virus viene eseguito nella sandbox e viene monitorato il suo comportamento. Nei casi dove l'emulazione non trova niente di infetto, né attraverso l'analisi delle signatures, né attraverso l'analisi del comportamento, l'ultima chance rimane nell'analisi on-the-fly.
Per la scansione on-the-fly (letteralmente al volo), i software antivirus controllano le API di windows e gli interrupts del DOS che servono a caricare ed eseguire programmi. Quando il programma è in esecuzione, il software antivirus è consapevole della situazione e scansiona il file con le signatures, o attraverso comportamenti statici. Se risulta pulito, l'applicazione è autorizzata all'esecuzione, ma sotto il controllo dell'analisi euristica, la quale controlla le API e gli interrupts alla ricerca di chiamate di sistema potenzialmente dannose, come per esempio scrivere o cancellare files, o accedere alle funzioni di e-mail o smtp. Appena il programma effettua una chiamata del genere, vengono analizzati i comportamenti sospetti e se il programma effettua una serie di azioni sospette, l'antivirus lo blocca segnalandolo come possibile virus.

Conclusioni:
Come potete vedere, nessun metodo di identificazione è utilizzabile in modo positivo in tutti i casi. L'identificazione di un virus è molto spesso accompagnata da una combinazione di molti tests e di molte tecniche. Lo scopo dei ricercatori è di individuare in ogni nuovo virus una caratteristica che lo contraddistingua che possa essere incorporata nel prodotto antivirus per una scansione veloce e sicura.
Nessun antivirus è infallibile. I virus writers stanno diventando sempre piu ingegnosi, e i virus sempre piu complessi. E' una gara costante tra i virus writers e i ricercatori di antivirus per essere sempre uno un passo piu avanti dell'altro.

fonte:extremetech
(grazie a hunter)

-------------------------------------------------------------------------------

Ciao

Eraser :)
 

eraser

Utente Attivo
60
5
seconda parte

_____________________________
Il termine EURISTICA deriva dal greco "Heuristikein" che significa "scoprire". L'analisi euristica è la seconda arma fondamentale nell'arsenale di un antivirus e permette di individuare virus non ancora conosciuti.
La tecnologia euristica basa la sua analisi su vari fattori quali la grandezza di un file, la sua struttura, il comportamento del codice per individuare le probabilità di una possibile infezione.
É una tecnologia che va usata attentamente perché non fornisce risultati sicuri: se l'analisi della signature dà una certezza sulla infezione di un file, l'analisi euristica basa tutta la sua filosofia sulla probabilità.
Attualmente le società produttrici di antivirus sostengono che la tecnologia euristica riesce ad individuare il 70/80% dei nuovi virus, un risultato più che buono visto la complessità del problema.
Uno scanner antivirus basato sull'euristica va alla ricerca di centinaia di comportamenti che un virus potrebbe usare e per ogni comportamento sospetto assegna un livello di pericolosità.
Tra i comportamenti più sospetti, da bandiera rossa, ci potrebbero essere per esempio il codice per controllare la data, oppure la lettura della rubrica di Outlook. É ovvio che anche un programma innocuo potrebbe avere queste funzioni, ed è per questo che lo scanner euristico non si basa solo su un solo comportamento sospetto individuato, ma fa una stima di tutti quelli che trova all'interno di un file. Quando si raggiunge un certo numero di comportamenti sospetti individuati, il file viene riconosciuto come un possibile virus.
Di solito quando in uno scanner antivirus viene attivata la modalità euristica, viene data la possibilità di scegliere il livello di sensibilità della scansione euristica. Aumentando o diminuendo questo livello si abbasserà la soglia oltre la quale un file viene individuato come possibile virus. Aumentandola si avrà una percentuale di probabilità più alta di individuazione di un virus, ma anche una percentuale più alta di possibilità di beccare una falso positivo, o meglio di un file che viene individuato come virus ma che in realtà non lo è.
La tecnologia euristica può essere utilizzata anche in maniera inversa: a volte è più veloce cercare di identificare un file che probabilmente NON contiene un virus invece che un file che contiene un virus.
Per esempio il virus W32.Simile ha una grandezza variabile dai 32k ai 130k, dunque un file grande 25k non potrà mai contenere questo virus.
Esistono due tipi di euristica: statica e dinamica.
L'euristica statica funziona allo stesso modo della scansione delle signature, solo che non controlla la signature ma i comportamenti.
Ogni comportamento è una sequenza di codici. L'esempio mostra tre metodi per cancellare un registro:

Codice Assenbler ====> Opcode

XOR AX,AX ====> 31C0
SUB AX,AX ====> 29C0
MOV AX,0 ====> B80000

Come si può vedere, ognuno di questi opcode rappresenta un comportamento. Così lo scanner antivirus controlla nel codice del file se è presente una di queste sequenze di codice e, se lo trova, sa che quel file cancella il registro AX.
L'euristica dinamica invece fa uso della CPU per individuare un file infetto. Non scansiona più il codice del file alla ricerca di opcode sospetti. Lo scanner antivirus lancia il file in una sorta di computer virtuale, una sandbox (zona protetta) all'interno dell'antivirus e ne analizza il comportamento. Un esempio può essere un'applicazione che una volta lanciata cerca altri files eseguibili e tenta di modificarli.


_________________________________________________________________

Con questo paragrafo si conclude l'analisi del funzionamento dell'antivirus. ovviamente non vuole essere una guida completa al funzionamento di un antivirus, ma solo qualche appunto che magari potrà essere d'aiuto a qualcuno per capire meglio che cos'è una signature o che cos'è la scansione euristica.



Ciao

Eraser :)
 
Ultima modifica da un moderatore:
Stato
Discussione chiusa ad ulteriori risposte.

Ci sono discussioni simili a riguardo, dai un'occhiata!

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili