Conferencia DEFCON 20. Captura en 60 segundos: de una cuenta de invitado a un administrador de dominio de Windows. Parte 1

Hola, soy Zach Feysel, hablaré rápido, si es demasiado rápido, puedes retrasarme. Durante el día, soy un pentester, por la noche soy un DJ y fotógrafo, se me puede encontrar en Twitter usando el apodo @zfazel. La gente siempre me pregunta sobre diplomas. No soy una de esas personas que enumeran un montón de títulos, por lo que es mejor que me juzguen en base a esta presentación, y no por la cantidad de certificados que tengo.



Un comentario descarado: tenemos poca competencia aquí, ahora los muchachos de Chicago están en la pista 4, todos somos de Chicago, levanten rápidamente la mano de quienes están aquí desde Chicago. Entonces, creo que perdí la apuesta. Esta noche seré DJ en la piscina, así que si eres libre, bienvenido a la batalla con Kate Myers, después de lo cual regresaré a Chicago para otra conferencia de piratas informáticos. El año pasado, asistieron 500 personas, este año esperamos que haya más invitados. Mis 312 muchachos también estarán allí, se puede encontrar más información sobre esta conferencia en thotcon.org.

Entonces, para no perder tiempo: hablaremos sobre una alternativa al ataque Pass-the-hash llamado NTLM-Relay, sobre un nuevo conjunto de herramientas para la transmisión de protocolo cruzado de retransmisión entre protocolos para solicitudes de autenticación NTLM, sobre nuevos métodos de autenticación automática de clientes y sobre nuevos propósitos para los cuales puede usar Pass-the-hash.
Comencemos con NTLM, para aquellos que no saben lo que es NTLM 101, todo el punto puede expresarse en menos de 10 minutos. Entonces, ¿qué es LM / NTLM? Es un repositorio de contraseñas y un protocolo de autenticación de red desarrollado por Microsoft para su uso en Windows. ¡Maldita sea, mis diapositivas están fuera de servicio! Entonces, el hash LM es un formato para almacenar contraseñas de usuario de menos de 15 caracteres, la contraseña se divide en 2 partes de 7 bytes y se convierte en mayúsculas. Espero que puedan ver cómo se ven los hashes de LM y NTLM. No voy a perder el tiempo diciéndole cuán débil y débil es LM, todos lo saben, y si no, googleen.



Un hash NTLM generalmente distingue entre mayúsculas y minúsculas, tiene una longitud ilimitada, no se divide en grupos de caracteres y es ligeramente más fuerte que LM, pero tampoco está exento de problemas. Ahora hablaré de ellos. La primera vulnerabilidad es la posibilidad de un ataque Pass-the-hash, que permite que un hacker inicie sesión en un servidor remoto que utiliza autenticación de cliente basada en protocolos NTLM / LM. Lo siento, muchachos, mezclé las diapositivas, las hice hace 5 minutos, en resumen, LM apesta.

Entonces, ¿qué es la autenticación NTLM? Esta es la autenticación de red para servicios remotos. Ella es necesaria para demostrar que realmente eres lo que te llamas a ti mismo. El servicio generalmente se ejecuta en una computadora separada, donde desea acceder a los recursos ofrecidos por el servicio, por ejemplo, un servidor de archivos es un servicio y los archivos son recursos. En un minuto veremos cuáles son estos servicios.

Podemos confundirnos cuando hablamos de NTLM v1, v2, NTLM 2, ya sea firmado o no, así que veamos rápidamente la autenticación NTLM. Durante la autenticación, se envían 3 tipos de mensajes.



El tipo 1 es la solicitud del cliente al servidor para establecer un contacto, algo así como "Quiero autenticar". Verá el paquete hecho pedazos, capturado por Wireshark, hay banderas para admitir la autenticación, el nombre de la estación de trabajo y su nombre de dominio.

El mensaje de tipo 2 es una respuesta del servidor. Si se dio cuenta del mensaje de Tipo 1 que aún no sabemos quién es este usuario, él solo pidió conectarse al servidor y quiere saber si la solicitud es compatible.



Puede ver aquí la respuesta del servidor del desafío NTML como un conjunto de números que cambia cada vez. La captura de pantalla muestra una respuesta estática que se puede utilizar para crear "tablas de arco iris". Entonces, el servidor responde con un mensaje del segundo tipo: "esto es lo que apoyo, aquí está mi nombre de dominio, aquí está mi nombre de servidor". Esta respuesta se utiliza para "sal" el hash de su contraseña, por lo que cada vez que se obtiene una respuesta única, y no puede repetirla una y otra vez con la misma solicitud.

Mensaje de tipo 3: este es el mensaje de autenticación del cliente.



Esta es la respuesta del servidor, que se codifica con el hash de contraseña para el hash NTML junto con el nombre de usuario, el nombre de la estación de trabajo y el nombre de dominio y su clave de sesión, si firma la sesión.

Esto es lo que es la versión 1 de NTML. La versión 2 de NTML es muy similar, pero se agregaron parámetros adicionales en la contraseña de respuesta y se llama al cliente para protegerse contra el uso de "tablas arcoiris", es decir, el cliente usa un elemento de aleatoriedad contra ellas.

Otra cosa de la que tenemos que hablar es la autenticación integrada de Windows. Es necesario para que cada vez que no tenga que volver a ingresar al sistema con una contraseña para usar recursos y servicios. Si está conectado a un servidor de dominio o un servidor web interno, Windows no le pide que ingrese una contraseña, solo solicita una API y recibe de ella información que el sistema debe usar para la autenticación.
En el contexto de la seguridad local, HTTP protege mediante el uso de zonas de seguridad confiables, sitios confiables o sitios locales al verificar solo un nombre de dominio de una sola palabra. Intentaré refrescar tu memoria rápidamente. Un dominio de una sola palabra primero busca un nombre DNS en los servidores DNS, luego verifica su host o nombre de host DNS y lo devuelve. Comprueba la estructura de su nombre completo y luego realiza NBNS, que es la solicitud de difusión para este nombre de dominio. De hecho, le pregunta a la red: "oye, estoy buscando un nombre , ¿conoces a alguien con ese nombre?", Distribuyendo esta solicitud a través de la red local en el modo de transmisión multimedia MBNS.

Como dije, dado que usamos el protocolo SMB en todas partes, no hay restricciones, solo tenemos autenticación automática usando SMB. Esto causa algunos problemas.

Considere el método Pass-the-hash. Se puede ver en los protocolos que NTML no usa la contraseña original para la autenticación, por lo que todo lo que necesitamos es el hash NTML mismo. Podemos acceder al hash NTML usando varias herramientas de Windows, es decir, extraer este hash del almacenamiento local o de la memoria. Todo esto se describió en otros discursos, solo les recuerdo rápidamente la esencia del problema para mostrar las diferencias entre los dos métodos.
El hecho es que, por lo general, para este Pass-the-hash necesita acceso a nivel de administrador del sistema local, porque con una cuenta de invitado no tendrá acceso al almacenamiento local ni a la memoria local.

Entonces, ¿qué es la retransmisión NTLM y en qué se diferencia del método Pass-the-hash? Constantemente me dicen: "¡Ah, estás hablando de Pass-the-hash!", Y respondo: "No, estoy hablando de NTLM Retransmisión". La diferencia es que la retransmisión NTLM no requiere privilegios de administrador para acceder a la red o al sistema. De hecho, te conectas a la red desde adentro o desde afuera y comienzas a trabajar como invitado. No hay credenciales, no hay acceso al sistema, solo la solicitud se autentica si regresa a los tipos de mensajes anteriores 1,2,3. No hay verificación cuando el anfitrión responde a su solicitud y se asegura de que usted sea usted.
Lo que hacemos es crear un servidor fraudulento para recibir solicitudes de autenticación y luego retransmitirlas al servidor de destino.

Escuchemos la historia para que comprenda la esencia del problema. En 1996, cuando Dominic Brezinsky descubrió una vulnerabilidad en el proceso de autenticación utilizando el protocolo de acceso CIFS, la primera versión del protocolo SMB. Después de eso, primero hablaron sobre la posibilidad de usar NTLM Relaying. En 2001, NTLM logró encontrar un agujero en SMB. Primero, el empleado de Veracode, Christian Ryu (también conocido como Dildog), dijo esto en una conferencia de DefCon, y luego el hacker Josh Bushbinder (también conocido como Sir Dystic) publicó un código de explotación que funciona con esta vulnerabilidad. Utilizamos el protocolo Telnet y la vulnerabilidad del navegador IE, donde simplemente podía escribir telnet: // ip y autenticar automáticamente.



Después de eso, el método NTLM Relaying comenzó a usarse para redirigir las solicitudes SMB a otros hosts o a su propio host. Esto continuó hasta noviembre de 2008, cuando Microsoft Windows parcheó los agujeros donde pudo, evitando que la solicitud de autenticación NTLM regrese con el parche MS08-068.

Por lo tanto, perdimos la capacidad de devolver una solicitud de autenticación a nuestro host y solo pudimos reenviarla a otros hosts debido a las características de diseño del protocolo. En 2008, un hombre bajo el apodo de Grutz hizo una declaración sobre la muerte de DefLon NTLM. Creo que esta fue una de las mejores actuaciones en los últimos años, porque tuvo un gran impacto en el entorno corporativo.



Llamó a su instrumento el nombre de Pokemon Squirtle y la tecnología: "mono en el medio" por analogía con "hombre en el medio". Esta herramienta permitió ejecutar NTLM Relaying a través de HTTP y también funcionó bien con SMB, recibiendo solicitudes de autenticación.



Esta captura de pantalla fue tomada hace dos días, y el desarrollo de su aplicación Squirtle aún está en curso. Decidí que todos están familiarizados con estas vulnerabilidades, cuyos problemas estamos hablando una y otra vez, porque no se pueden solucionar de ninguna manera y se manifiestan en todas partes. Pertenezco al entorno corporativo, por lo tanto, soy consciente del problema del que me quejo constantemente: que los sitios no realizan el cifrado SSL de las solicitudes de autenticación, del mismo modo que no cifran sus cookies. En 2010, se lanzó una extensión del navegador Firefox llamada Firesheep.

Probablemente esté familiarizado con esta herramienta para interceptar cookies HTTP no encriptadas de sitios web populares y otras sesiones de trabajo con sitios a través de Wi-Fi o rastreo de redes, haciéndose pasar por otros usuarios.



Me pregunté, ¿de dónde sacó la gente la necesidad de crear tales herramientas? Resulta que se trata de facilidad de uso. Es bastante fácil crear una aplicación que le permita hacerse pasar por otra persona. Así que decidí comenzar desde el mismo y hacer una aplicación que permitiera usar el método NTLM Relaying para mostrarle a la gente que es tan simple como Firesheep.



Comencé a trabajar en NTLM Relaying para ver cómo es posible la compatibilidad con múltiples protocolos. Mucha gente habló sobre la posibilidad teórica de tal apoyo, pero nadie lo puso en práctica. Entonces, mi objetivo era crear Firesheep para NTLM.
Decidí comenzar a aprender Ruby porque originalmente iba a integrar mi exploit en Metasploit. En 2012, quería abordar este tema en las conferencias Black Hat y DefCon, pero mi informe fue rechazado. Mis discursos no solo fueron rechazados, recibí un correo electrónico falso que DefCon aceptó mi informe. Un amigo pensó que sería muy divertido engañarme, es un idiota. Tenía un amigo aquí cuya actuación fue aprobada, y mi amigo recogió y me envió el contenido de su correo electrónico. No presté atención al encabezado, que decía "De Nikita" y entró en pánico, dándome cuenta de que debía hablar en DefCon en una hora y media, pero luego recibí una carta de rechazo real.

¿Crees que esto termina la historia? No, tres semanas después, Nikita me dice: "oye, tenemos una apertura el domingo, alguien se negó a participar, ¿quieres hablar en su lugar?" Pensé que estaba bien, pero luego me di cuenta de que tenía muy poco tiempo antes de la presentación, y comencé a codificar como un loco, tratando de terminar todo a tiempo.

¿Cuáles fueron mis problemas? En primer lugar, las herramientas extranjeras no podían hacer el trabajo de Pentester que necesitaba, carecían de varios protocolos que pudieran devolver solicitudes de autenticación. La mayoría de los protocolos relacionados con el uso de SMB y HTTP, y ninguno de ellos admitía LDAP para la autenticación MySQL, o al menos para probar escritorios remotos, VPN y similares.

Otro problema fue que todos remitieron cada solicitud al mismo destino. Es decir, recibimos datos de usuario, cuentas de computadora y enviamos toda la autenticación con un solo propósito, por lo tanto, no pudimos identificar a los usuarios antes de la autenticación, es decir, antes de recibir un mensaje de Tipo 3. Si recuerda estos mensajes de tipo 1,2,3, entonces el mensaje de Tipo 2 es la respuesta del servidor. Es único para cada sesión, y no sé quiénes son estos usuarios hasta que envían el último mensaje de Tipo 3, y no sé qué respuesta y de qué servidor es el usuario. Estaba interesado en por qué no hay herramientas que hagan esto, así que analicé más de cerca protocolos como SMB y HTTP, luego hablaremos de esto con más detalle.

Windows 8 y Windows 2012 aún admiten NTLM de forma predeterminada. Esto da miedo porque sabemos sobre la vulnerabilidad de estos protocolos, pero NTLM no ha desaparecido. Por lo tanto, nosotros, como pentesters, informamos a las organizaciones que deben protegerse de tales ataques.
Entonces, quería resolver este problema y creé una herramienta llamada ZackAttack. Sé que se ve feo, pero pasamos por un montón de nombres, personalmente me gustó el último: “NTLMv2? Perra por favor ... ".



¿Qué contiene esta herramienta? Revisaré rápidamente estas diapositivas, porque creo que ya te has entretenido lo suficiente. ZackAttack consta de varios componentes diferentes, hablaremos sobre cada uno de ellos y cómo se relacionan entre sí.

En primer lugar, hay un servidor SMB HTTP: este es un servidor fraudulento que acepta solicitudes de autenticación. Por lo tanto, los clientes se dirigen a este servidor, se autentican y el servidor los mantiene autenticados. A continuación, tenemos un conjunto de reglas para la operación automática.

Tenemos clientes para tales exploits automáticos, así como API que podemos asociar con cualquier aplicación de terceros que transfiera las solicitudes de retransmisión de NTLM.



Finalmente, tenemos una generación de cargas útiles que obligan a los clientes a autenticarse automáticamente para nosotros.

¿Qué son los servidores fraudulentos? En primer lugar, autentican a los usuarios y nos lo guardan, luego les diré cómo lo usamos.



Necesitamos a todas estas personas para mantener su estado de autenticación. Existen muchas herramientas que deshabilitan a los usuarios después de la primera autenticación exitosa, pero nuestra herramienta ZackAttack mantiene a los usuarios autenticados durante el mayor tiempo posible. En Windows LAN para SMB, esto es aproximadamente 30 veces antes de que se desconecte la conexión. Por lo tanto, necesitamos descubrir quién es este usuario, mientras lo mantenemos autenticado.

La primera solicitud de autenticación es una llamada estática del tipo 112233. Aquellos de ustedes que están involucrados en el pentesting saben que esta es una especie de tarea para las "tablas arcoíris". Como dije, necesitamos averiguar quién es este usuario, pero no lo sabemos hasta que lleguemos al mensaje de Tipo 3, por lo que enviamos un montón de llamadas. Yo llamo a esto el "elemento de Alzheimer" cuando el sistema olvida quién es el usuario y le pide que se autentique cada vez que se conecta sin cerrar la sesión.

La razón por la que hacemos esto es porque HTTP, WPAD y otras solicitudes no siempre admiten cookies, además, la identificación de SMB a través de IP o el puerto de origen El puerto de origen no funciona si intenta hacerlo de forma remota a través de Internet.

Por lo tanto, para el servidor HTTP, utilizamos una redirección 302 con el parámetro Keep-Alive, que nos permite mantener la sesión abierta mientras el socket está cerrado, y después de autenticarnos, sabemos quiénes son y lo sabemos hasta el final de esta sesión.

Con SMB fue más difícil, tuve que escribir un servidor SMB personalizado, es un poco defectuoso, pero funciona de todos modos. No voy a profundizar en el mecanismo de autenticación del protocolo SMB, porque tomará un par de horas, así que lo explicaré brevemente. Después de que el servidor recibe la solicitud de autenticación, parece olvidar quién es este usuario y dice: "¡Oh, hola, un placer conocerte!" "¡Genial, quiero conectarme!" "Espera, ¿y quién eres?" Y de nuevo requiere una solicitud de autenticación.

Por lo tanto, necesitamos recibir solicitudes de autenticación que lleguen a los servidores HTTP y SMB. Mucha gente pregunta cómo llevamos a cabo el ataque "hombre en el medio". Hay varias formas diferentes de lograr que las personas se autentiquen con nuestro servidor y luego enviarlas a hacer otras cosas. Por lo tanto, considere cuál es la carga útil en nuestra herramienta.

En primer lugar, se trata de WPAD, un protocolo para la configuración automática de proxy, que le permite determinar la ubicación del archivo de configuración. En Windows, cuando intenta conectarse, como sabe, aparece una ventana con una pequeña marca de verificación "buscar automáticamente la configuración de mi conexión" que activa WPAD. Este protocolo envía solicitudes para verificar las transmisiones de red y DNS, para que pueda falsificar estas solicitudes y responderlas.

Por defecto, en Windows, la computadora autenticará automáticamente el servidor WPAD a través de HTTP con las credenciales de usuario actuales.

18:00 min

Conferencia DEFCON 20. Captura en 60 segundos: de una cuenta de invitado a un administrador de dominio de Windows. Parte 2



Gracias por quedarte con nosotros. ¿Te gustan nuestros artículos? ¿Quieres ver más materiales interesantes? Apóyenos haciendo un pedido o recomendándolo a sus amigos, un descuento del 30% para los usuarios de Habr en un análogo único de servidores de nivel de entrada que inventamos para usted: toda la verdad sobre VPS (KVM) E5-2650 v4 (6 núcleos) 10GB DDR4 240GB SSD 1Gbps de $ 20 o cómo dividir el servidor? (las opciones están disponibles con RAID1 y RAID10, hasta 24 núcleos y hasta 40GB DDR4).

VPS (KVM) E5-2650 v4 (6 núcleos) 10GB DDR4 240GB SSD 1Gbps hasta la primavera sin cargo al pagar durante medio año, puede ordenar aquí .

Dell R730xd 2 veces más barato? ¡Solo tenemos 2 x Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100 TV desde $ 249 en los Países Bajos y los Estados Unidos! Lea sobre Cómo construir un edificio de infraestructura. clase utilizando servidores Dell R730xd E5-2650 v4 que cuestan 9,000 euros por un centavo?

Source: https://habr.com/ru/post/es436472/


All Articles