Torna alla pagina di Elementi di Sicurezza e Privatezza
:: Appunti compulsivi ::
Affidabilità del software
Pag 1
Virus: definizione
Per danneggiamento si intende una violazione della sicurezza, di qualsiasi entità (non necessariamente grave).
Pag 2
Classificazione (1)
Una delle possibili classificazioni dei virus è a seconda delle caratteristiche di attivazione:
- transiente, se il virus è in esecuzione se e solo se è in esecuzione il programma infetto
- residente, se l'esecuzione del virus è indipendente dal programma infettato
Classificazione (2)
Un virus racchiude le caratteristiche dei seguenti maleware:
- cavallo di troia, ovvero un programma di apparente utilità ma che contiene istruzioni nascoste. Aspetti comuni: contenere istruzioni nascoste
- bomba logica. Aspetti comuni: possibilità di attivarsi al verificarsi di determinati eventi/condizioni
- trapdoor, ovvero istruzioni nascoste all'interno di un programma che possono essere usate come accesso al sistema. Aspetti comuni: effettuare accessi non autorizzati
- worm. Aspetti comuni: propagarsi all'interno del sistema (notare: non attraverso la rete, ma all'interno dello stesso sistema centralizzato)
- rabbit, ovvero un codice malizioso che ha come obiettivo la saturazione delle risorse del sistema. Aspetti comuni: idem
Pag 3
Processo di infezione
...
Virus sovrapposti e non sovrapposti
Esistono due strategie di infezione:
- esterna (non sovrapposta), che lascia il programma utilizzabile, ma aggiunge istruzioni maliziose al codice (aumentande di conseguenza le dimensioni)
- interna (sovrapposta), che effettua un replacement delle istruzioni del programma, rendendolo di fatto inutilizzabile (dal momento che alcune informazioni sono andate perdute)
Pag 4
Virus non sovrapposto (1)
...
Virus non sovrapposto (2)
...
Pag 5
Virus sovrapposto
...
Come un virus ottiene il controllo
Nella parte sinistra della diapositiva sono illustrate le situazioni iniziali, con codice del programma T e del virus V in due settori diversi del disco.
Nella prima riga è rappresentata l'infezione sovrapposta, in cui il codice malevolo si è sostituito (totalmente o in parte) a quello del programma.
Nella seconda riga è invece rappresentata l'infezione non sovrapposta, in cui viene modificato il puntatore del programma, indirizzandolo (prima o poi) sul codice del virus.
Pag 6
Caratteristiche di un virus
- difficile da individuare (dagli antivirus)
- difficile da cancellare o deattivare (chi lo costruisce non vuole che venga eliminato)
- diffusione rapida (per infettare il maggior numero possibile di sistemi nel minor tempo possibile. Se fosse lento nella diffusione, quando lo sgamano e lo eliminano non avrebbe fatto abbastanza danni e copie di sé)
- l'infezione non deve limitarsi ad un solo programma, ma al maggior numero possibile
- indipendenza dal sistema operativo (che comunque non è così facile da ottenere. Generalmente sono infatti dedicati ad uno solo preciso)
Boot sector (1)
I virus che attaccano il boot sector sono particolarmente odiosi, dal momento che infettano il sistema prima che qualsiasi antivirus possa entrare in funzione.
Pag 7
Boot sector (2)
La normale sequenza di operazioni nella fase di bootstrap è:
- accensione del computer e test dei vari componenti
- lettura del boot sector da disco fisso
- caricamento del bootstrap loader
- caricamento del sistema operativo
Dopo l'infezione il virus viene caricato ancora prima del bootstrap loader, ovvero:
- accensione del computer e test dei vari componenti
- lettura del boot sector da disco fisso
- caricamento del virus
- caricamento del bootstrap loader
- caricamento del sistema operativo (con virus in esecuzione di serie!)
Firma dei virus
La maggior parte dei virus può essere identificata (caratterizzata) con una precisa stringa di bit, detta firma di un virus (o signature).
Questa caratterizzazione distingue tre classi: pattern di memorizzazione, esecuzione e trasmissione.
Le signature sono le porzioni di codice malevolo su cui si basano gli antivirus per la scansione del sistema.
Pag 8
Pattern di memorizzazione (1)
Dal momento che virus dello stesso tipo hanno una stessa parte di codice invariante (posizionata all'inizio, o alla fine, o dopo il 233° byte, ecc.), la loro signature è rintracciabile.
Pattern di memorizzazione (2)
La presenza di istruzioni di jump potrebbe essere sospetta, considerare con cautela.
Pag 9
Pattern di esecuzione
Ovvero caratterizzare il virus per il modo con cui viene eseguito (i vari aspetti di diffusione, tecniche di elusione, tipo ed entità dei danni).
In questo caso però il riconoscimento è delicato e non banale, dal momento che molte delle modifiche al file directory rilevate potrebbero essere del tutto legittime (eseguite da processi trusted).
Pattern di trasmissione
Estremamente complicato da rilevare per lo stesso motivo di prima. I più semplici tipi di pattern da riconoscere sono quelli legati alla memorizzazione.
Pag 10
Dinamicità delle signature
Dato che gli sviluppatori di virus sanno che gli antivirus si concentrano sulle tecniche per individuare i pattern di memorizzazione, una delle loro maggiori preoccupazioni è fare di tutto per non renderla riconoscibile. Uno dei sistemi è renderla dinamica, in modo che cambi ad ogni caso di infezione.
In questo caso gli antivirus come fanno a sgamarli? Sapendo che comunque la parte che varia appartiene ad un range limitato di parole alternative.
Virus polimorfo
Il virus polimorfo è invece un particolare tipo di virus in grado di modificarsi assumendo un numero vastissimo o illimitato di forme diverse.
Pag 11
Virus polimorfo: esempio
...
Virus crittografico
Altro esempio di virus polimorfo è quello crittografico, che sfrutta cioè tecniche crittografiche per cambiare forma. E' composto da tre parti:
- chiave di decrittazione (variabile), la cui funzione per implementarla deve essere contenuta all'interno del codice
- codice crittato
- routine (non crittata, in chiaro) per la decrittazione del codice. Può essere considerata come signature del virus
Pag 12
Virus crittografico: esempio
...
Codice sorgente di un virus
Il codice deve essere di piccole dimensioni, in modo che si possa nascondere facilmente in programmi di grandi dimensioni.
Comparare le dimensioni di due programmi in esecuzioni è infatti impresa ardua (problema non decidibile), dal momento che potrei avere casi in cui stessi programmi non infetti abbiano dimensioni leggermente diverse (per cause interne).
Pag 13
Trapdoor e Salami Attack
...
Trapdoor
Un punto di ingresso nascosto ad un modulo / programma che un utente malintenzionato potrebbe sfruttare per accedere alla macchina. Deve essere nascosto, non documentato, perché ovviamente se fosse documentato il programmatore o l'ha protetto o è un coglione.
Pag 14
Esempi di trapdoor: testing
...
Esempi di trapdoor: controllo errori
L'input deve essere sempre controllato: se inserisco dati e non faccio alcun tipo di controllo su essi, un utente esterno potrebbe utilizzare questo invio per violare il sistema.
Un esempio è l'SQL INJECTION, ovvero fornire in input una stringa SQL da sostituire al sistema e causare effetti dannosi (ad esempio una bella e simpatica drop table). Dal momento che anch'essa sfrutta un punto di ingresso al programma, si tratta di una trapdoor bella e buona.
Pag 15
Cause della presenza di trapdoor
...
Salami attack
Crimine informatico di per sé molto piccolo (trascurabile preso singolarmente), ma che preso insieme a molti altri provoca danni enormi.
Applicabili a diversi contesti, ad esempio sottrazione di beni monetari o informativi.
Pag 16
Salami attack: esempio
...
Cause della presenza del salami attack
...
[...]
Torna alla pagina di Elementi di Sicurezza e Privatezza