Alternate Data Stream (ADS)INTRODUCCIÓNDebido a su estabilidad, funcionalidad y el alto nivel de seguridad que nos proporciona, el sistema de archivos NTFS es el preferido y utilizado en prácticamente todas las plataformas NT, W2000 y XP.
Una de las caracterÃsticas desconocidas en el sistema de archivos NTFS son los "alternate data streams" (ADS) los cuales existen por compatibilidad con el sistema de archivos "Macintosh Hierarchical File System" (HFS) y se usan para mantener información asociada con un fichero: iconos por ejemplo.
Microsoft da los medios de creación para ADS's especÃficas a través de Windows Explorer tal y como veremos posteriormente, pero las herramientas necesarias para detectar la presencia de ADS's arbitrarias están "misteriosamente" ausentes. El sistema operativo tiene la funcionalidad nativa y ciertas herramientas para permitir a un usuario crear ADS's y ejecutar código oculto en estos "streams". En el artÃculo Q101353 se reconoce que el API Win32 soporta ADS's incoherentemente.
Veamos en detalle cómo crear y manipular y cómo ocultar código en ADS's que puede ser ejecutado.
Existen ligeras diferencias en el tratamiento de ADS's entre NT, W2000 y XP. Las pruebas y ejemplos presentados en este documento se refieren a XP.
CREANDO UN ADSLa sintaxis de creación es relativamente sencilla. Para crear un ADS asociado con un fichero, por ejemplo: fichero.txt, simplemente añadir a continuación el carácter de dos puntos ":" y el nombre "stream".
Vamos a crearnos un directorio de trabajo llamado ADS. Para ello, abrimos una consola de comandos (Inicio->Ejecutar->cmd) y tecleamos:
cd \
md ads
cd ads
La creacion más simple es:
C:\ADS>echo este es un texto de prueba > fichero.txt:oculto
Si a continuación ejecutamos un "dir" o bien accedemos a él con el explorador, veremos únicamente el fichero: "fichero.txt" con tamaño cero.
Si ejecutamos:
more < fichero.txt:oculto
nos mostrará el contenido real del stream: "este es un texto de prueba".
demás, un ADS puede crearse usando el contenido de otro fichero. Por ejemplo:
C:\ADS>echo este es otro texto de prueba > texto.txt
C:\ADS>type text.txt > fichero.txt:oculto2
Podemos comprobar otra vez el fichero mediante el comando "more". Si intentamos abrir el fichero de texto, fichero.txt mediante el Notepad, por ejemplo, veremos que nos da mensajes extraños de petición de creación del archivo (que ya existe!!!!)
Curiosamente, aunque con un dir, o con el explorador, solo veamos un archivo de tamaño cero llamado fichero.txt, podremos comprobar con los comandos:
more < fichero.txt:oculto
more < fichero.txt:oculto2
que existen realmente los dos contenidos que hemos guardado previamente.
Pueden crearse igualmente ADS's asociados a la propia carpeta o directorio si no damos nombre de fichero. Es decir:
C:\ADS>echo Este ADS se crear para el directorio > :oculto
Exactamente igual, podremos crear ADS's, que en vez de contener texto, contengan código ejecutable:
C:\ADS>type c:\windows\notepad.exe > fichero.txt:np.exe
C:\ADS>type c:\windows\system32\sol.exe > fichero.txt:sol2.exe
De la misma forma, ficheros de imágenes, de audio o cualquier otro flujo de datos pueden ocultarse en ADS's
Antes de continuar con las herramientas necesarias para poder ver los ADS's creados, (ya que hasta el momento, estamos "ciegos". Solo podemos ver un archivo llamado "fichero.txt" con tamaño cero... Pero realmente tenemos dos archivos de texto y dos con código ejecutable), hemos visto el comando "more" para los de texto. Para los otros dos, podemos ejecutarlos tecleando:
C:\ADS>start .\fichero.txt:np.exe (evidentemente ejecuta un Notepad)
C:\ADS>start .\fichero.txt:sol2.exe (nos ejecutará el solitario)
Debemos fijarnos que ambos ficheros, aunque no los veamos, son reales. No son un "enlace" a los originales, sino que contienen el código real del Notepad y del solitario.
Si somos un poco osados, podemos guardar el código de un virus en uno de estos archivos, y si ejecutamos un antivirus, veremos que sorprendentemente NO lo localiza.
Aunque parezca que es dificil la ejecución de un ADS, es sencillÃsimo el comprobar que no es asÃ. En particular las rutinas en un script de VB se ejecutan perfectamente. Por ejemplo podemos crear:
C:\ADS>echo MsgBox "Prueba de mensaje en VB" > fichero.txt:codigo.vbs
Y ejecutar:
C:\ADS>start .\fichero.txt:codigo.vbs
CREACIÓN DE ADS'S CON LAS HERRAMIENTAS DE WINDOWSPodemos igualmente crear un fichero de texto normal con el Notepad. Creemos un fichero llamado prueba.txt en la carpeta ADS anterior, una vez creado, lo salvamos y miramos su tamaño exacto en bytes. Posteriormente con el explorador de Windows, con el botón derecho sobre él, propiedades, en la última pestaña, cumplimentamos los datos de tÃtulo, autor, etc….
Sorprendentemente podemos comprobar que el tamaño del archivo no ha variado. La pregunta es entonces: ¿Dónde se guardan los datos que hemos añadido como propiedades de dicho archivo?. La respuesta es sencilla: en unos ADS's que el sistema automáticamente crea.
¿CÓMO PODEMOS VER LOS ADS'S?Existen varias herramientas para poderlo verificar. En particular el clásico streams.exe de Wininternals. Pero es una herramienta engorrosa de manejar. La herramienta más sencilla es debida a Frank Keyne y es el programa
Para ver los enlaces debes ser usuario
Crear Usuario o
Hacer SesionLADS.EXE
Descargando el programa desde el link anterior, podemos ejecutarlo sobre la carpeta ADS creada anteriormente y nos mostrará los ADS creados con los ejemplos anteriores.
C:\ADS>LADS
LADS - Freeware version 3.10
This program lists files with alternate data streams (ADS)
Use LADS on your own risk!
Scanning directory I:\ADS\
size ADS in file
---------- ---------------------------------
38 I:\ADS\fichero.txt:codigo.vb
35 I:\ADS\fichero.txt:codigo.vbs
28 I:\ADS\fichero.txt:oculto
116 I:\ADS\prueba.txt:?DocumentSummaryInformation
172 I:\ADS\prueba.txt:?SummaryInformation
0 I:\ADS\prueba.txt:{4c8cc155-6c1e-11d1-8e41-00c04fb9386d}
389 bytes in 6 ADS listed
Tal y como hemos visto, los ADS's son una caracterÃstica de los archivos NTFS para compatibilizar con HFS. Sin embargo, la pérdida de "visibilidad" que esta caracterÃstica posee tiene un riesgo potencial bastante elevado para los Administradores del sistema.
Debemos tener presente que no todas las herramientas, ni tan siquiera de Windows, son capaces de tratar correctamente los ADS's. Por ejemplo, los defragmentadores, no defragmentarán dichos archivos. Los antivirus, la mayorÃa de ellos, no diagnostican virus en los ACL's, y los que son capaces de diagnosticarlos no tienen capacidad para eliminarlos. Los fabricantes de antivirus empiezan a ser conscientes de esta problemática y en breve serán capaces de tratarlos.
saludos