EL NTFS: SU LADO OCULTO Y EL PELIGRO DE LOS NUEVOS VIRUS.
Debido a su estabilidad, funcionalidad y el alto nivel de seguridad que nos proporciona, el sistema de archivos NTFS es el preferido y utilizado en prácticamente todas las plataformas NT, W2000 y XP.
Una de las características desconocidas en el sistema de archivos NTFS son los "alternate data streams" (ADS) los cuales existen por compatibilidad con el sistema de archivos "Macintosh Hierarchical File System" (HFS) y se usan para mantener información asociada con un fichero: iconos por ejemplo. Microsoft da los medios de creación para ADS's específicas a través de Windows Explorer tal y como veremos posteriormente, pero las herramientas necesarias para detectar la presencia de ADS's arbitrarias están "misteriosamente" ausentes.
El sistema operativo tiene la funcionalidad nativa y ciertas herramientas para permitir a un usuario crear ADS's y ejecutar código oculto en estos "streams". En el artículo Q101353 se reconoce que el API Win32 soporta ADS's incoherentemente.
Veamos en detalle cómo crear y manipular y cómo ocultar código en ADS's que puede ser ejecutado:
Existen ligeras diferencias en el tratamiento de ADS's entre NT, W2000 y XP. Las pruebas y ejemplos presentados en este documento se CREANDO UN ADS La sintaxis de creación es relativamente sencilla.
Para crear un ADS asociado con un fichero, por ejemplo: fichero.txt, simplemente añadir a continuación el carácter de dos puntos ":" y el nombre "stream". Vamos a crearnos un directorio de trabajo llamado ADS.
Para ello, abrimos una consola de comandos (Inicio->Ejecutar->cmd) y tecleamos: cd md ads cd ads La creacion más simple es: C:ADS>echo este es un texto de prueba > fichero.txt:oculto Si a continuación ejecutamos un "dir" o bien accedemos a él con el explorador, veremos únicamente el fichero: "fichero.txt" con tamaño cero. Si ejecutamos: more echo este es otro texto de prueba > texto.txt C:ADS>type text.txt > fichero.txt:oculto2 Podemos comprobar otra vez el fichero mediante el comando "more". Si intentamos abrir el fichero de texto, fichero.txt mediante el Notepad, por ejemplo, veremos que nos da mensajes extraños de petición de creación del archivo (que ya existe!!!!). Curiosamente, aunque con un dir, o con el explorador, sólo veamos un archivo de tamaño cero llamado fichero.txt, podremos comprobar con los comandos: more echo Este ADS se crear para el directorio > :oculto Exactamente igual, podremos crear ADS's, que en vez de contener texto, contengan código ejecutable: C:ADS>type c:windows notepad.exe > fichero.txt:np.exe C:ADS>type c:windowssystem32sol.exe > fichero.txt:sol2.exe De la misma forma, ficheros de imágenes, de audio o cualquier otro flujo de datos pueden ocultarse en ADS's.
Antes de continuar con las herramientas necesarias para poder ver los ADS's creados, (ya que hasta el momento, estamos "ciegos". Sólo podemos ver un archivo llamado "fichero.txt" con tamaño cero... Pero realmente tenemos dos archivos de texto y dos con código ejecutable), hemos visto el comando "more" para los de texto. Para los otros dos, podemos ejecutarlos tecleando: C:ADS>start .fichero.txt:np.exe (evidentemente ejecuta un Notepad) C:ADS>start .fichero.txt:sol2.exe (nos ejecutará el solitario)
Debemos fijarnos que ambos ficheros, aunque no los veamos, son reales. No son un "enlace" a los originales, sino que contienen el código real del Notepad y del solitario. Si somos un poco osados, podemos guardar el código de un virus en uno de estos archivos, y si ejecutamos un antivirus, veremos que sorprendentemente NO lo localiza. Aunque parezca que es dificil la ejecución de un ADS, es sencillísimo comprobar que no es así. En particular, las rutinas en un script de VB se ejecutan perfectamente. Por ejemplo podemos crear: C:ADS>echo MsgBox "Prueba de mensaje en VB" > fichero.txt:codigo.vbs Y ejecutar: C:ADS>start .fichero.txt:codigo.vbs Igualmente puede ser invocado desde Perl sin más que preparar un sencillo script: #! c:perlinperl.exe # file name: adsfun.pl use strict; my $filename = 'c:adsfichero.txt:codigo.vbs'; my $results = system($filename);
CREACIÓN DE ADS'S CON LAS HERRAMIENTAS DE WINDOWS: Podemos igualmente crear un fichero de texto normal con el Notepad. Creamos un fichero llamado prueba.txt en la carpeta ADS anterior, una vez creado, lo salvamos y miramos su tamaño exacto en bytes. Posteriormente con el explorador de Windows, con el botón derecho sobre él, propiedades, en la última pestaña, cumplimentamos los datos de título, autor, etc?. Sorprendentemente podemos comprobar que el tamaño del archivo no ha variado. La pregunta es entonces: ¿Dónde se guardan los datos que hemos añadido como propiedades de dicho archivo?. La respuesta es sencilla: en unos ADS's que el sistema automáticamente crea.
¿CÓMO PODEMOS VER LOS ADS'S?
Existen varias herramientas para poderlo verificar. En particular el clásico streams.exe de Wininternals. Pero es una herramienta engorrosa de manejar. La herramienta más sencilla es debida a Frank Keyne y es el programa LADS.EXE. (http://www.heysoft.de/nt/lads.zip) Descargando el programa desde el link anterior, podemos ejecutarlo sobre la carpeta ADS creada anteriormente y nos mostrará los ADS creados con los ejemplos anteriores. C:ADS>LADS LADS - Freeware version 3.10 This program lists files with alternate data streams (ADS) Use LADS on your own risk! Scanning directory I:ADS size ADS in file ----------------------- 38 I:ADSfichero.txt:codigo.vb 35 I:ADSfichero.txt:codigo.vbs 28 I:ADSfichero.txt:oculto 116 I:ADSprueba.txt:?DocumentSummaryInformation 172 I:ADSprueba.txt:?SummaryInformation 0 I:ADSprueba.txt:{4c8cc155-6c1e-11d1-8e41-00c04fb9386d} 389 bytes in 6 ADS listed.
Tal y como hemos visto, los ADS's son una característica de los archivos NTFS para compatibilizar con HFS. Sin embargo, la pérdida de "visibilidad" que esta característica posee tiene un riesgo potencial bastante elevado para los Administradores del sistema. Debemos tener presente que no todas las herramientas, ni tan siquiera de Windows, son capaces de tratar correctamente los ADS's. Por ejemplo, los defragmentadores, no defragmentarán dichos archivos. Los antivirus, la mayoría de ellos, no diagnostican virus en los ACL's, y los que son capaces de diagnosticarlos no tienen capacidad para eliminarlos. Los fabricantes de antivirus empiezan a ser conscientes de esta problemática y en breve serán capaces de tratarlos.
|