Flujos de datos alternativos en Windows (Alternate Data Streams ADS)

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.

Flujos de datos alternativos en Windows (Alternate Data Streams ADS)

Flujos de datos alternativos en Windows (Alternate Data Streams ADS)

¿Qué son los flujos de datos alternativos (Alternate Data Streams) en Windows?

Datos que casi no se ven en Windows con los Flujos de datos alternativos

Datos que casi no se ven en Windows con los Flujos de datos alternativos

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:

  • Los flujos de datos alternativos no se pueden ver (solo el flujo principal o fichero principal) usando el Explorador de Windows o navegando por el PC con Windows normalmente, solo con programas especiales o con el símbolo del sistema o PowerShell.
  • El flujo de los datos alternativos asociados a un archivo, por grandes que sean, no aumentan el tamaño del fichero original (ni su fecha y hora de creación o similares).
  • Los flujos de datos alternativos están diseñados inicialmente para almacenar información y que esta quede escondida a los ojos del usuario (y no me refiero solamente a atributos clásicos como de solo lectura, oculto, etc.). Realmente es posible esconder un vídeo (por poner un ejemplo) en un fichero de texto de pocos bytes y casi nadie sabrá que está ahí.
  • Estos flujos de datos alternativos solo se conservan si el ordenador tiene el sistema de ficheros NTFS en el disco duro (que es lo más habitual en los PCs con Windows) o discos extraíbles. Si por ejemplo lo copias a un USB o disco duro con otro sistema de ficheros como FAT o FAT32, etc. estos datos asociados se pierden. Lo mismo ocurre, por ejemplo, si comprimes un fichero con zip: no incluye los flujos de datos alternativos. Seguro que te suena haber visto un mensaje como este:
¿Confirma que desea copiar el archivo sin las propiedades? Es por los Alternate data streams o flujos de datos alternativos que el archivo puede tener

¿Confirma que desea copiar el archivo sin las propiedades? Es por los Alternate data streams o flujos de datos alternativos que el archivo puede tener

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.

¿Cómo ver los flujos de datos alternativos a un fichero o carpeta en Windows o añadirlos?

Cómo ver los flujos de datos alternativos en Windows (a partir de Windows Vista)

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.

Alternate Data Stream View

Alternate Data Stream View

Si usas el símbolo del sistema (que no requiere instalar nada)

Listado normal de ficheros con dir

Listado normal de ficheros con dir

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

Listado normal de ficheros con dir /r (ya fon flujos de datos alternativos)

Listado normal de ficheros con dir /r (ya fon flujos de datos alternativos)

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.

Cómo añadir un flujo de datos alternativo (Alternate Data Stream)

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

Añadiendo un flujo de datos alternativo con echo en Windows

Añadiendo un flujo de datos alternativo con echo en Windows

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:

Abriendo con el bloc de notas el flujo de datos alternativo en Windows

Abriendo con el bloc de notas el flujo de datos alternativo en Windows

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.

Separador del flujo de datos alternativo (Alternate data streams)

Separador del flujo de datos alternativo (Alternate data streams)

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

Añadiendo un flujo de datos alternativo con un PDF en Windows

Añadiendo un flujo de datos alternativo con un PDF en Windows

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.

Añadiendo un flujo de datos alternativo con un vídeo de casi 500 MB en Windows

Añadiendo un flujo de datos alternativo con un vídeo de casi 500 MB en Windows

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:

Añadiendo un flujo de datos alternativo con un fichero de imagen JPG en Windows

Añadiendo un flujo de datos alternativo con un fichero de imagen JPG en Windows

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).

Abriendo en Microsoft Paint el flujo de datos alternativo con un fichero JPG

Abriendo en Microsoft Paint el flujo de datos alternativo con un fichero JPG

¿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:

Añadir un flujo de datos alternativo a una carpeta en Windows (Alternate Data Stream)

Añadir un flujo de datos alternativo a una carpeta en Windows (Alternate Data Stream)

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

Añadir un ejecutable a un flujo de datos alternativo

Añadir un ejecutable a un flujo de datos alternativo

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:

  1. Crear un enlace simbólico por ejemplo de nombre instalaAcrobat.exe (por ejemplo) que esté asociado al flujo de datos alternativo en el que está el archivo ejecutable (mklink instalaAcrobat.exe “Texto inicial.txt”:instalarAcrobat.exe).
  2. Crear un ejecutable (por ejemplo instalarAcrobat2.exe) con el contenido de ese enlace (type instalaAcrobat.exe > instalarAcrobat2.exe)
  3. Lanzar el ejecutable creado invocando su nombre (en este ejemplo exe). Inmediatamente se lanza la aplicación, sea cual sea.

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.

Instalar y lanzar un ejecutable guardado en un flujo de datos alternativo en Windows

Instalar y lanzar un ejecutable guardado en un flujo de datos alternativo en Windows

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.

Compartir en redes sociales

Pinterest

9 respuestas a Flujos de datos alternativos en Windows (Alternate Data Streams ADS)

  • 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. Brillante cimi siempre sorprendiendo.

  • 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.

  • 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!!!

Deja un comentario

Seguir a ChristianDvE en Twitter
 TwitterFacebookYouTubePinterestInstagramFeed
Periscope
Recibe por correo electrónico los nuevos contenidos para no perderte ninguno

Dirección de mail:

Sígueme (si quieres) también en Feedly
Archivos
Creative Commons
Los contenidos de este blog se encuentran bajo una Licencia Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported.