
[ Home | Liste | F.A.Q. |
Risorse | Cerca... ]
Archivio: Novembre 2001 ml@sikurezza.org Soggetto: Re: weird Windows 2000/XP bug [test addizionali] Mittente: F.Vigo - L.Girardi Data: 3 Nov 2001 17:45:27 -0000
Dopo aver letto i precedenti posts e la discussione su Vuln-Dev, abbiamo analizzato in modo piu' approfondito il bug del prompt dei comandi di Windows 2000. Questo e' quanto siamo riusciti ad ottenere. OVERVIEW: Il Bug colpisce il Command Prompt di Windows NT/2000/XP. Il CMD.EXE e il Command.com crashano se una stringa contenente almeno un carattere di tabulazione (ASCII/HEX 09), seguito da una sequenza di backspaces (ASCII/HEX 08) e da un carattere casuale viene visualizzata sullo standard output o lo standard error. In questo caso Windows NT4 si blocca con la classica schermata blu, mentre 2000 e XP si riavviano immediatamente. Windows 98 sembra essere immune al problema, cosi' come la sua modalita' DOS (modalita' provvisoria con prompt dei comandi). SISTEMI TESTATI: Microsoft Windows 98 (NON VULNERABILE) Microsoft Windows 98 in modalita' DOS (NON VULNERABILE) Microsoft Windows ME (NON VULNERABILE) Microsoft Windows NT4 Workstation (crash) Microsoft Windows NT4 server (crash) Microsoft Windows 2000 Professional (reboot) Microsoft Windows 2000 Server (reboot) Microsoft Windows 2000 Advanced Server (qualcuno dice che non e' vulnerabile, ma lo abbiamo testato senza service packs ed e' risultato affetto dal bug) Microsoft Windows XP Professional (reboot) Il numero dei BackSpaces da scrivere dipende da quanti caratteri sono presenti nel Buffer del prompt dei comandi: per eseguire con successo il crash l'utente deve scrivere ALMENO un BS in piu'. In questo caso, infatti, il cursore dovrebbe andare a puntare all'inizio della memoria del Buffer, ma a causa della tabulazione esso si sposta in qualche area di memoria antecedente ad esso. Quindi il carattere che viene scritto successivamente blocca il sistema. Nell'esempio postato sul Vuln-Dev, ovvero un programma in C che genera come output la riga "\t\b\b ", il crash avviene perche', eseguendolo via "doppio click", il programma viene inizializzato dentro un prompt dei comandi vuoto, ed e' necessario un solo carattere in piu' per uscire dal buffer. Da sottolineare che non c'entra il compilatore: siamo riusciti a far riavviare il sistema anche con uno script in perl e con un semplicissimo file .BAT, che abbiamo anche inviato via e-mail senza ricevere notifiche dal Norton Antivirus e dal McAfee. Il file .BAT contiene solo una linea: In Esadecimale: 65 63 68 6F 20 09 08 08 08 [MOLTI 08] 61 61 In ASCII : echo [tab][bs][bs][bs]...[bs]aa NOTA: Compilando il programma in C sotto CYGWIN ed eseguendolo il sistema non si blocca, ma, ridirigendo il suo output su un file e poi visualizzandolo col comando TYPE si'. Questo e' dovuto probabilmente al fatto che gli eseguibili compilati con esso girano in una qualche modalita' protetta. TEST AGGIUNTIVI: Abbiamo eseguito numerosi test per cercare di capire fino a che punto questo bug possa influire sulla sicurezza. La prima cosa che abbiamo fatto e' stato capire se funziona anche nel caso che il processo venga eseguito in background e non in una finestra di prompt: abbiamo utilizzato il comando AT per impostare un'operazione pianificata (ovvero l'esecuzione del file .BAT) e il sistema si e' riavviato, anche se nessun utente era loggato. Poi abbiamo lanciato un NetCat in ascolto su una porta e, connettendoci da un altro pc, abbiamo inviato una stringa contenente un paio di [Tab], molti backspaces e qualche carattere casuale. Il sistema si e' riavviato. Infine abbiamo configurato una macchina con Windows 2000 Advanced Server (senza service packs) con IIS 5 non patchato, vulnerabile all'unicode bug. Dopo aver trasferito il file incriminato attraverso FTP (cosa fattibile da remoto anche tramite tftp o netbios sfruttando il bug dell'unicode), abbiamo inviato alla porta web questa stringa: GET /scripts/..%c0%af../winnt/system32/cmd.exe?+/C+c:\crash.exe Il sistema si e' riavviato. Probabilmente con una maggiore conoscenza del kernel di Windows e un saggio uso del debugger si potrebbero trovare nuovi metodi per sfruttare questo bug. ----- Luca Girardi - l.girardi@anti-idle.com Francesco Vigo - f.vigo@anti-idle.com ________________________________________________________ http://www.sikurezza.org - Italian Security Mailing List
[ Home | Liste | F.A.Q. |
Risorse | Cerca... ]
www.sikurezza.org - Italian Security Mailing List
(c) 1999-2005