###################################################################### Luigi Auriemma Application: CheckBo (http://www.checkbo.com) Version: 1.56 (l'ultima versione rilasciata) L'attacco A] affligge solo i sistemi Win9x/Me Bug: Overflow nella memoria degli appunti e problemi con l'UDP remoto da un attacker che invia 80.000 bytes a una delle porte TCP aperte da CheckBO sul computer della vittima. CheckBO inoltre puo' essere trasformato in uno "scanner tcp" e la pagina con le statistiche di attacco sul sito puo' essere riempita di dati customizzati e persino spoofati. Date: 20 Apr 2001 Author: Luigi Auriemma e-mail: aluigi@autistici.org web: aluigi.org ###################################################################### 1) Introduzione 2) Bug 3) Il Codice 4) Fix ###################################################################### =============== 1) Introduzione =============== CheckBo e' un'applicazione freeware, abbastanza diffusa in Italia, per monitorare possibili attacchi o scanning fatti da script-kiddies. Sfortunatamente il programma utilizza un metodo pericoloso per effet- tuare tali controlli. Infatti esso apre e rimane in ascolto su alcune porte comunemente utilizzate da trojans (12345, 31337 e cosi' via). Quindi questo programma oltre a non essere sicuro, porta nuovi bugs e soprattutto crea panico nell'utente meno esperto. Il programma resta in binding sulle porte seguenti: 54320, 54321 UDP, 31337 UDP, 20034, 12345, 12346, 31337, 31666, 1243 e 6713. ###################################################################### ====== 2) Bug ====== A] Memo overflow (?) ====================== Il primo bug non e' un reale overflow ma una cattiva gestione dello spazio degli appunti sui sistemi Win9x/Me. Il problema e' che CheckBo mostra tutti i dati inviati dalla connes- sione dell'attacker alle sue porte utilizzando lo spazio di memoria degli appunti di Windows. Cosi' l'attacker semplicemente invia una gran quantita' di dati ad una delle porte del computer vittima, e CheckBo dopo svariati messaggi di allerta mostrera' all'utente un ultima finestra di errore in cui si fa' riferimento ad un overflow nella memoria degli appunti ed il pro- gramma si chiudera' automaticamente. La grandezza minima di questi dati deve essere almeno di 80.000 bytes. Tale bug comunque non e' da imputare completamente a CheckBo ma ai sistemi Win9x/Me che hanno tale problema. B] Programma di difesa o di attacco? ==================================== Questo programma puo' essere trasformato con facilita' da uno strumen- to di difesa in un tool di attacco. Quando qualcuno cerca di connettersi ad una porta su cui CheckBo e' in ascolto, il programma iniziera' a prendere informazioni sull'host re- moto. Prima di tutto verra' risolto l'IP in nome host e successivamente ver- ra' eseguito uno scanning alla ricerca di alcuni servizi sull'host attaccante: - 139 = Windows Netbios - 1503 = Netmeeting calls (?) - 80 = Http - 12345 = Netbus - 31337 = Backorifice Quindi si puo' facilmente immaginare che un attacker che vuole diver- tirsi con la vittima puo' inviare un semplice pacchetto UDP spoofato alle porte 31337 e 54321 della vittima. Il miglior risultato comunque lo si ottiene inviando pacchetti UDP con sia il sorgente che il destinatario uguali (ossia con l'IP della vit- tima) in modo che CheckBo inizi un loop infinito su se stesso alla ricerca di informazioni 8-) (questo puo' essere persino contato come un altro bug...) C] Pagina delle statistiche customizzabile ========================================== CheckBo ha un'interessante opzione (attivata di default) che e' usata per inviare dei log degli attacchi subiti al server di CheckBo log.checkbo.com. Esso invia un pacchetto UDP alla porta 14188 del server e questa e' la struttura di tale pacchetto utilizzando il linguaggio C: "%s ; %t ; Remote IP: %s ; %s ; Port: %d ; Local Port: %d ; Type: %s" Invece il seguente e' un pacchetto di esempio: < 43 68 65 63 6b 42 4f 2d 31 2e 35 35 43 46 20 3b # CheckBO-1.55CF ; < 20 57 65 64 20 4a 75 6c 20 30 34 20 30 35 3a 31 # Wed Jul 04 05:1 < 35 3a 32 34 20 31 39 38 34 0a 20 3b 20 52 65 6d # 5:24 1984. ; Rem < 6f 74 65 20 49 50 3a 20 31 39 32 2e 31 36 38 2e # ote IP: 192.168. < 30 2e 32 20 3b 20 44 4e 53 20 6e 6f 6e 20 64 69 # 0.2 ; DNS non di < 73 70 6f 6e 69 62 69 6c 65 20 3b 20 50 6f 72 74 # sponibile ; Port < 3a 20 31 30 38 33 20 3b 20 4c 6f 63 61 6c 20 50 # : 1083 ; Local P < 6f 72 74 3a 20 32 30 30 33 34 20 3b 20 54 79 70 # ort: 20034 ; Typ < 65 3a 20 41 74 74 61 63 63 6f 20 4e 65 74 42 75 # e: Attacco NetBu < 73 20 50 52 4f # s PRO Tutti i campi sono stringhe quindi noi possiamo inserire QUALSIASI COSA VOGLIAMO in ognuno di essi. Naturalmente questo sistema e' molto insicuro per il server che puo' andare giu' molto facilmente 8-) La pagina delle statistiche puo' essere visitata qui: http://www.checkbo.com/statat.asp ###################################################################### ============ 3) Il Codice ============ Scarica questo file zip: http://aluigi.org/poc/checkbo.zip Per il bug A] si possono utilizzare anche questi due metodi: 1) perl -e ' for($i=1;$i<80000;$i++) { print "A"; }' | nc 12345 2) nc 12345 80Kbfile.txt Per il problema B] basta utilizzare un semplice UDP spoofer come HPing2 che puo' essere prelevato da: http://www.kyuzz.org/antirez/hping2.html ###################################################################### 4) Fix No fix. Suggerisco di non utilizzare tale programma in quanto inutile e pericoloso. ######################################################################