Introducción
La mayoría de los equipos de seguridad consideran las uniones NTFS y los enlaces simbólicos como características menores del sistema de archivos. Permiten que un directorio apunte a otro, como un acceso directo que el sistema operativo trata como real. Existen para compatibilidad hacia atrás y gestión de almacenamiento, aspectos que rara vez aparecen en un SOC. Sin embargo, tienen una propiedad que los hace interesantes desde una perspectiva ofensiva: cualquier usuario puede crearlos. No se requieren privilegios de administrador ni permisos especiales más allá de acceso de escritura a la carpeta destino.
Descubrimos que, al apuntar una unión de vuelta a su propio directorio padre, un atacante puede crear bucles recursivos que generan rutas de archivo efectivamente infinitas. Las herramientas que intentan escanear el directorio de forma recursiva, incluidos los productos EDR, podrían seguir el bucle y nunca terminar. Los archivos maliciosos ubicados en la misma carpeta quedan sin examinar, creando una técnica que hemos denominado GhostTree.
Cómo funcionan las uniones NTFS
Las rutas de archivo de Windows son una parte fundamental del sistema operativo, pero conllevan complejidades. Mientras la mayoría de los usuarios interactúan con estructuras de carpetas simples, el sistema de archivos NTFS introduce capacidades avanzadas como uniones y enlaces simbólicos. Estas características cumplen propósitos legítimos, como redirigir directorios, mantener compatibilidad hacia atrás con aplicaciones heredadas que esperan archivos en ubicaciones específicas, o reorganizar archivos sin moverlos físicamente.
Una unión es un tipo de punto de repetición NTFS que redirige un directorio a otro. Crearla solo requiere permisos de escritura y un solo comando en CMD: 'mklink /J LinkToFolder TargetFolder'. Esto crea una unión llamada 'LinkToFolder' que apunta de forma transparente a 'TargetFolder'. Cualquier aplicación que acceda a archivos a través de la unión ve el contenido del directorio destino como si fuera local. Una restricción importante: los sistemas Windows clásicos imponen una longitud máxima de ruta de 260 caracteres, aunque es posible extender este límite hasta 32.767 caracteres mediante una clave de registro, pero muchas aplicaciones no están preparadas para manejar rutas más allá de 260. Ese límite determina cuán profundos pueden llegar los bucles recursivos y cuántas rutas únicas puede producir GhostTree.
GhostBranch
GhostBranch es la más simple de las dos técnicas. Cualquier usuario puede crear una unión de carpeta, estableciendo tanto el nombre de la unión como su destino. Considere esta estructura de carpetas: C:ParentFolderChildFolder. Ejecute el comando: 'mklink /J C:ParentFolderChildFolder C:ParentFolder'. Esto crea un bucle lógico al apuntar una carpeta hija de vuelta a su carpeta padre. El directorio hijo ahora contiene todo lo que contiene el padre, incluido sí mismo. El resultado es un número ilimitado de rutas válidas al mismo archivo. Debido al bucle, se pueden agregar múltiples carpetas 'Child' a la ruta, y sigue siendo válida. Cada una de estas rutas resuelve al mismo ejecutable.
GhostTree
GhostTree se basa en el concepto de GhostBranch creando múltiples carpetas hijas en lugar de una. Por ejemplo, se pueden crear dos carpetas hijas: 'mklink /J C:ParentChild1 C:Parent' y 'mklink /J C:ParentChild2 C:Parent'. Ahora cada nivel en la ruta puede ramificarse a través de Child1 o Child2, y ambos bucles vuelven al padre. Esto permite diversas rutas como C:ParentChild1Child2… y así sucesivamente.
Cálculos de rutas
Tanto GhostBranch como GhostTree producen rutas que pueden extenderse hasta la longitud máxima que permite Windows. La diferencia está en la diversidad de rutas, donde la carpeta hija adicional de GhostTree cambia considerablemente las cosas. En GhostBranch, la longitud máxima de ruta tradicional es de 260 caracteres. Para maximizar el número de directorios, se pueden crear carpetas de una sola letra (por ejemplo, 'P') directamente bajo la unidad C: y emplear un ejecutable llamado 1.exe. Ejemplos de rutas incluyen C:PChildChild…1.exe. Esta configuración permite aproximadamente 126 estructuras de directorio únicas debido a las limitaciones de longitud de ruta. En GhostTree, se introducen dos carpetas padre, 'P' y 'B', en contraste con la estructura de una sola carpeta usada anteriormente. Ejemplos incluyen C:PB1.exe o C:PPBBP1.exe. Mientras la profundidad máxima se mantiene alrededor de 126 carpetas, cada nivel puede llamarse 'P' o 'B', creando efectivamente una estructura de árbol binario. Con esta configuración, cada nodo representa una ruta distinta, y el número total de nodos posibles se calcula como 2^(126+1) – 1 ≈ 2^127, que es vastamente mayor que el número de granos de arena en la Tierra (8.5 × 10^18) o incluso los átomos en el cuerpo humano (10^27).
Por qué esto es importante para los defensores
Con solo dos líneas de código, un usuario puede generar rutas válidas interminables, haciendo imposible completar el escaneo de directorios padre con el comando 'dir' de forma recursiva. Lo mismo aplica a los productos EDR que escanean carpetas en busca de archivos maliciosos. Un atacante coloca malware en el directorio padre, configura la estructura GhostTree, y la carpeta contenedora se vuelve efectivamente invisible al escaneo. El escaneo se cuelga. Los archivos maliciosos quedan sin examinar. Probamos esta técnica contra Windows Defender y confirmamos que podía usarse para evadir escaneos de carpetas. Reportamos el problema a Microsoft. El ticket se cerró con la explicación de que 'evadir Defender no cruza un límite de seguridad'. El problema fue parcheado de todas formas. Técnicas como GhostTree son un recordatorio de que el escaneo de endpoints es solo una capa de defensa. Monitorear la actividad del sistema de archivos en la capa de datos atrapa lo que los escáneres pasan por alto, incluyendo la creación anómala de uniones y estructuras de directorio recursivas que no deberían existir en operaciones normales. Varonis monitorea patrones de acceso a archivos y detecta este tipo de actividad anómala en sistemas de archivos e infraestructura en la nube.
















Deja una respuesta