Los flujos de datos alternativos (Alternate Data Streams – ADS) en Windows son una característica muy poco conocida del sistema de ficheros NTFS usado en Windows y que permite guardar archivos ocultos dentro de un fichero o carpeta.
Realmente los flujos de datos alternativos ofrecen interesantes opciones para esconder información en el ordenador y que sea difícil de encontrar (tanto para bien como para mal).
¿Sabes cómo se añaden o consultan los flujos de datos alternativos en Windows? ¿Sabes si tienes flujos de datos alternativos en tu disco duro? Seguro que sí… aunque no lo sepas.
Los flujos de datos alternativos en Windows (Alternate Data Streams) son informaciones adicionales asociadas a un fichero o carpeta y que, pudiendo ser de cualquier tipo (de texto, imágenes, vídeos, PDFs, documentos de Office, etc.) no son visibles directamente.
Lo más habitual es que sea el propio sistema operativo Windows o los diferentes programas (como por ejemplo los antivirus) los que añadan esta información adicional a los ficheros o directorios, que permanece oculta a la vista de los usuarios en todo momento.
Los flujos de datos alternativos funcionan desde Windows XP (con algunas particularidades) hasta el más moderno Windows 10, pasando por Windows 7, Windows 8 y Windows 8.1.
Si por ejemplo añades un flujo de datos alternativo con una cierta información o incluso con una imagen, un ejecutable, etc. a un fichero de un cierto tamaño, tras hacerlo, el archivo original constará como que sigue teniendo el mismo peso y que nada ha cambiado. Sorprendente pero es así.
Otros sistemas de ficheros como HFS+ (sistema de ficheros de los ordenadores de Apple con macOS), ext3 (Linux), etc. también tienen características similares pero los flujos de datos alternativo en NTFS tienen muchas opciones y son la opción que más versatilidad ofrece.
Es importante destacar algunos puntos:
Un ejemplo muy claro de información asociada en un flujo de datos alternativo a un determinado fichero es si ha sido descargado de Internet. Cada archivo descargado de Internet tiene un flujo de datos alternativo con el valor Zone.Identifier, que indica de dónde proviene.
Puede ser:
Valor del Zone.Identifier
0 Mi PC
1 Zona de Internet local
2 Zona de páginas de confianza
3 Zona de Internet
4 Zona de páginas restringidas
Por eso cuando instalas un programa, por ejemplo, te indica de dónde procede (de tu disco duro, de Internet, etc.). Esa información la extrae de los flujos de datos alternativos del fichero.
Es sencillo, si bien hay que recurrir al símbolo del sistema (la “pantalla fea negra”), PowerShell o incluso hay programas como Alternate Stream View.
Si usas el símbolo del sistema (que no requiere instalar nada)
Si listas los archivos que hay en una carpeta con el comando dir
Se puede ver que hay diferentes archivos: una imagen formato JPG, un vídeo MP4, un PDF, un ejecutable .EXE y un fichero de texto de 38 bytes:
Para ver los ficheros que hay con los flujos de datos alternativos existentes tienes que poner:
dir /r
Se aprecia que hay más resultados con los mismos nombres de los ficheros y con :(un texto) y siempre el :$DATA. Se puede ver un zone.identifier en el ejecutable por ejemplo o que los otros tienen flujos de datos alternativos (Alternate data streams) que parece que los ha añadido Dropbox.
dir /r solo funciona a partir de Windows Vista (y posteriores). En Windows XP y anteriores hay que usar el comando streams que está en la herramienta externa de Microsoft Sysinternals.
Para añadir un flujo de datos alternativo a un fichero, por ejemplo el “Texto inicial.txt” solo hay que añadirlo bien desde la consola (con el comando echo) o desde un archivo.
Por ejemplo:
echo «Hola. Inserto flujo de datos alternativo al fichero» > «Texto inicial.txt»:MiTextoSecreto.txt
Es importante añadir el separador : y el nombre del flujo de datos alternativo y, por supuesto, hacer referencia al flujo de datos principal (en este caso, el documento de texto “Texto inicial”).
Si se hace un dir /r, puedes ver cómo hay un dato nuevo asociado al fichero de texto con el nombre MiTextoSecreto.txt. Es un flujo de datos alternativo que contiene la información añadida.
38 Texto inicial.txt
56 Texto inicial.txt:MiTextoSecreto.txt:$DATA
Si intentas abrir ese flujo de datos alternativo con el bloc de notas, por ejemplo (ya que es un txt) y tecleas: notepad «Texto inicial.txt»:MiTextoSecreto.txt, verás que se visualiza y aparece el texto añadido:
Y, lo más interesante, es que el tamaño del fichero de texto “Texto inicial.txt” no ha variado ni tampoco su fecha de actualización, que se mantiene sin cambios. No se nota nada.
¿Y qué son los :$DATA que aparecen? Todos los flujos de datos alternativos asociados al fichero principal tienen un primer separador (:) que distingue del nombre del archivo y otro al final con el indicador :$DATA.
Si ahora le añadimos un fichero PDF al txt, escondiéndolo dentro:
type Cheerson-CX-20-user-manual.pdf > «Texto inicial.txt»:Manual.pdf
De esta manera, y siempre sin cambiar nada del fichero de texto y sin que nadie vea nada desde Windows, he escondido un PDF dentro del fichero de texto. Al hacer el dir /r se puede ver que está ahí con sus casi 13 MB (asociado al fichero de 38 bytes que continúa sin modificaciones).
Lo mismo puedo hacerlo con un vídeo:
type «55 trucos de iOS-christiandve.mp4» > «Texto inicial.txt»:Video de trucos.mp4
Y al hacer un dir /r, ahí están esos más de 400 MB ocultos, que se pueden lanzar desde una aplicación de reproducción de vídeos desde el símbolo de sistema.
Por ejemplo, haciéndolo con una imagen:
type Blog-que-aporta-christiandve-2.jpg > «Texto inicial.txt»:imagen.jpg
Se añade la imagen como se puede comprobar:
Invocando el Paint, por ejemplo, por consola de comandos indicando que se quiere abrir el flujo de datos alternativo llamado imagen.jpg:
mspaint «Texto inicial.txt»:imagen.jpg
Y se visualiza la imagen escondida en el fichero de texto (que sigue con sus 38 bytes).
¿Se pueden añadir flujos de datos alternativos a directorios?
Sí. Exactamente igual. No varía nada. Solo hay que seguir la misma sintaxis, indicando en su lugar el nombre de la carpeta o directorio: el nombre del flujo de datos alternativo a crear.
Echo «Texto secreto en un directorio» > directorio2:TextoSecreto.txt
Y ahí está ese texto secreto:
La manera de proceder es la misma con los ficheros de texto, PDF, Word, Excel, etc.
Se puede incluso esconder un ejecutable y lanzarlo posteriormente. Qué miedo tener un fichero .exe escondido por ahí que no se pueda ver…
¿Cómo añadir al fichero de texto (por ejemplo) o a la carpeta o a un PDF, etc. el fichero ejecutable .exe?
Fácil. Como se ha hecho hasta ahora:
type readerdc_es_xa_cra_install.exe > «Texto inicial.txt»:instalarAcrobat.exe
Y ahí está:
En Windows XP era fácil ejecutar ese fichero. Solo había que poner start «Texto inicial.txt»:instalarAcrobat.exe
Y de esta manera se lanzaba el ejecutable creado en el flujo de datos alternativo.
En versiones posteriores (Windows Vista, Windows 7, Windows 8, Windows 8.1 y Windows 10 y posteriores) es un poco más complicado:
¿Cómo se ejecuta un fichero exe que está en un flujo de datos alternativo en Windows?
Lo que hay que hacer es:
Si se hace un dir convencional o se examina la carpeta, no se aprecia nada raro, mientras que sabemos que enlazado a ese fichero de 38 bytes de texto, cuyo contenido no ha variado, hay cientos de megabytes asociados como flujos de datos alternativos.
Esta característica del sistema de ficheros NTFS en los sistemas Windows es muy interesante para poder ocultar información a la vista de curiosos.
Con esta técnica, algo tediosa pero fácil de poner en práctica, se pueden esconder documentos importantes como por ejemplo alguno con claves, informaciones confidenciales, etc. un poco más “seguro” que en una carpeta convencional, si bien no es ese su cometido principal.
Eso sí, los flujos de datos alternativos o ADS (Alternate Data Streams) igual que pueden usarse para almacenar información, imágenes, vídeos, documentos de texto o de cualquier tipo asociado a un fichero o una carpeta con buenas intenciones, también pueden emplearse con otros fines.
Imagen inicial: Shutterstock.
Es acojonante y perdona la expresión pero no sabía nada de esto y hace años que manejo profesionalmente sistemas Windows. No entiendo el sentido de esconder cosas cuando justamente hay tanto malware suelto. He probado los que explicar tan bien paso a paso y funciona. Hace años que nadie me descubría algo que yo supiese o me sonase ya. Enhorabuena.
:-) Gracias, Jorge.
Gracias. Brillante cimi siempre sorprendiendo.
Gracias, Fran por la visita y el comentario.
Saludos.
Hola, muy interesante como siempre. Tampoco tenía ni idea de la existencia de estos ADS. Me parece alucinante que se implemente algo así, cuya finalidad no veo nada clara y que veo muchos más usos malvados que buenos. ¿Sabes a qué se debe que Microsoft haya decidido implementar una característica así de peligrosa en sus sistemas? Entiendo que algún motivo tendrán, pero no logro verlo ya que la veo como una característica peligrosa…
Muchas gracias por el artículo.
Saludos
Hola
Es cierto que puede tener muy malos usos, pero también buenos. Entiendo que el sentido principal es el de almacenar datos fuera del alcance del usuario que puedan aportar información. Afortunadamente, hace tiempo que los antivirus buscan también en los flujos de datos alternativos.
Gracias como siempre por tus comentarios, Scherzo.
Saludos.
¡Funciona! Increíble pero es verdad. Gran aporte.
Cierto, Diego, funciona ;)
Saludos.
Gracias por el aporte, nunca use el MKLINK, cree un directorio «ML» (de Muy Loco) y le agregue con echo el MSDN.ISO cinco veces con diferente extencion y luego vincule dos directorios con Mklink solo para probar, cree unos .exe con el mklink para poder verlos y SI FUNCIONA
Este es el resultado del DIR /S /R en uno de los directorios vinculados
El volumen de la unidad C es et_160gb_C
El n£mero de serie del volumen es: 069E-7266
Directorio de C:\_
28/08/2017 12:13 .
28/08/2017 12:13 ..
28/08/2017 12:12 ML
98.880 ML:c.exe:$DATA
11 ML:MSDN.ISO:$DATA
2.385.211.392 ML:MSDN.XX2:$DATA
2.385.211.392 ML:MSDN.XX3:$DATA
2.385.211.392 ML:MSDN.XX4:$DATA
2.385.211.392 ML:MSDN.XX5:$DATA
2.385.211.392 ML:MSDN.XXX:$DATA
15 ML:WINCMD32.EXE:$DATA
28/08/2017 11:02 MSDN.ISO [ML:MSDN.XXX]
28/08/2017 10:59 NORTON.EXE [ML:C.EXE]
28/08/2017 12:13 0 PROBANDO.TXT
3 archivos 0 bytes
Directorio de C:\_\ML
28/08/2017 12:12 .
98.880 .:c.exe:$DATA
11 .:MSDN.ISO:$DATA
2.385.211.392 .:MSDN.XX2:$DATA
2.385.211.392 .:MSDN.XX3:$DATA
2.385.211.392 .:MSDN.XX4:$DATA
2.385.211.392 .:MSDN.XX5:$DATA
2.385.211.392 .:MSDN.XXX:$DATA
15 .:WINCMD32.EXE:$DATA
28/08/2017 12:12 ..
0 archivos 0 bytes
Total de archivos en la lista:
3 archivos 0 bytes
5 dirs 30.254.821.376 bytes libres
Bueno, mi humilde opinión es que esto es más que para «guardar» información extra. ambos .exe funcionan excelente, normales, y modifique un .txt con el Wordpad, con Write y otros sin ningun tipo de inconvenientes, como si se tratase de un archivo VISIBLE NORMAL
EXCELENTE APORTE!!! BRAVOO!!!
Muy buena la explicación, gracias Christian
Gracias.
Todos los archivos de un disco de mi pc están duplicados, uno es el archivo original y el otro es un archivo «tipo identifier» y al final del nombre el archivo aparece este texto»_zoneidentifier» , he buscado mucha información en internet, pero nada claro, no se como solucionar esta situación, mis conocimientos al respecto no son muchos y no se si se trata de un virus o algo como tal del equipo……por favor ayuda! muchas gracias
¿No será de un anativirus o así?