EL RACÓ DE L'EXPLOIT

 

per Àlex Castán Salinas
acastan@xtec.net

 

*--------------------*
|                    |
|  El teu ordinador  |
|      és mort...    |
| i abans estava viu |
|     _______        |
|    |.-----.|       |
|    ||x . x||       |
|    ||_.-._||       |
|    `--)-(--'       |
|   __[=== o]___     |
|  |:::::::::::|\    |
|  `-=========-'()   |
|                    |
| No hauries d'haver |
|    instal·lat :    |
|                    |
|  -= M$'Windows =-  |
*--------------------*

 

 

 

Vulnerabilitat: La implementació inconsistent dels "Alternate Data Streams" a l'API de Windows permet executar codi de manera amagada.

 

Afecta a: Windows NT 4.0, 2000 i XP

No afecta a: Windows 95, 98 i Me

 

Aquest títol tan estrany vol dir, explicat de manera molt breu, que el sistema de fitxers de Windows NT ens permet crear fitxers amb un nom especial, que no es poden veure amb l'explorador de Windows, encara que continuem tenint accés a ells i podem executar-los.

Aquest text ha estat elaborat a partir d'un escrit aparegut a la revista Phrack 60, que trobareu a http://patriot.net/~carvdawg/docs/dark_side.html.

 

Introducció

El sistema de fitxers preferit de les plataformes NT (Windows NT 4.0, 2000 i XP) és el NTFS. Aquest sistema de fitxers és el que utilitzen per defecte, encara que també poden treballar amb els sistemes de fitxers FAT16 i FAT32.

Una característica del sistema de fitxers NTFS són els "Alternate Data Streams" (ADS a partir d'ara), que proporcionen compatibilitat amb el sistema de fitxers HFS de Macintosh. Els ADS els podríem veure com un conjunt de fitxers amagats associats a un fitxer, i són emprats per diverses aplicacions. Per exemple, els antivirus acostumen a guardar els codis de comprovació d'infecció per cada fitxer a un ADS associat a aquest fitxer. Un altre exemple: algunes aplicacions gràfiques guarden miniatures de les imatges en ADS associats als fitxers de les imatges. De fet, els ADS són el lloc perfecte per guardar metadades associades a un fitxer.

Bé, ja hi ha prou d'introducció. Si voleu saber més sobre els ADS:

- http://www.winnetmag.com/Articles/Print.cfm?ArticleID=15900

- http://www.winnetmag.com/Articles/Print.cfm?ArticleID=19878

- http://www.kaspersky.com/news.asp?tnews=0&nview=1&id=110

- ADS FAQ a http://www.heysoft.de/

 

Vulnerabilitat

Resulta que Windows permet crear ADS tant a través de l'explorador de Windows com mitjançant la línia de comandes, encara que després no proporciona a l'usuari les eines que permeten detectar-los. Podem tenir un fitxer d'un byte al seu ADS principal i un centenar de megabytes a la resta dels seus ADS associats. La comanda 'dir' o l'explorador de Windows mostraran que la mida d'aquest fitxer és d'un byte!

http://support.microsoft.com/default.aspx?scid=kb;EN-US;q101353

Per crear un ADS associat a un fitxer, basta separar el nom del fitxer del nom de l'ADS per dos punts ':'. Per exemple:

c:\temp> echo Això es un fitxer normal > fitxer.txt
c:\temp> echo Això es un ADS > fitxer.txt:amagat.txt

(Incís: Si tenim un fitxer amb un nom que és una única lletra, el sistema pot interpretar-la com el nom d'una unitat de disc i llavors no crear l'ADS. Exemple: si tenim un fitxer que es diu 'c', la comanda 'type fitxer.txt > c:amagat.txt' no crearà l'ADS 'amagat.txt' associat al fitxer 'c', sinó un fitxer 'amagat.txt' a la unitat de disc 'c:'.)

Cap variació de la comanda MS-DOS 'dir' ni cap opció de l'explorador de Windows permet detectar l'ADS. Comprovem que no podem veure-ho:

c:\temp> dir

Directori de C:\temp

22/01/2003 23:24 <DIR> .
22/01/2003 23:24 <DIR> ..
22/01/2003 23:24 27 fitxer.txt
1 arxiu 27 bytes

Però encara existeix i podem accedir:

c:\temp> notepad fitxer.txt:amagat.txt

De la mateixa manera podem associar un ADS a un directori:

c:\temp> echo Això es un ADS associat a un directori > :amagat
c:\temp> notepad :amagat

I a més a més, el contingut d'un ADS no està limitat a text, sinó que pot ser qualsevol dada: executables, imatges, fitxers de so, etc. Per exemple:

c:\temp> type c:\winnt\notepad.exe > fitxer.txt:amagat.exe
c:\temp> start .\fitxer.txt:amagat.exe

Cal dir, però, que els permisos d'un ADS (creació, visualització, escriptura i esborrat) són els mateixos que els del fitxer associat a l'ADS. Per exemple, si un usuari no té permís d'escriptura sobre un fitxer, llavors no podrà afegir un ADS a aquest fitxer.

També cal dir que l'ADS associat a un fitxer desapareixerà si movem aquest fitxer a un disc o partició amb sistema de fitxers FAT. No desapareixerà l'ADS, en canvi, quan movem aquest fitxer a una partició amb sistema de fitxers NTFS.

Per últim, val a dir que un mateix fitxer pot tenir associats varis ADS. Si heu seguit els exemples que he donat, ara mateix el fitxer 'fitxer.txt' té associats els ADS 'amagat.txt' i 'amagat.exe'. Ho podeu comprovar amb l'eina gratuïta 'lads', que trobareu a http://www.heysoft.de/, i que és de les poques eines que permet llistar ADS:

c:\temp> lads

LADS - Freeware version 3.21 (C) Copyright 1998-2003 Frank Heyne Software

Scanning directory C:\temp\

size ADS in file
---------- ---------------------------------
51472 c:\temp\fitxer.txt:amagat.exe
17 c:\temp\fitxer.txt:amagat.txt
40 c:\temp\:amagat

51529 bytes in 3 ADS listed

Podem executar un ADS amb la comanda 'start':

c:\temp> start fitxer.txt:amagat.exe

Però Windows 2000 i Windows XP donaran un error si no escrivim també el camí de l'executable:

c:\temp> start c:\temp\fitxer.txt:amagat.exe

o bé

c:\temp> start .\fitxer.txt:amagat.exe

Si executem l'administrador de tasques de Windows NT 4.0 o Windows 2000 (prement la combinació de tecles CTRL+ALT+SUPR), veurem que a la llista de processos apareix 'fitxer.txt', i a la llista d'aplicacions 'notepad.exe', quan el que realment s'està executant és l'ADS 'amagat.exe'. Només l'administrador de tasques de Windows XP mostra a la llista de processos 'fitxer.txt:amagat.exe'.

 

Com explotar la vulnerabilitat

Senzillament amagant el nostre troià o executable associant-lo mitjançant ADS a qualsevol fitxer inofensiu del sistema, per desprès llençar la seva execució.

Podem fer que l'execució es llenci de manera automàtica. Les diverses maneres d'executar automàticament un programa a Windows (hi ha 10 o més) les trobareu a http://www.xtec.net/~acastan/textos/Exploit%20Autoinici.html.

Podem fer també que sigui el mateix usuari qui llenci l'execució. Per exemple, podeu crear un accés directe a algun fitxer a l'escriptori (per exemple 'c:\temp\fitxer.txt'), i després canviar a les propietats de l'accés directe el seu destí, escrivint el camí de l'ADS que conté el vostre troià (per exemple 'c:\temp\fitxer.txt:amagat.exe'). Veureu que quan heu canviat el camí, la icona d'accés directe també canvia, segons sigui el nou tipus de fitxer al que l'heu associat. Així, si voleu que el vostre troià passi desapercebut, haureu de posar una icona adient al seu executable.

Un altre exemple, que obrirà una finestra amb un missatge:

c:\temp> echo MsgBox "VBasic Script per provar ADS" > fitxer.txt:provavbs.txt
c:\temp> wscript //E:vbs fitxer.txt:provavbs.txt

Finalment, cal dir que l'explorador de Windows permet als usuaris crear un ADS molt específic associat a un fitxer. Haurem de clicar amb el botó dret del ratolí sobre el fitxer i seleccionar l'opció 'propietats' dins el menú contextual. A la pestanya 'resum' trobarem uns quants camps per introduir informació i comentaris del fitxer. Això crearà un ADS anomenat '?SummaryInformation' (cal substituir '?' pel caràcter 'trèvol').

LADS - Freeware version 3.21 (C) Copyright 1998-2003 Frank Heyne Software

Scanning directory C:\temp\

size ADS in file
---------- ---------------------------------
120 c:\temp\fitxer.txt:?SummaryInformation
51472 c:\temp\fitxer.txt:amagat.exe
17 c:\temp\fitxer.txt:amagat.txt
46 c:\temp\fitxer.txt:provavbs.txt
0 c:\temp\fitxer.txt:{4c8cc155-6c1e-11d1-8e41-00c04fb9386d}
40 c:\temp\:amagat

51695 bytes in 6 ADS listed

Com a curiositat vull dir que ja s'ha creat algun virus que aprofita aquesta vulnerabilitat. Els primers autors van ser Benny i Ratter del grup 29A. Els virus que s'amaguen a ADS, continuen sent detectables pels antivirus residents quan es manifesten per intentar infectar, però passen inadvertits quan s'analitza el sistema de fitxers amb un antivirus no resident:

- http://vx.netlux.org/29a/29a-5/29a-5.601

- http://www.viruslist.com/eng/viruslist.html?id=4078

- http://www.viruslist.com/en/news?id=657

 

EL PEGAT

De moment no hi ha solució, excepte tenir cura dels permisos dels usuaris sobre els fitxers, per tal que no puguin crear ADS. Microsoft ha anunciat que caldrà esperar a la pròxima versió de Windows perquè l'explorador implementi bé el suport dels ADS. De moment, hi ha vàries eines que ens permeten detectar arxius ocults als streams:

- Lads (gratuïta) és la millor, i la trobareu a http://www.heysoft.de/.

- Sfind (gratuïta), que trobareu a http://www.foundstone.com/, dins el paquet 'forensic toolkit'.

- Streams (gratuïta), que trobareu a http://www.sysinternals.com/, dins l'apartat 'NT/W2k/XP miscel·lània'.

- CrucialADS (gratuïta), que trobareu a http://www.crucialsecurity.com/, i que té interfície gràfica.


Copyleft © Alejandro Castán Salinas

Es concedeix el permís per copiar, distribuir i/o modificar aquest document sota els termes de la llicència de documentació lliure GNU, versió 1.2 o qualsevol altra versió posterior publicada per la Free Software Foundation.

Podeu consultar dita llicència a http://www.gnu.org/copyleft/fdl.html.

 

El contingut d'aquest document pot canviar degut a ampliacions i a correccions enviades pels lectors. Trobareu sempre la ultima versió del document a http://www.xtec.net/~acastan/textos/index.html.