Está en la página 1de 9

ENUMERACIÓN

Suponiendo que la recolección o recopilación de información y el rastreo no han ofrecido


ninguna avenida inmediata para la conquista, un atacante pasará enseguida a identificar
información más detallada acerca de las posibles víctimas, incluidos nombres de cuenta de
usuario válidos o recursos compartidos mal protegidos. Pueden usarse muchos métodos para
extraer esta información de Windows, proceso al que llamamos enumeración. La diferencia
clave entre las técnicas de acopio de información analizadas y la enumeración está en el nivel
de la intrusión

Mucha de la información reunida mediante la enumeración podría parecer inofensiva, a


primera vista. Sin embargo, la información que se fuga por los siguientes agujeros puede ser su
ruina. En general, una vez que se enumera un nombre de usuario o un recurso compartido,
sólo es cuestión de tiempo antes de que el intruso adivine la contraseña correspondiente o
identifique alguna debilidad relacionada con el protocolo de intercambio de recursos. Al elegir
estos escapes de fácil corrección, se elimina el primer punto de apoyo del hacker malicioso.

1. ENUMERACION DEL SERVICIO DE NOMBRES DE NETBIOS


a. Enumeración de dominio con Net view

Net view es una utilería de línea de comandos extremadamente simple que presentará
listas de dominios disponibles en la red y luego mostrará todas las máquinas en el
dominio. He aquí cómo enumerar dominios en la red usando net view:

Al proporcionar un argumento al interruptor /domain se presentarán listas de todos


los equipos en un dominio determinado, como se muestra a continuación:

b. Volcado de la tabla de nombres de NetBIOS con Nsbtat y Nbtcan


Otra estupenda herramienta integrada es nbtstat, que llama a la tabla de nombres de
NetBIOS desde un sistema remoto. La Tabla de nombres contiene una gran cantidad
de información, como se muestra en el siguiente ejemplo:

Como se muestra, nbtstat extrae el nombre del sistema (CAESARS), el dominio o grupo
de trabajo en que se encuentra (VEGAS2) y la dirección de control de acceso a medios
(MAC, Media Access Control). Estas entidades pueden identificarse por sus sufijos de
NetBIOS (el número hexadecimal de dos dígitos que se encuentra a la derecha del
nombre)

c. Rastreo de tablas de nombres de NetBIOS con Nbtscan

La utilería nbtstat tiene dos desventajas: está restringida a operar en un solo host a la
vez, y tiene una salida más bien inescrutable. Ambos problemas son atendidos por la
herramienta gratuita nbtscan de Alla Bezroutchko. Nbtscan usará “nbtstat” en toda
una red con asombrosa rapidez y formará la salida de manera adecuada:

Observe en esta salida que sólo el servidor PRNTSRV indica un usuario con sesión
iniciada. Es el único equipo de Windows 2000 que escucha en la salida, resaltando
nuestra exposición anterior de que los nombres de cuenta ya no se mostrarán en las
tablas de nombres de NetBIOS como opción predeterminada en una versión más
reciente de Windows. En cualquier caso, nbtscan es una estupenda manera de
encontrar los hosts que ejecutan Windows en una red.

d. Enumeración de los controladores de dominio Windows

Para profundizar un poco más en la estructura de red de Windows, necesitaremos usar


una de las herramientas de soporte de Windows Server 2003. (Instálela del
directorio \support\tools del CD-ROM de Windows Server 2003). En el siguiente
ejemplo, verá cómo la herramienta llamada nltest identifica a los controladores de
dominio (los guardianes de las credenciales de autentificación de red de Windows) en
un dominio de Windows.

HACKEO DE SERVICIOS ESPECÍFICOS DE WINDOWS

Hasta ahora en nuestros ataques en Windows, hemos identificado destinos, ejecutado


servicios y nos hemos conectado a ciertos servicios para enumerar datos del sistema. El
siguiente paso consiste en tratar de irrumpir usando varios métodos.

Como se analizó en el capítulo 2, el objetivo principal de la penetración remota del sistema


consiste en autentificarse en el host remoto para obtener acceso a recursos en él. Podemos
hacer esto, por ejemplo, de las siguientes maneras:
 Adivinar combinaciones de nombre de usuario/contraseña
 Espiar o subvertir el proceso de autentificación
 Explotar un servicio o cliente de red vulnerable
 Obtener acceso físico al sistema

Microsoft ha replicado vulnerabilidades conocidas de seguridad en el estándar Kerberos v5,


que también es propenso a ataques de adivinación de contraseñas. Este capítulo está
dividido en las siguientes secciones:

 Adivinación de contraseñas
 Espionaje sobre autentificación
 Subversión de la autentificación mediante ataques de servidor falso o de
intermediario
 (MITM, Man In The Middle)
 Ataque a vulnerabilidades en servicios de Windows

1. ADIVINACIÓN DE CONTRASEÑAS
Aunque suena muy poco glamoroso, la adivinación de contraseñas es probablemente
uno de los métodos más efectivos para ganar acceso a redes de Windows.

La adivinación de contraseñas puede realizarse contra todos los servicios que soportan
autentificación integrada de Windows, incluidos (pero no limitados a) servicios como
Internet Information Services (IIS), llamada a procedimiento remoto (RPC, Remote
Procedure Call) y servidores FTP. Nos concentraremos en adivinación de contraseñas
sobre el protocolo bloque de mensajes de servidor (SMB, Server Message Block), pero
sólo puede realizarse contra cualquier servicio para el que tenemos un cliente que
permite proporcionar un nombre de usuario y una contraseña. Por encima de eso,
cuando se gana acceso con algunas credenciales mediante algún protocolo, por lo
general vale la pena tratar las mismas credenciales mediante otros servicios, porque la
gente tiende a reciclar sus contraseñas. Esto se debe principalmente a requisitos
tediosos para la solidez de la contraseña y a la dificultad de tener que recordar
contraseñas complejas. Por ejemplo, si un extraño se las arregla para irrumpir en un
servicio FTP con algunas credenciales de usuario, podría usar las mismas credenciales
para irrumpir en otro servicio, como autentificación de Windows.

Como es natural, la adivinación de contraseñas depende de la complejidad de la


contraseña; si el usuario está usando frases de pase, la dificultad para adivinar la
contraseña crece de manera lineal. Por fortuna para los atacantes, y debido a las
demandas complejas usuales para las contraseñas, los usuarios tienden a reciclar
contraseñas en diferentes sistemas. Antes de que analicemos las diversas
herramientas y técnicas usadas para adivinación de contraseñas, revisemos algunos
puntos sobresalientes:

a. Cierre para el destino de sesiones SMB existentes


Antes de empezar con la adivinación de contraseñas contra sistemas que se han
enumerado, es necesaria un poco de limpieza. Debido a que Windows no soporta
el inicio de sesión con varias credenciales al mismo tiempo en el mismo espacio de
nombres, debe cerrar cualquier sesión existente en el destino al usar el comando
net use /delete /y (o /d, para abreviar; el interruptor /y fuerza el cierre de las
conexiones sin preguntar).

Y, por supuesto, si tiene sesiones abiertas en varias máquinas, puede cerrar


conexiones específicas al anotarlas de manera específica en la solicitud. Aquí
cerramos una sesión con el equipo \\ victima:

b. Revisión de resultados de enumeración


La eficiencia de la adivinación de contraseñas aumenta en gran medida con la
información reunida utilizando las técnicas de enumeración analizadas en el
capítulo 4. Suponiendo que los nombres y las características de la cuenta de
usuario pueden obtenerse mediante estas técnicas, deben revisarse con un ojo en
la identificación de la siguiente información extraída mediante sesiones nulas
 Comparación entre cuentas locales y de dominio
Para cada cuenta enumerada, es una buena práctica revisar cuáles son las
cuentas de dominio y cuáles sólo son para uso local. La membresía
también puede verse en las membresías de grupo.
 Comparación entre cuentas de laboratorio y de prueba
¿Cuántas cuentas de laboratorio o de prueba existen en su entorno?
¿Cuántas de esas cuentas se encuentran en el grupo Administradores
locales? ¿Ha tenido cuidado de adivinar cuáles podrían ser las contraseñas
de esas cuentas? Podrían ser prueba o test, o, en sistemas sin imposición
de directiva de contraseña, incluso podría ser NULL
 Cuentas de usuario con información jugosa en el campo Comentarios
En la realidad, hemos visto contraseñas escritas en el campo Comentarios
en texto simple, listas para obtenerse mediante la enumeración. En
ocasiones pueden encontrarse pistas para las contraseñas en el campo
Comentarios para ayudar a los desafortunados usuarios que no pueden
recordar sus propias contraseñas.
 Grupos Administradores o Administradores de dominio
Estas cuentas a menudo son los objetivos debido a que tienen gran
capacidad sobre sistemas locales de dominios. Además, las cuentas
Administradores locales no pueden bloquearse usando las herramientas
predeterminadas de Microsoft, y se vuelven blancos maduros para la
adivinación perpetua de contraseñas. Es necesario cambiar el nombre de
la cuenta, o deshabilitarla en versiones posteriores de Microsoft Windows.
 Cuentas privilegiadas de servicio de aplicación de copia de seguridad
Muchas aplicaciones de software de copias de seguridad comerciales
crean cuentas de usuario que tienen otorgado un elevado grado de
privilegios en un sistema, o que por lo menos pueden leer casi todos los
archivos para proporcionar una copia de seguridad completa del sistema
 Cuentas compartidas de grupo
Las organizaciones grandes y pequeñas tienen propensión a reciclar
credenciales de cuenta que otorgan acceso a un alto porcentaje de los
sistemas en un entorno determinado. Nombres de cuenta como backup o
admin son ejemplos.
 Las cuentas de usuario no han cambiado contraseñas recientemente
Esto suele ser una señal de prácticas poco efectivas de mantenimiento de
cuentas por parte del usuario y el administrador del sistema, lo que indica
una marca a la que es fácil acceder. Estas cuentas también pueden usar
contraseñas predeterminadas especificadas en el momento de la creación
de cuentas y que se adivinan con facilidad.
 Las cuentas de usuario no han iniciado sesión recientemente
Una vez más, las cuentas que se usan con poca frecuencia son señales de
prácticas negligentes, como vigilancia escasa de la solidez de contraseñas
vigilada con poca frecuencia, o falta de aplicación en las tareas de
administración de cuentas.
c. Evite bloqueos de cuentas
Los hackers y los probadores autorizados de penetraciones por igual querrán
evitar el bloqueo de cuentas cuando se enfrascan en la adivinación de
contraseñas. El bloqueo deshabilita la cuenta y evita que quede disponible para
ataques adicionales durante el periodo de bloqueo especificado por un
administrador de sistema. (Tome nota de que una cuenta bloqueada es diferente
de una cuenta deshabilitada, que no está disponible hasta que la habilite el
administrador).

¿Cómo puede identificar si el bloqueo desencarrilará una auditoría de adivinación


de contraseñas? La manera más limpia de determinar la directiva de bloqueo de
un sistema remoto consiste en enumerarlo mediante una sesión nula. Del capítulo
4, recordará que es posible enumerar el umbral de bloqueo si está disponible una
sesión nula. Ésta es la manera más directa de determinar si existe un umbral de
bloqueo de cuenta.

Si, por alguna razón, no puede encontrarse directamente la directiva de


adivinación de contraseñas, otro método inteligente consiste en intentar primero

la adivinación de contraseña contra la cuenta Invitado. Como se indicó en el


capítulo 2, Invitado está deshabilitada como opción predeterminada en Windows,
pero si alcanza el umbral de bloqueo, de todos modos se le notificará. A
continuación se presenta un ejemplo de lo que sucede cuando se bloquea la
cuenta Invitado.
Una vez que se ha excedido el umbral de bloqueo, el siguiente intento de
adivinación nos indica que Invitado está bloqueado, aunque la cuenta esté
deshabilitada:
Además observe que cuando se adivinan contraseñas contra Invitado (o cualquier
otra cuenta), recibirá un mensaje de error diferente si en verdad adivina una
contraseña correcta para una cuenta deshabilitada:

d. La importancia de las cuentas Administrador y de servicios


En este capítulo identificamos varias combinaciones nombre de
usuario/contraseña, incluidas muchas para la cuenta todopoderosa Administrador.
Nunca será suficiente el énfasis que pongamos en la importancia de proteger esta
cuenta. Una de las técnicas de explotación de dominio de Windows que hemos
encontrado en nuestra experiencia de consultoría incluye el compromiso de un
solo equipo dentro del dominio (por lo general, en un dominio grande, donde tal
vez se considere confiable un sistema con una contraseña NULL, o débil, de
Administrador, aunque este problema se maneja de manera muy efectiva en
nuestros días y los frutos fáciles de tomar empiezan a aparecer por todos lados).
Una vez que el sistema está comprometido, un atacante experimentado cargará
las herramientas necesarias, incluido con toda probabilidad la vieja lsadump2, o
una herramienta de extracción similar entre las analizadas en el capítulo 7. La
herramienta lsadump2 extraerá contraseñas del almacén LSA Secrets para cuentas
de dominio que inician sesión en un servicio, otra práctica común en dominios de
Windows. Después de que se ha obtenido esta contraseña, suele ser algo trivial
comprometer a los controladores de dominio al iniciar sesión como la cuenta de
servicio. Además, tome en consideración este hecho: debido a que los usuarios
normales tienden a cambiar sus contraseñas de acuerdo con un calendario poco
regular (por directiva de seguridad), es probable que la adivinación de contraseñas
de cuentas de usuario regulares podría ser difícil (y la adivinación de una
contraseña correcta sólo obtiene cuentas de nivel de usuario).

 Adivinación manual de contraseñas


Una vez que un rastreador de puertos ha identificado los servicios de
autentificación y que se han enumerado los recursos compartidos, es difícil
resistirse a realizar una adivinación de contraseñas (o 10) utilizando el
comando de línea de comandos net use. Es tan fácil como esto:

Observe que ha usado el nombre de usuario plenamente calificado en este


ejemplo, victima\nombreusuario, que identifica de manera explícita la
cuenta que estamos atacando. Aunque esto no siempre es necesario,
puede evitar resultados erráticos en ciertas situaciones, como cuando los
menús desplegables net use se lanzan desde una shell de comando que se
ejecuta como LocalSystem.

La efectividad del ataque manual de adivinación de contraseñas es


cercano a 100% o nil, dependiendo de cuánta información haya reunido el
atacante acerca del sistema y si éste se ha configurado con una de las
combinaciones de nombre de usuario/contraseña de alta probabilidad.

 Ataques de diccionario
Es muy fácil implementar un operador que use la fuerza bruta para iniciar

sesión mediante la función WNetAddConnection2 de Win32. Esta API está


bien documentada en MSDN (consulte “Referencias y lecturas
adicionales”). A continuación se presenta cierto pseudocódigo que
muestra uno de estos operadores de fuerza bruta que podría construir
utilizando
WNetAddConnection2.

DESCUBRIMIENTO Y EXPLOTACIÓN DE VULNERABILIDADES DE WINDOWS

Las vulnerabilidades de seguridad del software a menudo surgen de un descuido en el código,


la configuración, el diseño o el entorno de un componente determinado de la tecnología. Por
ejemplo, la vulnerabilidad de ejecución de código remoto del cursor animado de Windows es
un problema del código, porque es resultado de un manejo inapropiado del búfer. Por otra
parte, la vulnerabilidad de escritura arbitraria de archivos en Internet Explorer es resultado de
un descuido de la configuración. Este problema se resolvió con sólo deshabilitar el control
ActiveX Objeto de descripción de sesión de NMSA dentro de Internet Explorer. Las
vulnerabilidades, a pesar de su origen, suelen dar como resultado ataques de elevación de
privilegios (EoP, Elevation of Privileges) o la negación del servicio (DoS, Denial of Service).
Dependiendo de la metodología de modelado de la amenaza a la que se suscribe, esta lista
puede expandirse para incluir amenazas adicionales.

1. Inyecciones de Errores
En su forma más simple, la inyección de errores puede describirse como la
introducción de datos mal formados en una aplicación, de manera automatizada. El
principal beneficio de la inyección de errores es que una vez que se ha construido el
inyector, puede dejarlo sólo hasta que el destino entre en el depurador. Esto le deja
tiempo libre para investigar otras áreas de la aplicación o escribir inyectores
adicionales. Se dispone de un número decente de inyectores, dependiendo de lo que
está tomando como destino. Nuestra experiencia ha demostrado que Peach Fuzzer
Framework de Michael Eddington se encarga de todo cuando se trata de crear
rápidamente inyectores efectivos.
 Inyección de errores con Pech
Peach es un marco conceptual de inyección de errores basado en Python, no un
inyector. Proporciona un conjunto de clases y herramientas suplementarias que
ayudan al desarrollo rápido de inyectores. En el centro del inyector Peach se
encuentran los generadores, grupos y transformadores. Los generadores son
responsables de crear malformaciones de datos, los grupos controlan la iteración y
las relaciones entre las malformaciones y los transformadores convierten los datos
generados a otro formato, como Base64.
2. Ingeniería inversa
En ausencia de código fuente, siempre podemos desensamblar binarios y buscar
problemas de seguridad dentro del ensamblado. ¿Pero dónde empezar? Una opción
consiste en descargar parches de errores de seguridad anteriores y compararlos contra
las versiones sin parches. Las partes de los binarios que no coinciden seguramente
apuntarán a un problema de seguridad.
3. Desempaquetado de una actualización
Como se estableció, una manera de descubrir vulnerabilidades en Windows consiste
en desempaquetar el paquete de actualización de Microsoft y comparar el nuevo DLL
con el anterior. Una vez que se haya identificado el error en que estamos interesados,
en este caso MS07-17, primero descargamos la corrección y la desempaquetamos:

A partir de esto, puede ver que se extrajeron cuatro archivos de la actualización. El


archivo más interesante es Windows6.0-KB925902-x86.cab, porque contendrá las
bibliotecas actualizadas.

También podría gustarte