Por qué los flujos de datos alternativos de NTFS son una vulnerabilidad de seguridad
Dec 16, 2022
Es posible que no esté familiarizado con los flujos de archivos NTFS, pero los utiliza todos los días cuando accede a archivos en cualquier sistema Windows moderno. Esta publicación de blog explica esta característica de NTFS ADS, muestra cómo los hackers pueden explotar la funcionalidad de flujos de archivos en ciberataques y ofrece estrategias para defender su organización.
Contenido relacionado seleccionado:
Flujos de datos predeterminados y flujos de datos alternativos
Un flujo de archivo es una secuencia de bytes que contiene datos sobre un archivo, como palabras clave o la identidad del usuario que creó el archivo. Piense en un flujo de datos como un archivo dentro de un archivo — un archivo oculto que reside dentro de uno legítimo. Cada flujo tiene su propia asignación de espacio en disco, su propio tamaño real (bytes en uso) y sus propios bloqueos de archivo.
Cada archivo en su estructura de archivos NTFS tiene al menos un flujo, su flujo predeterminado. El default data stream es el contenido de archivo normal y visible — por ejemplo, el texto en un archivo .txt o el código ejecutable en un archivo .exe. Esta información se almacena en el atributo $Data. Debido a que el nombre de este atributo predeterminado está vacío (establecido en “”), el unnamed data stream también se conoce a menudo como el “flujo de datos sin nombre”.
Los archivos también pueden contener uno o más alternate data streams (ADSs). Un ADS debe ser nombrado. Tenga en cuenta que el flujo de datos predeterminado permanece sin cambios con la adición de flujos de datos alternativos.
Cómo crear flujos de datos alternativos
Es bastante fácil crear flujos de datos alternativos para un archivo: simplemente añada dos puntos (“:”) al nombre del archivo o ruta, seguido por el nombre del flujo. Ya que los dos puntos son un carácter reservado no permitido en un nombre de archivo, no entra en conflicto con nombres de archivos existentes.
Puede agregar múltiples ADSs a un archivo. Por ejemplo, aquí le mostramos cómo podemos crear dos flujos de datos alternativos para un archivo de texto:
Myfile.txt:stream2
Myfile.txt:secretstuff
Beneficios de los NTFS File Streams
Aunque los sistemas de archivos antiguos de Windows como FAT16 y FAT32 no tienen soporte para múltiples flujos de datos, ADS no es una tecnología nueva; ha estado presente en todas las versiones del sistema de archivos NTFS de Microsoft desde Windows NT.
Desde el principio, el uso de múltiples flujos de datos ayudó a habilitar un servidor Windows para que también funcionara como servidor de archivos para computadoras Apple Macintosh. Los archivos Mac utilizan dos flujos por archivo — uno para datos y otro para información de recursos. Con NTFS admitiendo múltiples flujos, un usuario de Mac podría copiar archivos a un servidor Windows y luego de vuelta a un Mac sin perder el flujo de recursos. En otras palabras, el ADS pudo proporcionar compatibilidad para ambos sistemas y sus aplicaciones.
También hay razones legítimas para utilizar flujos de datos alternativos dentro de Windows. Por ejemplo, algunos programas de gestión de archivos y software de copia de seguridad utilizan ADS para almacenar información de revisión de archivos, y muchos navegadores web añaden un flujo a los archivos descargados de internet que incluye información de seguridad sobre el origen del archivo.
El Lado Siniestro de ADS
Aunque ADS tiene muchos propósitos legítimos, los hackers pueden abusar de él para fines maliciosos como ataques de malware. Al igual que un compartimento secreto dentro de una maleta utilizado por un contrabandista para ocultar mercancía ilegal de un inspector, ADS puede ser utilizado por actores de amenazas para esconder código malicioso y ejecutar ataques futuros mientras evita la detección de seguridad básica. Un ADS puede almacenar cualquier tipo de archivo, incluyendo audio, video, imágenes o código malicioso como virus, troyanos y ransomware. Y debido a que los flujos de datos alternativos están ocultos, los usuarios no pueden detectarlos utilizando comandos de listado de directorios.
Herramientas para trabajar con NTFS Streams
Hay algunas herramientas nativas que puedes utilizar para obtener más visibilidad en ADS. Estas incluyen:
- Echo and More
- La utilidad Sysinternals Streams
- La opción /R del comando Dir.
- PowerShell 3.0, que incluye seis cmdlets para manipular directamente el contenido de ADS
Echo and More
Comencemos utilizando Echo y More. En el ejemplo a continuación, el comando Echo se utiliza para añadir “:secret” a un archivo de texto llamado test.txt, y el comando More se usa para escribir un mensaje secreto que no se puede ver por defecto. Observa que el comando Dir tampoco ve el flujo secreto NTFS.
Streams
Streams es una herramienta de línea de comandos disponible de Sysinternals. Se utiliza para mostrar qué archivos en una carpeta usan streams más allá de los streams de datos predeterminados. La captura de pantalla a continuación muestra que el archivo test.txt tiene un stream alternativo llamado “secret” que tiene un tamaño de archivo de 86 bytes. Tenga en cuenta que esto es mucho más que los 26 bytes mostrados por el comando Dir en el ejemplo anterior.
Dir /R
La opción Dir /R está disponible desde Windows Server 2003. Como se muestra a continuación, nuestro archivo 'test.txt' aparece dos veces al usar la opción Dir /R. También muestra el tamaño correcto del archivo tanto para los flujos de archivo predeterminados como para los secretos.
PowerShell
También puedes utilizar PowerShell para identificar los flujos de datos alternos en un archivo. En el ejemplo a continuación, hemos utilizado el comando Get-Item con la opción Stream y el parámetro comodín. La salida muestra ambos flujos para nuestro archivo; la flecha resalta la vista del flujo alternativo.
También puedes usar PowerShell para limpiar un flujo NTFS. En la captura de pantalla a continuación, hemos utilizado el comando clear-content para eliminar los datos asociados con el flujo de datos secreto. Ejecutar el comando get-item inmediatamente después confirma que los datos en el flujo fueron eliminados, ya que el tamaño del archivo ahora es cero.
Incluso podemos hacer algo mejor y eliminar completamente el flujo utilizando el comando remove-item, como se muestra a continuación. El comando get-item confirma que el flujo fue eliminado.
Cómo defenderse contra la amenaza ADS
Los adversarios pueden y de hecho utilizan ADS para ocultar contenido malicioso, incluyendo ransomware y otro malware, en tu estructura de archivos jerárquica. Desafortunadamente, el Explorador de archivos de Windows, el comando Dir y herramientas relacionadas solo informan sobre el flujo de datos predeterminado de un archivo. La verdad es que un simple archivo .txt o documento de Word que reporta 1k de datos podría en realidad contener megabytes de datos ocultos o código ejecutable en un ADS.
Por lo tanto, al construir su estrategia de gestión de seguridad, necesita mejorar la visibilidad en ADS. En particular, considere invertir en productos antivirus, herramientas de descubrimiento de datos y detectores de exfiltración de datos que puedan detectar la existencia de flujos de datos alternativos y escanear en busca de contenido no autorizado para que pueda eliminarlo proactivamente. Después de todo, la prevención de incidentes siempre es mejor que la respuesta a incidentes.
Mejores prácticas de gestión de permisos NTFS
Aprende másCompartir en
Aprende más
Acerca del autor
Joe Dibley
Investigador de seguridad
Investigador de seguridad en Netwrix y miembro del Equipo de Investigación de Seguridad de Netwrix. Joe es un experto en Active Directory, Windows y una amplia variedad de plataformas y tecnologías de software empresarial, Joe investiga nuevos riesgos de seguridad, técnicas de ataque complejas y las mitigaciones y detecciones asociadas.
Aprende más sobre este tema
Leyes de Privacidad de Datos por Estado: Diferentes Enfoques para la Protección de la Privacidad
¿Qué es la gestión de registros electrónicos?
Expresiones Regulares para Principiantes: Cómo Empezar a Descubrir Datos Sensibles
Compartir externamente en SharePoint: Consejos para una implementación prudente
Confianzas en Active Directory