[ Home | Liste | F.A.Q. | Risorse | Cerca... ]


[ Data: precedente | successivo | indice ] [ Argomento: precedente | successivo | indice ]


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