IL WORM - Dipartimento di Informatica
Transcript
IL WORM - Dipartimento di Informatica
IL WORM Cos’ è un worm SQL Slammer n n Un worm è un processo che sfrutta il meccanismo di generazione per minare le prestazioni di un sistema Un worm genera copie di se stesso logorando le risorse di un sistema, talvolta al punto da renderlo inutilizzabile da tutti gli gli altri processi Cosa tratteremo … ü I worm diventano particolarmente potenti sulle reti di trasmissione, poiché hanno la possibilità di riprodursi sui diversi diversi sistemi ad esse collegati e quindi far cadere l’intera rete: ü ü ü ü ü ü ü ü ü ü ü ü ü ü Descrizione del worm Entità della diffusione del worm nel mondo Packet Trace Descrizione dei passi di attacco e propagazione del worm Generatore di numeri pseudocasuali utilizzato dal worm Pseudocodice del worm Descrizione delle vulnerabilità dei sistemi colpiti Software vulnerabili Buffer overflow Come capire se sulla propria macchina è in esecuzione SQL Server 2000 o MSDE 2000 Impatto del worm Schede di confronto Confronto con Code Red Protezione dal worm Strumenti di rimozione Cos’ è un worm Descrizione del worm n n n n Il 28 gennaio 2003 abbiamo assistito in Italia, al caso eclatante eclatant e di 14.000 uffici postali bloccati dal worm SQL Slammer La creazione di questo worm pare essere opera di un gruppo di cracker cinesi SQL Slammer contrariamente ai vecchi worm, non danneggia file e programmi ma rende di fatto inutilizzabile la rete considerando il ritmo velocissimo con il quale riesce ad autoauto-replicarsi: circa 8.000 copie in un’ora n L’effetto finale prodotto dal worm SQL Slammer è la negazione del servizio La sua altissima capacità di autoreplicarsi finisce col rallentare la rete mettendo fuori gioco i computer per un eccesso di tentativi di attacco Descrizione del worm 1 n n SQL Slammer colpisce i sistemi su cui sono in esecuzione Microsoft Microsoft SQL Server 2000 e Microsoft Data Engine (MSDE) 2000 Questi sistemi sono attaccati inviando 376 byte alla porta UDP 1434 1434 assegnata al servizio SQL Server Resolution Service n n SQL Slammer non memorizza copie di se stesso sul disco, infatti è completamente memory memory-- resident Esiste solo sotto forma di pacchetti di rete e processi eseguiti nella memoria dei computer infetti Hard disk Porta UDP 1434 Computer infetto Datagram UDP di 376 byte contenente il codice del worm si memorizza solo in si trasmette attraverso Computer attaccato Il worm Datagram UDP Descrizione del worm SQL Slammer sfrutta la vulnerabilità nota come buffer overflow che consiste nel riempimento, oltre limite, del buffer sullo stack stack del server di dati arbitrari. Dati caricati RAM Descrizione del worm n n SQL Slammer usa un generatore di numeri casuali per ottenere indirizzi IP di potenziali macchine vittime Il worm si propaga inoltrandosi a questi indirizzi IP sulla port a UDP 1434 della macchina remota, in modo da contattare il server SQL se presente OVERFLOW IP1 stack IP3 IP2 Generatore di numeri casuali Il buffer overflow permette l'esecuzione del codice del worm consentendo ad un attaccante remoto di prendere il controllo della della macchina vittima. IP5 IP4 Descrizione del worm Descrizione del worm Entità della diffusione del worm nel mondo n Il worm può essere rimosso automaticamente riavviando la macchina n n n Non rende la macchina immune da una nuova infezione n Per proteggere i sistemi vulnerabili la Microsoft ha rilasciato delle patch cha vanno installate su tali sistemi SQL Slammer ha attaccato i server delle poste italiane e anche numerosi altri sistemi informatici in Italia e nel mondo La figura seguente mostra l'espansione geografica di SQL Slammer nei 30 minuti dopo il suo exploit, cioè la sua fase iniziale di propagazione propagazione La grandezza di ogni cerchio è proporzionale al grado di diffusione diffusione del worm nel paese su cui è indicato n aggiornamenti dei programmi con revisione degli errori di programmazione in essi individuati Descrizione del worm 2 Packet Trace Il seguente datagram viene inviato da un computer infetto ad uno vulnerabile Cosa tratteremo … ü ü ü ü ü ü ü ü ü ü ü ü ü ü ü Descrizione del worm Entità della diffusione del worm nel mondo Packet Trace Descrizione dei passi di attacco e propagazione del worm Generatore di numeri pseudocasuali utilizzato dal worm Pseudocodice del worm Descrizione delle vulnerabilità dei sistemi colpiti Software vulnerabili Buffer overflow Come capire se sulla propria macchina è in esecuzione SQL Server 2000 o MSDE 2000 Impatto del worm Schede di confronto Confronto con Code Red Protezione dal worm Strumenti di rimozione Il byte 0x04: 0x04: un datagram, che viene ricevuto da un sistema SQL Server vulnerabile, con il primo byte uguale a 0x04, viene interpretato come una richiesta. Generatore di numeri pseudocasuali di SQL Slammer Descrizione dei passi di attacco e propagazione Porta UDP 1434 Viene trasmesso Attacca la macchina vittima Datagram UDP I byte 68 6F 75 6E 74 68 69 63 6B:: sequenza di byte che permette 6B di avvallare il sospetto che il datagram in cui è contenuta sia quello del worm SQL Slammer, in quanto si trova in tutti i datagram. Computer infetto SQL Slammer utilizza un generatore a congruenze lineari nell'algoritmo di generazione di numeri pseudo casuali PRNG (Pseudo Random Number Generator). IP2 IP1 causa Dati caricati Generatore di numeri casuali Si diffonde inoltrandosi verso altri indirizzi IP OVERFLOW Il worm IP3 IP1 stack Generatore di numeri casuali IP5 IP3 IP4 IP2 Cosa tratteremo … La sequenza di valori X1 , X2 , X3 … ü viene prodotta dalla formula Xi+1 = (Xi *a + b) mod m a partire da un valore iniziale X0 , detto seme X0 = numero di millisecondi trascorsi dal boot del sistema m = 232 range del risultato a = 214013 b = 2531 011 ü ü ü ü ü ü ü ü ü ü ü ü ü ü Descrizione del worm Entità della diffusione del worm nel mondo Packet Trace Descrizione dei passi di attacco e propagazione del worm Generatore di numeri pseudocasuali utilizzato dal worm Pseudocodice del worm Descrizione delle vulnerabilità dei sistemi colpiti Buffer overflow Software vulnerabili Come capire se sulla propria macchina è in esecuzione SQL Server 2000 o MSDE 2000 Impatto del worm Schede di confronto Confronto con Code Red Protezione dal worm Strumenti dirimozione Generatore di numeri pseudocasuali di SQL SLammer 3 GetProcAddress viene invocata per ottenere l’indirizzo della funzione GetTickCount() GetTickCount () della libreria kernel32.dll Pseudocodice del worm La funzione Load Library viene invocata per ottenere gli handles delle librerie in cui sono localizzate le funzioni utilizzate dal worm ws2_32handle = LoadLibrary (ws2_32.dll); Puntatore A Funzione = GetProcAddress (kernel32handle, (kernel32handle,GetTickCount GetTickCount); ); kernel32handle = LoadLibrary (kernel32.dll); Output: puntatore alla libreria Tali librerie sono ws2_32.dll e kernel32.dll Input: libreria kernel32hndle , funzione GetTickCount Pseudocodice del worm è utilizzata anche per ottenere gli indirizzi delle funzioni socket socket() () e sendto sendto() () Loop infinito che genera nuovi indirizzi IP e li attacca Crea un nuovo canale di comunicazione verso l’esterno GetProcAddress (ws2_32handle,socket); GetProcAddress (ws2_32handle,sendto); while (true) { IPAddress = generateRandom (IPAddress IPAddress); ); Send Copy of Self through UDP } invia messaggi sul canale di comunicazione creato IPAddress = GetTickCount GetTickCount(); (); invia il buffer in cui è memorizzato il pacchetto contenente il worm stesso utilizzando la funzione sendto () [Socket setup setup]] Setta dei parametri predefiniti (protocollo di comunicazione usato, tipo di indirizzo,numero di porta, ecc) restituisce il seme iniziale per il sul generatore di numeri casuali Pseudocodice del worm Cosa tratteremo … ü ü ü ü ü ü ü ü ü ü ü ü ü ü ü Descrizione del worm Entità della diffusione del worm nel mondo Packet Trace Descrizione dei passi di attacco e propagazione del worm Generatore di numeri pseudocasuali utilizzato dal worm Pseudocodice del worm Descrizione delle vulnerabilità dei sistemi colpiti Buffer overflow Software vulnerabili Come capire se sulla propria macchina è in esecuzione SQL Server 2000 o MSDE 2000 Impatto del worm Schede di confronto Confronto con Code Red Protezione dal worm Strumenti di rimozione Pseudocodice dl worm Descrizione delle vulnerabilità dei sistemi colpiti n n I database server Microsoft SQL Server 2000 presentano una vulnerabilità di buffer overflow. L'obiettivo dell'attaccante è riuscire ad acquisire i privilegi del processo server per poter agire indisturbato come se sulla macchina macchina attaccata continuasse la normale esecuzione del processo server. 4 Esempio di overflow del buffer sullo stak Buffer overflow Il buffer allocato sullo stak non è abbastanza capiente da contenere la stringa ”arrivederci”, pertanto viene causato l’overflow l’ overflow n Buffer = blocco contiguo di memoria che contiene più istanze dello stesso tipo di dato Stack = area di memoria contigua gestita in modalità Last In First Out (LIFO) n Operazioni principali: - push, aggiunge un elemento in cima allo stack - pop, rimuove un elemento dalla cima dello stack n n L’indirizzo della prossima istruzione da eseguire viene sovrascritto n IP = istruction pointer, contiene l’indirizzo della prossima istruzione da eseguire Stack pointer = puntatore alla cima dello stack Frame Pointer = puntatore a frame Buffer overflow Come il worm sfrutta l’overflow del buffer n n n Il worm che viene ricevuto da un sistema vulnerabile viene ricopiato nel buffer dello stack Il worm causa l’overflow del buffer L’ IP viene sovrascitto con l’indirizzo della prima istruzione del worm n n n n n n Il primo byte del pacchetto del worm SQL Slammer è 0x04. Al byte 0x04 segue una sequenza di byte costituita dai dati di padding e dal codice del worm Il server SQL interpreta questi byte come dati supplementari dell'utente e li carica su uno stack. La quantità di byte è tale da causare l’overflow del buffer sullo stack Indirizzo di ritorno salvato sullo stack viene sovrascritto dall’indirizzo della prima istruzione del worm Un attaccante è in grado di ottenere il controllo del processo SQL Server e del suo percorso di esecuzione Buffer overflow Buffer overflow Software vulnerabili Cosa tratteremo … ü ü ü ü ü ü ü ü ü ü ü ü ü ü ü Descrizione del worm Entità della diffusione del worm nel mondo Packet Trace Descrizione dei passi di attacco e propagazione del worm Generatore di numeri pseudocasuali utilizzato dal worm Pseudocodice del worm Descrizione delle vulnerabilità dei sistemi colpiti Buffer overflow Software vulnerabili Come capire se sulla propria macchina è in esecuzione SQL Server 2000 o MSDE 2000 Impatto del worm Schede di confronto Confronto con Code Red Protezione dal worm Strumenti di rimozione Il worm SQL Slammer è in grado di infettare: n n Macchine su cui sono in esecuzione Microsoft SQL Server 2000 o MSDE 2000. Sistemi su cui sono in esecuzione applicazioni che implicitamente implicitam ente (“silenziosamente”) installano Microsoft SQL Server 2000 o MSDE 2000. Esempi di tali applicazioni sono: Microsoft Biztalk Server Microsoft Office XP Developper Edition Microsoft Project Microsoft SharePoint Portal Server Microsoft Visio 2000 Microsoft Visual FoxPro Microsoft Visual Studio.NET Compaq Insight Manager Crystal Reports Enterprise HP Openview Internet Services Monitor ecc… 5 Come capire se sulla propria macchina sono in esecuzione MS SQL Server 2000 o MSDE 2000 n La presenza di SQL Server 2000 o di MSDE 2000 su una macchina è rilevabile: dalla presenza di un'icona sulla System Tray che appare come un computer con un cerchio bianco e un bottone play verde su di esso. esso. n per controllare se SQL Server è in esecuzione si può controllare che la porta UDP 1434 del sistema sia aperta. Per fare ciò bisogna: ü cliccare su Start/ Run e digitare "netstat "netstat -p udp -a 100" ü controllare se nell'output visualizzato compare una linea del tipo "UDP YOURCOMPUTERNAM E:ms E: ms--sql sql--m". ü In caso affermativo bisognerebbe applicare una patch al fine di poter proteggere il proprio sistema. ü Per uscire dalla finestra visualizzata è necessario digitare Ctrl Ctrl--C. Software vulnerabili n Software vulnerabili Oppure per controllare se MSDE 2000 è in esecuzione si possono eseguire i seguenti passi: ü ü Fare clic con il pulsante destro del mouse sull’icona Risorse del computer Scegliere Gestisci ü Fare doppio clic su Servizi e Applicazioni ü Fare doppio clic su Servizi Cosa tratteremo … ü ü ü ü ü ü ü ü ü Se MSSQLSERVER appare nell'elenco dei servizi allora l'istanza predefinita di MSDE è installata nel computer ü ü ü ü ü ü ü Descrizione del worm Entità della diffusione del worm nel mondo Packet Trace Descrizione dei passi di attacco e propagazione del worm Generatore di numeri pseudocasuali utilizzato dal worm Pseudocodice del worm Descrizione delle vulnerabilità dei sistemi colpiti Software vulnerabili Buffer overflow Come capire se sulla propria macchina è in esecuzione SQL Server 2000 o MSDE 2000 Impatto del worm Schede di confronto Confronto con Code Red Protezione dal worm Strumenti di rimozione Software vulnerabili Impatto del worm SQL Slammer Velocità di propagazione del worm n n Ampio utilizzo di bandwith di rete n Alto volume di traffico sulla porta UDP 1434 dei sistemi attaccati attacc ati n Degrado delle performance degli host infettati n Condizioni di Denial of service (negazione di servizio) n n Nel primo minuto della sua espansione la taglia della popolazione popolazion e contagiata raddoppia ogni 8.5 secondi Il worm raggiunge il massimo scanning rate in circa 3 minuti Le macchine più vulnerabili sono contagiate entro 10 minuti dall’exploit del worm 6 Il worm SQL Slammer è così veloce perché… Cosa tratteremo … ü n n n Invia pacchetti UDP di soli 376 byte Compie scansioni senza aspettare una risposta dalla potenziale vittima Contiene un veloce analizzatore di rete ü ü ü ü ü ü ü ü ü ü ü ü ü ü Descrizione del worm Entità della diffusione del worm nel mondo Packet Trace Descrizione dei passi di attacco e propagazione del worm Generatore di numeri pseudocasuali utilizzato dal worm Pseudocodice del worm Descrizione delle vulnerabilità dei sistemi colpiti Software vulnerabili Buffer overflow Come capire se sulla propria macchina è in esecuzione SQL Server 2000 o MSDE 2000 Impatto del worm Schede di confronto Confronto con Code Red Protezione dal worm Strumenti di rimozione Diffusione Schede di confronto SQL Slammer Nimda Code Red Tipo Worm Virus, Worm Worm Lunghezza dell'infezione 376 byte Sistemi operativi minacciati Windows 95, Windows 98, Windows NT, Windows 2000, Windows XP, Windows Me Windows 95, Windows 98, Windows NT, Windows 2000, Windows XP, Windows Me Windows 3.x, Microsoft IIS, Macintosh, OS/2, UNIX, Linux Macintosh Sistemi operativi non minacciati 3569 byte SQL Slammer Nimda Code Red Numero di macchine infette Più di 1000 Più di 1000 Più di 1000 Numero di sedi infette Più di 10 Più di 10 Più di 10 Alta Media Bassa Contenimento della Facile minaccia Moderata Facile Rimozione Moderata Facile Distribuzione geografica Facile Schede di confronto Distribuzione Danno SQL Slammer Effetto nocivo (payload payload)) SQL Slammer Nimda Code Red Instabilit à del sistema: può impedire l'accesso alla rete. Instabilità del sistema: crea numerosi thread e utilizza bandwidth Rilascio di informazioni riservate. Distribuzione di massa tramite posta elettronica; invia copie di stesso come Readme.exe (NON è possibile vedere questo file come allegato al messaggio di posta ricevuto). Modifica File: si sostituisce a diversi file legittimi. Instabilità del sistema: può causare rallentamenti del sistema. Compromissione delle impostazioni di sicurezza: apre l'unità C come condivisione di rete. Porte Code Red Nome dell'allegato Readme.exe Dimensione dell'allegato 57344 byte. Unità condivise apre condivisione di rete tenta di infettare Sistemi non server IIS non aggiornati con aggiornati. Microsoft Index 2.0 o Windows 2000 Index ing Service Service.. Bersaglio dell'infezione Schede di confronto Nimda Porta UDP 1434. Il worm invia ripetutamente volumi di traffico ad indirizzi IP da esso generati, e tenta di inviarsi ad host sul servizio Microsoft SQL Server Resolution,, mettendosi in Resolution ascolto di questa s pecifica porta. Schede di confronto 7 Confronto fra tasso di infezione di SQL Slqmmer e tasso di infezione di Code Red Cosa tratteremo … Descrizione del worm Entità della diffusione del worm nel mondo Packet Trace Descrizione dei passi di attacco e propagazione del worm Generatore di numeri pseudocasuali utilizzato dal worm Pseudocodice del worm Descrizione delle vulnerabilità dei sistemi colpiti Software vulnerabili Buffer overflow Come capire se sulla propria macchina è in esecuzione SQL Server 2000 o MSDE 2000 Impatto del worm Schede di confronto Confronto con Code Red Protezione dal worm Strumenti di rimozione ü ü ü ü ü ü ü ü ü ü Velocità di diffusione del worm SQL Slammer Velocità di diffusione del worm Code Red ü ü Totale delle infezioni Nuove infezioni L’aumento del numero di indirizzi IP attaccati è stato più veloce per il worm SQL Slammer che per il worm Code Red ü ü ü Passi compiuti dallo strumento di rimozione del worm Protezione dal worm SQL Slammer Strumenti softaware progettatiti dalla Microsoft per proteggere le installazioni di Microsoft® SQL Server™ e Microsoft SQL Server Desktop Engine 2000: n n n 1. 2. 3. SQL Server 2000 SQL Scan Tool (SQL Scan Scan)) SQL Check SQL Critical Update Determina se sul computer è presente il file .dll vulnerabile Individua e inattiva il thread del worm nel processo sqlserver.exe Visualizza un avviso relativo alla patch di Microsoft da installare. La patch è disponibile in Microsoft Security Bulletin MS02 MS02--061 Protezione dal worm Come ottenere ed eseguire lo strumento di rimozione 1. Scaricare il file FixSQLex.exe all'indirizzo: http://securityresponse.symantec.com 2. Salvarlo su una posizione di uso pratico, quale la cartella download o il desktop (oppure, se possibile, su un supporto rimovibile che si sappia con certezza non essere infetto) 3. Le informazioni su come verificare l'autenticità della firma digitale sono riportate successivamente 4. Chiudere tutti programmi in esecuzione prima di avviare lo strumento. Protezione dal worm 5. Fare doppio clic sul file FixSQLex.exe FixSQLex.exe,, per avviare lo strumento di rimozione 6. Fare clic su Start per avviare il processo e consentire l'esecuzione l'esecuz ione dello strumento 7. Riavviare il computer 8. Eseguire nuovamente lo strumento di rimozione per assicurarsi che il sistema sia del tutto privo di infezioni 9. Eseguire LiveUpdate per accertarsi di disp 4 Protezione dal worm 8 Filtri di input/output n n n I filtri di input consentono soltanto a traffico controllato di entrare nella rete che proteggono I filtri di output consentono soltanto a traffico controllato di uscire dalla rete che proteggono Hanno lo scopo di bloccare traffico non autorizzato n n n Hanno il solo l'effetto di limitare i danni causati dai sistemi già infettati dal worm Non forniscono una protezione all'infezione iniziale dei sistemi Il blocco di datagram UDP con numero di porta sorgente o destinazione 1434 da parte di un sistema, riduce il rischio di essere infettato da o di infettare sistemi esterni Filtri di input/output 9