Seminario per il corso di Sicurezza e Privacy a.a. 2007 / 2008
Studentessa: Paola Campli
Docente: prof. Stefano Bistarelli
Corso di laurea Specialistica in Economia Informatica, Università G.D’Annunzio Chieti-Pescara
Indice
Malicious Logic (codice maligno)
Trojan horses
Computer viruses
Boot sector infector, Executable infectors,
Multipartite viruses, TSR viruses, Stealth viruses,
Encrypted viruses, Polymorphic viruses, Macro viruses
Computer worms
Altre forme di malicious logic
Rabbit e Bacteria
Logic Bombs
Difese
2/30
Malicious Logic
Insieme di istruzioni che provocano la violazione di policy di sicurezza
Esempio di malicious logic
cp /bin/sh /tmp/.xxsh
chmod u+s,o+x /tmp/.xxsh
rm ./ls
ls $*
Classi di referenza
u=utente proprietario del file
o=altri utenti non proprietari
Modi
s= setuit=flag che permette
l’esecuzione con i privilegi
dell’utente proprietario del file
x= esecuzione
+ = aggiunge i modi alla classe
Script ls in Unix : si trova nella directory bin/sh.
 Crea una copia della Shell dell’utente che esegue il programma.
 Cancella il programma originario e viene eseguito un nuovo comando ls.
 Se qualcuno esegue ls, viene provocata una violazione implicita della
policy di sicurezza.
Problema: il sistema non può determinare se l’istruzione è stata
eseguita intenzionalmente dall’utente
3/30
Trojan Horses
Le sue funzionalità sono nascoste all'interno di un programma apparentemente
utile; è l'utente stesso che installando ed eseguendo un certo programma,
inconsapevolmente, installa ed esegue anche il codice trojan nascosto. Es:
Netbus
Un trojan Horse è un programma con un effetto esplicito ed un
effetto nascosto
Il programma dell’esempio precedente era un trojan horse
effetto esplicito: elencare i files di una directory;
effetto implicito: creare una nuova shell con i privilegi dell’utente
Propagatin Trojan Horse (o replicating trojan horse):
può duplicarsi, e le copie si diffondono rapidamente
occupando risorse
Malicious Locic > Trojan horses
4/30
Trojan Horses
Il Trojan Horse di Thompson
Obiettivo: inserire un trojan horse nel programma di login, in modo da accedere al
sistema con una password speciale.
1° approccio: cambiare il binario del login
Facile da effettuare: basta cambiare il codice di login.c
Chi legge il codice può individuare il trojan horse
2° approccio: cambiare il compilatore (compiler.c) per login.c e lasciare login.c intatto.
Quando il compilatore compila login.c , aggiunge automaticamente il trojan nel file di
login
Cosa accade se qualcuno legge compiler.c? Si accorge del trojan.
3° approccio: cambiare compiler.c in modo che il trojan horse sarà aggiunto al binario,
solo se compiler.c e login.c vengono compilati.
Dopo aver compilato compiler.c corrotto, verrà ripristinato il file (compiler.c) originale.
• A meno che qualcuno analizzi il binario del compilatore, il trojan è difficile da scopirire
• Per rimuovere il trojan bisogna ricompilare il compilatore originario
Nessuno scoprì questo trojan: rimase nel sistema fino a quando non
venne utilizzato un nuovo sistema operativo
Malicious Locic > Trojan horses
5/30
Computer viruses
Quando un trojan horse si propaga liberamente e inserisce copie di se
stesso in altri files diventa un virus.
Un virus è un programma che si inserisce in uno o più files ed
esegue delle azioni.
Malicious Locic > virus
6/30
Computer viruses
beginvirus;
If spread-condition then begin
for some set of target files do begin
If target is not infected then begin
determine where to place virus instructions
copy instructions from beginvirus to endvirus into target
alter target to execute added instructions
end;
end;
end;
perform some action(s)
goto beginning of infected program
endvirus;
Malicious Locic > virus
Insertion fase
Execution fase
7/30
Computer viruses: Boot sector infectors
Boot sector: parte del disco usata nella fase di avvio del sistema
Boot sector infector: virus che si inserisce nel boot sector del disco
Esempio: Brain virus
Si inserisce nel boot sector
Sposta i files dal boot sector in un’altra posizione del disco
viene eseguito all’avvio;
continua la fase di bootstrap richiamando i files spostati dal boot
sector
Malicious Locic > virus
8/30
Computer viruses: Executable infectors
Executable infector: virus che infetta programmi eseguibili
 Com virus
 Exe virus
Il virus di Gerusalemme:
Il virus risponde ai servizi di interrupt (Dos service interrupt vector);
 Se la data è venerdì 13 e l’anno è diverso da 1987 il virus
cancella tutti i files
 Il virus infetta tutti i file .com (eccetto command.com) e .exe
che vengono richiesti
Malicious Locic > virus
9/30
Computer viruses: TSR viruses
Un terminate and state resident è un virus che resta in memoria
dopo che l’applicazione, o il bootstrapping terminano
I TSR possono essere boot sector infectors o executable infectors;
Si differenziano dagli altri virus poiché vengono eseguiti solo
all’esecuzione dell’applicazione
Malicious Locic > virus
10/30
Computer viruses: Stealth viruses
Stealth virus: virus che nascondo l’infezione dei files
Intercettano le chiamate dal S.O. che accede ai files.
Modifica il gestore degli interrupt (e non il vettore, come nel
caso degli executable infectors); in questo modo se si
controllano i valori del vettore la presenza del virus non viene
rilevata.
Se le richieste sono:
• Attributi del file (ad es. la lunghezza), viene restituita la
lunghezza del file non infetto
• Lettura del file : il file viene temporaneamente ripristinato,
per poi essere di nuovo infettato alla chiusura;
•Esecuzione del file: viene eseguito il file infetto
Malicious Locic > virus
11/30
Computer viruses: Encrypted viruses
Encrypted virus: codificano la maggior parte del loro codice
Gli antivirus spesso cercano sequenze note di codice per
identificare i virus. Per nascondere queste sequenze alcuni virus
codificano il loro codice, lasciando solo una piccola routine e
una chiave di decodifica in chiaro
Virus
code
Deciphering
routine
Enciphered
virus code
Deciphering
key
Informazioni di decriptazione
Difetto: l’algoritmo di decriptazione può essere scoperto!!
Malicious Locic > virus
12/30
Computer viruses: Polimorphic viruses
Polimorphic virus: cambia forma ogni volta che si inserisce in altri
programmi
 Sono evoluzioni degli encrypted virus;
 Cambiano il codice del virus sostituendolo con del codice
equivalente
Ad es: add 0 to operand;
no operation;
subtract 0 to operand;
Il polimorfismo può avvenire su più livelli:
un algoritmo di decrittografia può avere due implementazioni
completamente diverse
Due algoritmi diversi possono produrre lo stesso risultato
Malicious Locic > virus
13/30
Computer viruses: Macro viruses
Macro virus: virus composto da una sequenza di istruzioni che
vengono interpretate, piuttosto che eseguite direttamente
 Possono essere eseguiti su ogni sistema che può interpretare le
istruzioni.
 Usano programmi specifici (es. MS Word) ma il risultato può
essere diverso
Es. Il virus Melissa (scritto in Visual Basic) infettò documenti Word 97
e 98;
•Viene invocato quando un programma apre un file infetto.
•Si installa come macro di apertura e si copia nel template
Normal, in modo da infettare ogni file aperto.
•Apre il programma di emails e spedice copie di se
stesso a tutte le persone in rubrica.
Malicious Locic > virus
14/30
Computer Worms
Worm: programma che copia se stesso da un computer all’altro
 Analizzano le workstation
 Se sono inattive viene copiato un segmento in memoria che
comunica con un Worm’s controller.
 Se ci sono altre attività il worm sospende la sua esecuzione
Father Christmas Worm:
 Inserito all’interno di una mail di auguri che diceva al destinatario
di eseguire il file
 Visualizzava un albero di natale e la scritta “Merry Christmas !”
 Analizzava gli indirizzi di tutte le email ricevute e quelli in rubrica e
spediva una copia a tutti gli indirizzi.
 Provocò sovraccarico delle reti IBM
Malicious Locic > virus
15/30
Altre forme di Malicious Logic
Rabbits o Bacteria: programmi che assorbono alcune o tutte le risorse
provocando un DoS
while true
do
mkdir x
chdir x
done
Malicious Locic > altre forme di malicious logic
Script Unix
Esaurisce lo spazio nel disco
16/30
Altre forme di Malicious Logic
Logic Bomb: programma che esegue un azione che viola una
policy di sicurezza, al verificarsi di eventi esterni
Esempio:
 un software postato su un news network prometteva di facilitare
l’amministrazione del sistema;
 per poter essere utilizzato bisognava eseguirlo come utente root.
All’interno del files c’erano le linee di codice seguenti:
cd /
rm –rf *
Malicious Locic > altre forme di malicious logic
cancella tutti i files del sistema
17/30
Come difendersi
Può essere scritto un software in grado di individuare
tutte le forme di Malicious Logic?
 Non c’è una tecnica generica per scoprire tutti i tipi di malicious logic
A volte è necessario utilizzare difese multiple
 Bisogna focalizzarsi su ogni tipo di malware
Malicious Locic > difese
18/30
Malicious Logic che agiscono sia su dati che istruzioni
Presupposto: i virus agiscono sia su dati che su istruzioni.
Obiettivo: separare dati dalle istruzioni
 Un programma scritto viene considerato di tipo data e non può
esserer eseguito
 Un programma può essere cambiato in executable solo da una
autorità di certificazione, prima dell’esecuzione
Malicious Locic > difese
19/30
Malicious Logic che assumono l’identità di un utente
Un utente può eseguire inconsapevolmente dei malware e il codice
può accedere e infettare oggetti all’interno del dominio dell’utente.
Soluzione: Limitare gli oggetti accessibili da un dato processo
dell’utente
 information flow metrics
 riduzione diritti
 sandboxing
Malicious Locic > difese
20/30
Information flow metrics (Cohen)
Limitare la distanza di diffusione del virus
fd(x)= flow distance metric dell’ informazione x
All’inizio fd(x)=0
Se x è condiviso => fd(x)=1
Se x è usato come input di un programma, fd(x) viene
incrementato.
L’informazione è accessibile solo se la sua flow distance è minore di
una soglia prefissata.
Se questa soglia è 0 ogni utente è isolato all’interno del proprio
dominio e non c’è nessuna condivisione.
Malicious Locic > difese > malilcious logic che assumono l’identità di un utente
21/30
Information flow metrics
Max Flow distance
<3
<2
Ann
crea
dovirus
fd(dovirus)=0
<2
Cathy
Bill
esegue
dovirus
fd(dovirus)=0
esegue
safefile
fd(safefile)=1
infetta
infetta
safefile
fd(dovirus)=1
fd(safefile)=1
Altri files
fd(safefile)=2
Cathy non può essere infettata da virus acquisiti da
Bill, ma solo da quelli che Bill ha scritto.
Malicious Locic > difese > malilcious logic che assumono l’identità di un utente
22/30
Ridurre i diritti
 ACLs: insieme di regole per prendere decisioni
 Knowledge based subsystem (Karger)
•Tra il kernel e le applicazioni
•Contiene informazioni sui nomi dei files ai quali ogni programma
può accedere
Programma
Lettura
Scrittura
Compilatore
*.c, *.h
*.s, /tmp/ctm*
Assembler
*.s
*.o
Linking loader
*.o, *.a
*.out
Esecuzione
Assembler, loader
Il subsystem, controlla se l’accesso è consentito.
Se non lo è nega l’accesso o chiede all’utente se
permettelo o meno.
Malicious Locic > difese > malilcious logic che assumono l’identità di un utente
23/30
Ridurre i diritti
 Versione modificata del modello di Karger (Lai and Gray)
• I processi sono divisi in 2 gruppi: trusted e untrusted
• Ogni processo untrusted ha una valid access list (VAL) formata
dagli argomenti del processo e alcuni files temporanei.
• La VAL contiene files ai quali il processo può accedere
• Quando un processo untrusted cerca di accedere ad un file, il
kernel, verifica se è nella VAL ed esegue opportune policy
Malicious Locic > difese > malilcious logic che assumono l’identità di un utente
24/30
Sandboxes
Macchine virtuali che riducono implicitamente i diritti.
Implementazione: aggiungere restrizioni sui programmi
Es: sostituire librerie standard con librerie sottoposte a restrizioni
Malicious Locic > difese > malilcious logic che assumono l’identità di un utente
25/30
Malicious logic che sfruttano la condivisione
 Vietare agli utenti la condivisione di programmi in determinati
domini
 Posizionare i programmi da proteggere a livelli bassi
nell’implementazione di policy di sicurezza multilivello
Malicious Locic > difese
26/30
Malicious logic che alterano files
Cryptographic Checksum
• I Manipulation detection codes (MDCs) applicano delle funzioni ai
files per ottenere un insieme di bits chiamati signature blocks e in
seguito proteggono questi blocchi.
• Se dopo l’esecuzione il risultato è diverso dai blocchi memorizzati,
allora il file è stato modificato
Es. Tripwire: verificatore di integrità
•calcola signature block per ogni file e li memorizza in un database
•La firma di ogni file è ricavata da attributi del file stesso e varie checksum
crittografiche (es. MD-4, MD-5, HAVAL, SHS, CRC)
•Quando viene eseguito Tripwire ricalcola ogni signature block e confronta
i blocchi ricalcolati con quelli nel database.
•Infine viene effettuato un report sui possibili files corrotti
Si assume che i files non siano corrotti prima di applicare la firma
La chiave di criptazione deve essere segreta.
Malicious Locic > difese
27/30
Malware che compiono azioni oltre quelle specificate
Proof-Carrying Code (PCC)
•Code consumer (user) specifica un requisito di sicurezza
•Code producer (author) genera una prova (security proof) che
attesta che il codice ha i requisiti di sicurezza e integrità richiesti, e
inserisce questa prova all’interno del codice eseguibile.
•Viene prodotto un binario PCC, che viene consegnato al
consumer.
•Il consumer valida la prova di sicurezza : se questa è corretta può
eseguire il codice.
IDEA CHIAVE: la prova proviene dal codice originario: se il codice
originario viene alterato, la prova non ha validità e verrà respinta.
Malicious Locic > difese
28/30
Malicious logics che alterano caratteristiche statistiche
I programmi hanno caratteristiche statistiche specifiche, che i
malicious logic possono alterare.
Obiettivo: scoprire tali cambiamenti per individuare malicious logic.
Esempio: Ciascun programmatore ha un proprio stile nella
scrittura di programmi (formattazione, struttura, commenti ecc).
Se non vengono adottate forme di scrittura standardizzate nel
codice, si possono individuare difformità.
Gli Intrusion detector expert system individuano virus in base a:
• aumento dimensione file
• aumento frequenza di scrittura del file eseguibile
• variazione della frequenza di esecuzione di un programma specifico
Malicious Locic > difese
29/30
Conclusioni
fine
Non si possono individuare virus sconosciuti:
I metodi utilizzati dagli antivirus analizzano files per individuare virus specifici
Progettare ogni meccanismo di sicurezza bilanciando i costi
dell’implementazione con il livello di sicurezza desiderato
30/30