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