J. González, Mª José Gil y B. Viejo
El término "seguridad" cubre la prevención de accesos tanto indeseados como malintencionados a cualquier parte de un sistema de computación. La presente ponencia se centra en los Sistemas Operativos y en concreto en Microsoft Windows NT. Tras exponer su API criptográfico y su clase de seguridad se describen las posibles vías de ataque al mismo con el fin de prevenir a los administradores de sistemas ante posibles intrusiones no deseadas en el sistema operativo.
Cifrado/Descifrado de datos
Microsoft Windows NT 4.0 incluye un sistema o API básico de cifrado, denominado CAPI, inmerso en el API Win32, que constituye la esencia interna de este sistema operativo y que está constituido por un conjunto o juego de funciones que posibilitan el acceso de manera independiente de los servicios de criptografía, tanto a las aplicaciones que sobre el API Win32 se ejecutan, como a los propios desarrolladores de aplicaciones software. Es decir, Microsoft Windows NT 4.0 dispone de un servicio criptográfico básico que ofrece la posibilidad de codificar los datos, facilitando así el logro de un almacenamiento y transmisión seguros combinando para ello el uso de claves públicas y privadas.
Clase de seguridad de Microsoft Windows NT 4.0
Microsoft abordó el diseño de Windows NT siguiendo un enfoque "botom—up", con el propósito de que el producto final cumpliera los requisitos de la clase C2. Así, los ingenieros y diseñadores de Microsoft comenzaron a trabajar con el NCSC -National Computer Security Center- en 1992 para que Windows NT pudiera ser evaluado dentro de esta clase. En agosto de 1995, Microsoft anunció públicamente la superación por parte de sus productos Microsoft NT Server 3.5 y Microsoft NT Workstation 3.5 (ambos junto con el "ServicePack" número 3), de las pruebas requeridas para su inclusión en la Lista Oficial de Productos Evaluados de clase C2 para sistemas operativos, publicada por la Agencia de Seguridad Nacional (NSA -National Security Agency-).
Intrusiones posibles: vías de ataque
Ataques directos
Al acceder a un sistema Microsoft Windows NT Server, la posibilidad de hacerse con el control de la máquina sin tener los privilegios requeridos es relativamente elevada. Si existe la posibilidad de arranque mediante disquete, desde una partición tipo FAT (particiones de los sistemas MS-DOS o Windows 3.x), o de Linux (al menos en las últimas versiones presentadas de su núcleo) ya se está en disposición de escribir sobre particiones NTFS. De hecho, existe la posibilidad de acceder en "modo lectura" a cualquiera de las informaciones almacenadas en la partición NTFS, simplemente haciendo uso del programa NTFSDOS, que puede ser descargado —al menos en su versión de prueba— de la URL de SysInternals (http://www.sysinternals.com).
Ataques a través de la red
Otra forma de atacar un sistema que tiene instalado Microsoft Windows NT Server es mediante accesos no autorizados por red. El ataque más común es el que se lleva a cabo utilizando NetBIOS. No obstante, hay otras posibilidades, como localizar posibles bugs en el Internet Information Server o en otros servicios que estén procesándose sobre la máquina remota, y el uso de programas como GetAdmin. De cualquier forma, atacar a este tipo de sistemas suele requerir una combinación de varias técnicas.
Acceso a través de NetBIOS
Para lograr una intrusión a través de NetBIOS es necesaria una pasarela de acceso a la máquina cuya seguridad se desea poner a prueba. Suponiendo que se dispone de ella, para acceder a los recursos compartidos de una máquina con Microsoft Windows NT se puede hacer uso de numerosas utilidades.
Un ejemplo es la herramienta NAT -NetBIOS Auditing Tool-, desarrollada por Secure Networks Inc., y accesible desde su URL (http://www.winfiles.com/apps/nt/net-info.html ). No obstante, no se trata de una aplicación totalmente innovadora, puesto que se basa en las ideas expuestas por Hobbit, en su texto CIFS -Common Insecurities Fail Scrutiny-, accesible en la URL http://www.avian.org. NAT, como aplicación, trata de realizar un ataque basado en diccionario, es decir, probar contraseñas, una tras otra, contra los recursos compartidos de un servidor NT que tenga NetBIOS activado. Para mejorar su eficiencia, NAT se hace pasar por un programa que hace uso de LanMAN, logrando así que el servidor Microsoft Windows NT baje la guardia, al verse obligado a mantener la compatibilidad con este tipo de redes.
Esta compatibilidad, desde el punto de vista de la seguridad, fuerza a Microsoft Windows NT a utilizar contraseñas formadas con la combinación de caracteres numéricos y caracteres alfabéticos en mayúsculas, lo que reduce notoriamente el espacio de claves. Esto supone claramente, una gran disminución de las posibles combinaciones y en consecuencia, un importante decremento del número de contraseñas a compararse en el intento de acceso "ilícito".
Acceso a través de cuentas de usuario
Una vía interesante de ataque, es la cuenta anónima para conexión al servidor de Internet, que suele recibir internamente el identificador IUSR_nombre servidor. La obtención del nombre del servidor no es complicada, puesto que puede realizarse, por ejemplo, haciendo una conexión ftp a la máquina y observando el nombre que aparece, o bien mediante el uso combinado de SID2USER.EXE y USER2SID.EXE (accesibles en http://www.ntshop.net ).
Si se logra dar con la clave de acceso de una cuenta de usuario, la conexión al servidor remoto ya es posible. No obstante, en este caso, los privilegios de que se dispone pueden ser aún limitados.
Otro hecho destacable, que permite seleccionar el objetivo de un ataque dentro de un servidor en concreto es que la cuenta de Administrador, al contrario que el resto de cuentas de usuario, no está configurada para desactivarse automáticamente tras cierto número de intentos de validación fallidos. La cuenta del Administrador o superusuario podría renombrarse, dificultando así la obtención de un nombre de cuenta válido para el sistema. Sin embargo, sería posible obtener el nuevo nombre del administrador, ejecutando un NBTSAT (en la línea de comandos) y seleccionando aquella cuyo identificador sea el "03"; también puede hacerse uso de las aplicaciones SID2USER y USER2SID anteriormente mencionadas.
Obtención de privilegios de administrador
En este caso, las posibilidades son muy amplias. Así, por ejemplo se podría tratar de sacar partido del hecho de que en Microsoft Windows NT, es posible por defecto, la escritura en el directorio %systemroot%\system32, y colocar un fichero denominado FPNWCLNT.DLL, empleado en entornos de tipo Netware. Así, y mediante un troyano de dominio público, en poco tiempo sería posible obtener las claves de acceso de todos los usuarios del sistema.
De cualquier manera, y si al acceder mediante NetBIOS u otros métodos, se ha conseguido lograr una copia del fichero SAM, incluso aunque haya sido localizando algún bug en el Internet Information Server (por ejemplo haciendo uso de la herramienta PWDUMP.EXE) es posible, el acceso a las contraseñas cifradas haciendo uso de L0pthcrack.
Esta utilidad fue desarrollada en The L0pth, y puede ser accedida, en versión de prueba válida para 15 días en http://www.l0pth.com. No solamente sirve para el ‘break’ o violación de un fichero SAM, sino que además ofrece la posibilidad de explorar graves defectos en el algoritmo que emplea Microsoft Windows NT cuando cifra las claves de acceso de los usuarios, permitiendo obtener todas las claves de acceso en pocas horas. Esta intrusión al fichero SAM puede realizarse en una máquina ajena a la que se desea "reventar".
Conclusión
A través de cualquiera de las vías descritas, cualquiera podría averiguar la contraseña del usuario Administrador (o de cualquier otro usuario con sus privilegios), con lo que podría llegar a tener el control sobre la máquina objeto del ataque —remota o no—. En consecuencia, se trata de "cerrar" las puertas descritas a potenciales intrusos y así reforzar la seguridad del sistema.
Jorge González Barturen
barturen [at] eside [dot] deusto.es
Profesor de la Facultad de Ingeniería
María José Gil Larrea
marijose [at] eside [dot] deusto.es
Directora del Dpto. de Ingeniería del Software
de la Facultad de Ingeniería
Beatriz Viejo Ramos
2beviejo [at] rigel [dot] deusto.es
Alumna de Postgrado de la Facultad de Ingeniería
Universidad de Deusto