MALWARE 1 Malware • Software creato con il solo scopo di causare danni più o meno gravi al computer su cui viene eseguito • Diffusione in continuo aumento • Anno 2008: 15 milioni di malware – Numeri destinati ad aumentare 2 Categorie di malware • • • • • • • • Virus Worm Trojan Horse Spyware Logicbombs Rootkit Backdoor … 3 Virus • Tipo più conosciuto di malware • Simile a un virus biologico – Software auto-replicante che si “attacca” ad un altro programma • Richiede l’intervento umano per entrare in azione – Esecuzione o apertura di un file 4 Virus: metodi di infezione • Virus Non-Resident, composto da due moduli – Finder: cerca nuovi file da infettare – Replication: richiamato dal Finder, ogni volta che viene trovato un file da infettare • Virus Resident, composto solamente dal modulo Replication – Il modulo viene caricato in memoria – Viene eseguito ogni volta che si verificano determinate condizioni • Es. apertura di un file 5 Virus: mezzi di trasmissione • • • • • • File binari (exe, com, elf, …) MBR (Master Boot Record) Script (Batch, VBScript, Shell script) Autorun script (autorun.inf) Documenti contenenti macro (doc, xls, …) Vulnerabilità XSS (cross-site scripting) delle web application • Bug dei programmi (buffer overflow, race condition, …) 6 Metodi per impedire l’individuazione • La data di ultima modifica nei file infettati rimane invariata • La dimensione dei file infettati non aumenta (cavity virus) – Utilizza aree vuote nei file eseguibili • L’antivirus viene disattivato prima che riesca ad individuare l’infezione • L’azione dell’antivirus viene intercettata, restituendo una versione non infetta dei file (stealth) 7 Metodi per impedire l’individuazione • Il codice del virus viene modificato ad ogni nuova infezione – Virus polimorfi • Il codice del virus viene criptato e associato ad un modulo di decriptazione – La chiave utilizzata cambia ad ogni nuova infezione 8 Worm • Programma che si replica in maniera autonoma • Il primo worm venne creato anni prima della comparsa dei virus – Sfruttava un’imperfezione del comando UNIX “finger” per causare un blocco totale ad Internet 9 Worm • Utilizza la rete per spedire copie di sé stesso ad altri computer • Sfrutta le vulnerabilità dei sistemi per ottenere l’accesso • Non necessità di legarsi ad altri programmi • Può essere progettato per la sola diffusione oppure per compiere azioni all’interno dei sistemi infetti – Installazione di backdoor (Sobig, MyDoom, …) 10 Trojan Horse • Permette al suo creatore di ottenere un facile accesso al sistema • Si nasconde sotto forma di software o funzionalità di interesse per l’utente • L’accesso al sistema avviene con gli stessi privilegi dell’utente che ne ha eseguito l’installazione – Nei sistemi Windows spesso è un utente amministratore 11 Trojan Horse • Richiede l’intervento di un hacker per compiere delle azioni – Uso della macchina come parte di una botnet – Furto di informazioni – Apertura di ulteriori falle – Download / upload di file – Modifica o cancellazione di documenti – Keylogging – Registrazione delle azioni compiute dall’utente – Crash del sistema 12 Trojan Horse: metodi di distribuzione • Download di software – Trojan incluso come componente nascosta di un applicativo • Website contenente codice eseguibile (ActiveX) • Allegati delle Email • Sfruttamento di bug delle applicazioni (browser, lettori multimediali, instant messaging, …) 13 Spyware • Raccoglie di nascosto informazioni sulle abitudini degli utenti – Siti visitati – Applicazioni utilizzate – Keylogging –… 14 Spyware • In certi casi può risultare altamente invasivo – Redirezione di pagine web – Perdita di connettività – Installazione di software – Apertura di finestre di popup – Perdita di prestazioni del computer – Dialer – …. 15 Rootkit • Software progettato per prendere il controllo di una rete di computer, senza essere individuato • Spesso cancella eventuali tracce di attività, lasciate nel registro degli eventi – Modifica parti del sistema operativo, per nascondere processi e file all’utente – Si installa come un driver 16 Rootkit • Le operazioni effettuate possono variare in base alla progettazione – Trojan – Spyware – Corruzione di file – Botnet – DoS (Denial of Service) Attack • Sono progettati per ottenere i permessi di amministratore (root) del sistema – Ottengono un accesso completo alle risorse 17 Tipologie di rootkit • Hardware / Firmware Level – Si nasconde nel firmware dei dispositivi – Spesso non vengono controllati per verificarne l’integrità • Hypervisor Level – Modifica la sequenza di boot – Si installa come controllore (hypervisor) del sistema operativo – Sfruttando i sistemi di virtualizzazione CPU (IntelVT, AMD-V) può eseguire il SO come una macchina virtuale • Consente di intercettare tutte le chiamate all’hardware 18 Tipologie di rootkit • Boot Loader Level – Sostituisce il boot loader originale – Una piattaforma TPM (Trusted Platform Module) configurata per proteggere il path di boot è l’unica difesa efficace • Kernel Level – Aggiunge / rimpiazza porzioni del codice del sistema operativo – Alcuni SO consentono di caricare i driver in Kernel Mode • Il rootkit può ottenere un controllo completo della macchina • Difficili da intercettare, perché lavorano allo stesso livello di sicurezza del Kernel 19 Tipologie di rootkit • Library Level – Modifica le System Call con versioni che nascondono il rootkit e le azioni dell’attaccante – Applica patch alle librerie di sistema (DLL) – La firma digitale sui file di sistema aiuta ad identificare cambiamenti non autorizzati • Application Level – Modificano o rimpiazzano gli eseguibili dei programma, inserendo dei Trojan 20 Backdoor • Tecnica per superare i sistemi di autenticazione – Viene inserita all’interno del codice del software – Consente di ottenere un accesso al sistema da parte del realizzatore • Esempi famosi – Novembre 2003: tentativo di inserire una backdoor nel Kernel Linux – Sobig / MyDoom: worm che installano backdoor sui pc infetti – Sony/BMG Rootkit: installa routine creando notevoli problemi di sicurezza 21 Backdoor • Symmetric Backdoor – Chiunque è a conoscenza della backdoor può utilizzarla • Asymmetric Backdoor – Può essere utilizzata unicamente da chi la implementa – Anche se resa pubblica, risulta inaccessibile – Richiede l’uso di metodi di autenticazione • Es: Smartcard 22 Dialer • Programma utilizzato per creare una connessione a una rete di computer attraverso una linea telefonica analogica o ISDN • Spesso utilizza il protocollo PPP (Point-toPoint) • Il dialer è necessario per collegarsi ad Internet in presenza di connessioni non-broadband • Dialer “cattivi”: sfruttano i bug del SO per installarsi e connettere il modem a numeri a tariffazione speciale 23 Logicbombs • Porzione di codice inserita intenzionalmente che compie azioni dannose al verificarsi di determinate condizioni – Es. un programmatore può inserire una routine che cancella i progetti su cui lavora, in caso di licenziamento • Vengono inserite all’interno di virus e worm, perché si attivino solo in precisi contesti • Esempio di logicbomb funzionante: – 1982: Trans-siberian Pipeline Incident 24 Timebombs • Variante della logicbomb • Si attiva e opera solo a partire da una data prefissata • Timebomb non dannosa – Un programma di prova che smette di funzionare dopo un certo lasso di tempo dalla sua installazione 25 ANTIVIRUS 26 Antivirus • Antivirus is a software used to prevent, detect, and remove malware • Can degrade computer performance • A false positive is identifying a file as a virus when it is not a virus – false positives in essential files can render the operating system or some applications unusable • Anti-virus programs are not very effective against new viruses 27 Identification methods • Signature based detection – Most common method – Compares the contents of a file to a dictionary of virus signatures – Antivirus software heavily relied upon signatures to identify malware – Signature-based approaches are not effective against new, unknown viruses – Requires frequent updates of the virus signature dictionary 28 Identification methods • Malicious activity detection – Monitors the system for suspicious program behavior – If suspicious behavior is detected, the suspect program may be further investigated, using signature based detection or another method – This type of detection can be used to identify unknown viruses or variants on existing viruses • Heuristic-based detection – Can be used to identify unknown viruses – File analysis • Process of searching a suspect file for virus-like instructions • Large amount of computer resources needed to analyse every file – File emulation • Executing a program in a virtual environment • Logging what actions the program performs 29 On-demand detection capabilities 30 Graph of missed malware 31 False positive 32 Performance Test 33 ERRORI DI PROGRAMMAZIONE 34 Software bug • Software bug – common term used to describe an error, flaw, mistake, failure, or fault in a computer program or system that produces an incorrect or unexpected result – They cost the US economy an estimated $59 billion annually – Malicious software may attempt to exploit known vulnerabilities in a system 35 Common types of computer bugs • Arithmetic bugs – Division by zero • many computer programming languages explicitly forbid the execution of the operation and may prematurely halt a program that attempts it – Arithmetic overflow • the condition that occurs when a calculation produces a result that is greater in magnitude than that which a given register or storage location can store or represent Es. Max value in 32 bit data is 4294967296 (2^32) – Loss of arithmetic precision • Logic bugs – Infinite loops • sequence of instructions in a computer program which loops endlessly – Off-by-one error • It often occurs when an iterative loop iterates one time too many or too few 36 Common types of computer bugs • Syntax bugs – Use of the wrong operator, such as performing assignment instead of equality test • many compilers detect these errors • Multi-threading programming bugs – Deadlock • situation wherein two or more competing actions are waiting for the other to finish, and thus neither ever does – Race condition • the output and/or result of the process is unexpectedly and critically dependent on the sequence or timing of other events • A time-of-check-to-time-of-use bug is a software bug 37 Common types of computer bugs • Resource bugs – – – – Null pointer dereference Using an uninitialized variable Using the wrong data type Access violations (Segmentation Fault) • program attempts to access a memory location that it is not allowed to access – Resource leaks • system resource (memory, ...) are exhausted by repeated allocation without release – Buffer Overflow • anomaly where a process stores data in a buffer outside the memory the programmer set aside for it • This may result in erratic program behavior, including memory access errors, incorrect results, program termination (a crash), or a breach of system security – Stack overflow • call stack contains a limited amount of memory • When too much memory is used on the call stack the stack is said to overflow 38 Common types of computer bugs • Teamworking bugs – Unpropagated updates – Comments out of date or incorrect – Differences between documentation and the actual product 39