> For the complete documentation index, see [llms.txt](https://4lec4st.gitbook.io/4lec4st/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://4lec4st.gitbook.io/4lec4st/ejpt-notes/pruebas-de-penetracion-de-host-y-red/ataques-basados-en-sistema-host/windows/vulnerabilidades-del-sistema-de-archivos-de-windows/flujo-de-datos-alternativos.md).

# Flujo de datos alternativos

## 💾 Alternate Data Streams (ADS) — *Flujos de Datos Alternativos*

* Los **Alternate Data Streams (ADS)** son un atributo del sistema de archivos **NTFS** (*New Technology File System*), y fueron diseñados originalmente para proporcionar **compatibilidad con el sistema de archivos HFS** (*Hierarchical File System*) de MacOS.

***

## 📄 ¿Qué son los flujos de datos en NTFS?

Cualquier archivo creado en una unidad formateada con NTFS tiene **dos flujos diferentes**:

| Tipo de flujo       | Descripción                                                         |
| ------------------- | ------------------------------------------------------------------- |
| **Data stream**     | Es el flujo por defecto, contiene **los datos reales** del archivo. |
| **Resource stream** | Contiene usualmente **los metadatos** del archivo.                  |

***

## 🕵️‍♂️ Uso de ADS por atacantes

* Los atacantes pueden abusar de los ADS para **ocultar código malicioso o ejecutables dentro de archivos legítimos**, con el fin de evadir la detección por antivirus u otras soluciones de seguridad.
* Esto se logra **almacenando el código malicioso dentro del flujo de recursos (resource stream)** del archivo, es decir, en sus metadatos, **sin afectar el funcionamiento visible del archivo principal**.

***

### 💥 Ejemplo: Ocultar un ejecutable en un `.txt` usando ADS + Link simbólico en Windows

#### 🎯 Objetivo

Ocultar `malicioso.exe` dentro de un archivo aparentemente inofensivo llamado `notas.txt`, utilizando ADS, y luego acceder al ejecutable mediante un link simbólico.

***

#### 📁 Paso 1: Preparar el archivo legítimo y el payload

Supongamos que tienes un archivo ejecutable llamado `malicioso.exe`.

```cmd
echo Archivo legítimo > notas.txt
```

***

#### 🧬 Paso 2: Ocultar el ejecutable dentro de `notas.txt` usando ADS

```cmd
copy /b malicioso.exe notas.txt:oculto.exe
```

✅ Esto no sobrescribe el contenido del archivo `notas.txt`, sino que **adjunta el ejecutable como un flujo alternativo llamado `oculto.exe`**.

***

#### ⚙️ Paso 3: Crear un **link simbólico** para ejecutar el flujo oculto

Usaremos la herramienta de Windows `mklink` para crear un acceso simbólico:

```cmd
mklink C:\Users\Public\oculto.exe C:\Users\tu_usuario\notas.txt:oculto.exe
```

🔗 Esto crea un archivo llamado `oculto.exe` que actúa como un **acceso directo** al ejecutable escondido en `notas.txt`.

> 🛑 Nota: `mklink` solo funciona en **símbolos de enlace a directorios o archivos regulares**. En este caso, puede que se requiera usar herramientas avanzadas o técnicas con `cmd.exe /c` o PowerShell para ejecutar directamente el flujo oculto.

***

#### ▶️ Paso 4: Ejecutar el ejecutable oculto desde el flujo

Puedes ejecutar el payload directamente desde el flujo con:

```cmd
start notas.txt:oculto.exe
```

💣 Esto lanza el ejecutable escondido, **sin que el archivo `notas.txt` muestre cambios visibles**.

***

#### 🔍 Detección

Puedes listar los ADS ocultos con:

```cmd
dir /r
```

Esto muestra los flujos alternativos ligados a un archivo.
