####################################################################### Luigi Auriemma Applicazione: Master servers che utilizzano il protocollo UDP per inviare le liste dei server di gioco attivi ai clients. I servers maggiormente vulnerabili sono quelli usati da ID-Software e Valve/Sierra Versioni: - Piattaforme: - Bugs: Utilizzo del protocollo UDP per l'invio di grandi quantita' di dati Date: 20 Feb 2003 Autore: Luigi Auriemma e-mail: aluigi@autistici.org web: aluigi.org ####################################################################### 1) Introduzione 2) Dettagli 3) Il Codice 4) Fix 5) Filosofia ####################################################################### =============== 1) Introduzione =============== Negli ultimi tempi ed in passato, molte persone (come il mio amico Mike Kristovich, Tom Vogt e moltissimi altri) hanno parlato e discusso riguardo l'utilizzo dei server di gioco online come basi per lanciare attacchi di tipo DDoS contro ogni host su Internet. Tutti questi attacchi sono focalizzati sulla quantita' di dati nelle risposte che il server di gioco invia ai clients che richiedono informazioni, come ad esempio la lista dei giocatori nel server od altre informazioni specifiche. Invece in questo advisory voglio parlare riguardo un altro tipo di attacco DDoS che risultera' in un enorme quantitativo di dati che in alcuni casi (dipendenti dal gioco, il numero di partite ed altre variabili) puo' risultare piu' pericoloso del "information queries DDoS". Parlo infatti della "lista dei servers di gioco attualmente attivi" che viene inviata dai Master Servers ai clients di gioco. Quindi "l'oggetto" usato come base per gli altri attacchi ora diviene "l'attacco" stesso. ####################################################################### =========== 2) Dettagli =========== Prima cosa importante da sapere e' "cosa sono i Master Servers?". I Master Servers sono dei servers centralizzati (hanno un hostname fisso) utilizzati per immagazzinare la lista dei servers di gioco attualmente disponibili su Internet. Ognuno di questi MS (Master Servers) e' utilizzato SOLO per un unico gioco speficico (l'unica eccezione e' rappresentata da alcuni server che non sono MS primari ma fungono solo da mirrors). Per esempio: master3.idsoftware.com e' usato per Quake III, half-life.east.won.net per Half-Life e cosi' via'... Quando qualcuno (un giocatore come te) avvia un server di gioco su Internet, il suo gioco inviera' un pacchetto al MS primario usato per quel gioco cosicche' tutti i giocatori nel mondo sapranno che su quella macchina e' in corso una partita multiplayer. Quando qualcun'altro vuole trovare un server multiplayer su Internet per connettersi e giocare, dovra' soltanto andare nella sezione Multiplayer del suo gioco ed il sistema si occupera' di inviare una richiesta al MS primario di quel gioco specifico e il MS rispondera' inviando la lista corrente di servers di gioco dispinibili. Ecco un semplice schema riguardo l'invio della lista al client: Game client -> Master server (richiesta per la lista) Game client <========== Master server (enorme lista in risposta) L'idea del DDoS nasce nel momento in cui esistono dei Master Server che utilizzano un protocollo di rete connection less quale l'UDP. Quindi il nuovo schema sara': Attacker (with victim IP source) -> Master server (request) Victim <========== Master server (answer) Una lista sintetica dei Master Servers piu' comuni che supportano l'UDP e' la seguente: QUAKE WORLD 192.246.40.37:27000 QUAKE WORLD 192.246.40.37:27002 QUAKE WORLD 192.246.40.37:27003 QUAKE WORLD 192.246.40.37:27004 QUAKE WORLD 192.246.40.37:27006 QUAKE III ARENA master3.idsoftware.com:27950 HALF-LIFE half-life.east.won.net:27010 HALF-LIFE half-life.west.won.net:27010 TRIBES II 198.74.32.54:27999 TRIBES II 198.74.32.55:27999 TRIBES II 211.233.86.203:28002 STAR TREK: VOYAGER ELITE FORCE master.stef1.ravensoft.com:27953 DESCENT III gt.pxo.net:3445 ... Nella lista il Master server piu' potente e' senza dubbio quello di Quake III che riesce a far arrivare una pioggia di pacchetti UDP al client... esso puo' inviare una tale quantita' di dati che puo' essere equivalente alla somma di tutti gli altri Master Servers messi insieme!!! NOTA: molti altri servers possono essere trovati su Internet o si puo' dare un'occhiata ai servers che supportano il protocollo di gioco standard usati da XQF (http://www.linuxgames.con/xqf/), e se si vuole conoscere il formato delle richieste usato per contattare i Master Server di un gioco specifico suggerisco di andare a vedere il codice di Qstat (http://www.qstat.org). I bytes ricevuti da questi Master Servers dipendono dai match attivi al momento, comunque la quantita' di dati in alcuni casi e' davvero enorme. Giusto per esempio ho provato diverse volte a testare il Master Server principale di QuakeIII, master3.idsoftware.com; la quantita' di dati ricevuta in risposta e' stata di oltre 650 volte il mio pacchetto originale che era di 34 bytes (FYI: ho considerato solo la parte dati, escludendo le intestazioni del pacchetto di rete). Quindi la corretta equazione e': "piu' server di gioco -> piu' dati in risposta" Questa e' la causa dell'enorme mole di dati inviata dal Master Server di QuakeIII. L'ultima cosa preoccupante e' che tali servers sono centralizzati e quindi scrivere un tool DDoS e' davvero un gioco da ragazzi (a tal proposito consiglierei di dare un'occhiata alla sezione "Il Codice" di questo documento), semplicemente perche' l'attacker non ha bisogno di prelevare una lista di servers, estrapolarne gli IP e le porte e successivamente lanciare l'attacco usando magari il server di qualcuno che probabilmente rimarra' collegato per qualche minuto o che proprio in quel momento ha fermato il gioco... I Master Servers sono "fissi", centralizzati e SEMPRE attivi, quindi un semplice UDP spoofer esegue un lavoro eccellente a tale scopo. ####################################################################### ============ 3) Il Codice ============ Ho scritto un semplice e completo tool DDoS basato su tale attacco che semplicemente invia dei datagrammi UDP spoofati ai servers che ho elencato nella sezione Dettagli. Ho anche inserito un'opzione (-t) che mostra quanti dati sono stati ricevuti dal master server di QuakeIII inviando una sola richiesta (in modo da avere una statistica in tempo reale). L'utility e' davvero pericolosa quindi va' usata solo come prova di cio' che ho riportato in questo documento. http://aluigi.org/poc/msddos.zip NOTA: Da ricordare che alcuni ISP (fornitori di accesso Internet) adesso non permettono piu' la tecnica dello spoofing dalla loro rete quindi in questo caso i pacchetti inviati non arriveranno mai ai servers, in quanto saranno bloccati prima. ####################################################################### ====== 4) Fix ====== Un fix iniziale e' offerto dagli ISP che finalmente si sono decisi ad eliminare la possibilita' di inviare pacchetti con mittente falsificato dalla loro rete. Comunque l'unico fix possibile e' l'utilizzo del protocollo TCP che in questo caso non e' una cattiva idea visto che le liste dei servers non hanno una priorita' alta come i dati in tempo reale delle partite multiplayer. Ad esempio i servers di Gamespy utilizzano il protocollo TCP e molti altri tipi di servers usano il protocollo HTTP, quindi questo e' davvero un metodo molto semplice per risolvere il problema in quanto basterebbe solo modificare una parte microscopica dei giochi che usano questi Master servers. NOTA: Sia ID-Software che Sierra sono stati contattati solo per essere notificati di tale problema ID-Software sembra essere irraggiungibile via mail (???), mentre Sierra non ha risposto. IMHO questo e' un problema gia' conosciuto da loro in quanto usare un protocollo connection-less come l'UDP portera' SEMPRE a questi effetti. #######################################################################