cerca
Lezione di ESP del 15 Ventoso 216
modifica cronologia stampa login logout

Wiki

UniCrema


Materie per semestre

Materie per anno

Materie per laurea


Help

Lezione di ESP del 15 Ventoso 216

 :: Lezione di ESP del 15 ventoso 216 ::

altrimenti noto come 5 marzo 2008

Torna alla pagina di ESP

Affidabilità del software

Un virus è un software che infetta altri software. Si diffonde in un sistema e poi anche su altre macchine. È un programma composto da 2 parti:

  • duplicazione: serve per duplicare se stesso
  • danneggiamento: anche inteso in senso lato, cioé non deve necessariamente fare danno

Rispetto alle caratteristiche di attivazione, possiamo dividere i virus in

  • transienti: vivono finché vive il software ospitante
  • residenti: vivono per i fatti loro dove capita

Le caratteristiche di un virus sono queste:

  • Cavallo di troia: un sw che contiene funzionalità nascoste
  • Bomba logica: un programma che si esegue al verificarsidi certe condizioni
  • Trapdoor: permette accessi non autorizzati al sistema
  • Worm: si propaga al fine di saturare le reti
  • Rabbit: replica se stesso per saturare il sistema

La diffusione avviene secondo diversi sistemi. Una volta, prima che la maggior parte degli studenti attuali del DTI nascesse, c'erano i cari bei vecchi floppy infettati (praticamente tutti). Poi i floppy infetti si faceva il brillante e si diceva: "ma no, tienilo tu". Nota storica: la Biblioteca di Mozzanica ancora li adopera, come unico mezzo autorizzato per trasferire dati da e verso i computer della biblioteca . 0.50 € l'uno, in vendita in loco.

Un virus agisce in sovrapposizione quando trascrive se stesso su una parte del programma ospite. Le dimensioni del file ospitante quindi non vengono alterate, ma può essere reso inutilizzabie. Può anche scegliere di sovrapporsi un po' qua un po' là. Oppure, se non si sovrappone, si appende all'inizio o alla fine di un altro file, alterandone quindi le dimensioni.

Per essere chiamato virus, un software aspirante tale deve essere:

  • difficile da individuare
  • difficile da cancellare
  • in grado di diffondersi rapidamente
  • non infettare il programma che già lo ospita
  • facile da creare
  • indipendente dal SO => ma è una caratteristica un po' più difficile da ottenere

Ci sono anche di virus del boot sector, che intervengono prima ancora che il SO venga caricato (vedi le lezioni di Piuri). In questo caso, gli antivirus non servono a nulla perché ovviamente partono DOPO che il SO è stato caricato:)

Signature dei virus

È la firma di un virus, ovvero un qualche cosa che mi permetta di dire: qui è passato quel determinato virus. Le tracce dei virus sono quelle ricercate dai software antivirus. E sono anche la causa dei falsi positivi: ad esempio, certe sequenze ripetute di bytes vengono scambiare per un virus, anche se non c'entrano nulla. Ci sono diversi modi per riconoscere un virus.

Pattern di memorizzazione

Se il sw del virus è invariante, a parte di codice iniziale è una signature rintracciabile, in quanto sarà sempre uguale ovunque si replichi. Oppure, un virus può trovarsi sempre nella stessa posizione del file infetto. O ancora, se all'inizio di un programma trovo un JMP (un salto altrove), potrebbe essere l'indizio di un'infezione da virus, in quanto in teoria un programma all'inizio dovrebbe almeno impostare qualche variabile, e non saltare direttamente altrove.

Pattern di esecuzione

Abbiamo detto che un virus deve diffondersi, fare danno e non lasciarsi individuare. Il modo in cui un virus attua queste cose può essere una sua traccia. Ad esempio, quando mi accorgo che sono spariti certi determinati files, so che è passato un certo virus etc. Occhio però che, appunto perché sono virus, non è semplice individuarne le tracce. Inoltre, attività banali come cancellazioni di files o creazioni di cartelle di per sé non sono sospette.

Pattern di trasmissione

L'individuazione di un pattern di trasmissione, ovvero di un modo predefinito con cui il virus cerca di diffondersi, si basa sul presupposto che il virus stesso segua sempre quello schema di diffusione. Ma non è in generale un'assunzione vera.

Ma anche tutte le assunzioni sui pattern sono rischiose, nel senso che i virus cercano in tutti i modi di agire senza essere scoperti. Possono esserci virus che hanno una signature dinamica, ovvero cambiano modo di diffondersi, di infettare etc. in base a variabili non predicibili. Si tratta però di una funzionalità difficile da ottenere. Il passo successivo è il virus polimorfo, il quale cambia forma al suo codice. Potrebbe per esempio decidere di copiare un po' del suo codice qui, un po' del suo codice là, e ad ogni infezione cambiare a random la suddivisione e la distribuzione del proprio codice. Può anche decidere di usare tecniche crittografiche (vedi Stelvio) per occultare se stesso. Ma qui la complessità di realizzazione sale: deve infatti avere una chiava di decrittazione che vari da infezione ad infezione, il codice crittato ed una routine in chiaro appunto per decrittare il codice. E questa routine corre il rischio di divenire una signature.

Un modo più subdolo ancora di diffondersi è quello di infettare direttamente i codici sorgente, in modo poco rintracciabile, così da venir compilato senza problemi all'interno di un programma.

Trapdoor & Salami Attack (o Salami Shaving)

Una trapdoor è un punto non documentato di accesso ad un sistema. Di per sé non è una cosa maligna: vengono in genere realizzate durante la fase di creazione di un software, proprio per testarlo. Dovrebbero poi essere levate dalle versioni definitive del software, ma se non accade (intenzionalmente o no), lasciano aperti buchi di sicurezza.

Un particolare tipo di trapdoor è l'implementazione approssimativa del controllo errori all'interno del programma. In generale i dati in input vanno controllati per verificarne l'ammissibilità. In caso contrario, un utente malizioso potrebbe intenzionalmente inviare input dannoso.

Salami Attack

Non si tratta di un sistema ben preciso, ma piuttosto di una generalizzazione di una strategia per compiere illeciti. Il principio è che gli atti eclatanti saltano all'occhio; la microcriminalità può invece sfuggire. L'esempio classico è quello del programma che gestisce le transazioni all'interno di una banca. Scritto opportunamente, può stabilire che da ogni transazione venga prelevato un centesimo e depositato in un certo conto. Poca roba, nessuno se ne accorge, ma centesimo dopo centesimo si fa su una fortuna.

Torna alla pagina di ESP