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

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

Lo bueno es que podemos ingresar a la red local falsificando DNS. ¿Qué pasa con la ingeniería social que tiene en cuenta las preferencias e inclinaciones de los usuarios? Los Pentesters saben que en IE puede colocar etiquetas de archivos de imagen, por ejemplo, en formato .jpg, para la ruta de red UNC, y luego IE transferirá esto de nuevo a Windows y se conectará automáticamente a la carpeta de red, tratando de obtener la imagen solicitada u otra cosa, por ejemplo , JavaScript, iFrame, etc. Entonces, por hoy, IE tiene autenticación automática.



Lo mismo se puede hacer en Firefox y Chrome, aunque la gente piensa que estos navegadores son más seguros. Esta captura de pantalla muestra la consola de errores de Firefox, que establece que el navegador no puede descargar este archivo de imagen de la red pública, ya que la política de seguridad impide la descarga de archivos que no están en el contexto de seguridad del navegador. Una característica interesante de nuestra herramienta es que los navegadores Firefox y Chrome pueden verse obligados a descargar archivos simplemente enviando encabezados HTTP para forzar Content-Type: application / force-download para descargar y luego abrir estos archivos desde la carpeta Temp o directamente desde el escritorio. Por lo tanto, establecemos el contexto de seguridad de los archivos y activamos la autenticación automática en la SMB general, por lo que ahora puede obligar a los usuarios a autenticarse en su servidor fraudulento.

Pero, ¿qué sucede si no hacen clic en "cargar archivo" o lo abren desde la carpeta Temp? En este caso, puede hacerlo para que los usuarios se autentiquen automáticamente simplemente al ver una página HTML en un navegador. Para hacer esto, los complementos deben estar conectados a Firefox y Chrome. Me llamó la atención el complemento QuickTime, que los usuarios suelen instalar por defecto. Sé que hay docenas de complementos diferentes, pero la mayoría de las veces conoces personas con iTunes en tus iPhones e instalas QuickTime. Revisé la lista de características de QuickTime y me pregunté cómo atornillarlo a mi servidor de red fraudulento para obligar a las personas a autenticarse ingresando su nombre de usuario y contraseña.
Pensamos un poco y decidimos que puede insertar una lista de reproducción en la ruta de red de UNC, y luego los usuarios autenticarán automáticamente y omitirán el contexto de seguridad local. Necesitamos trabajar un poco más en los otros dos complementos, pero por ahora, QuickTime hace un excelente trabajo de nuestra tarea.

Otra forma de obligar a las personas a autenticarse automáticamente en nuestro servidor es a través de correos electrónicos. Algunas personas saben que en Outlook puede usar correo electrónico HTML o correos electrónicos usando una plantilla HTML. Si tenemos un recurso de red compartido, podemos insertarlo dentro de dicho correo electrónico, y si el usuario abre este correo electrónico, se conectará automáticamente a este recurso y lo autenticará.

Para nuestros propósitos, puede usar archivos en formato .docs. Cualquier documento puede usarse de la misma manera que una imagen o un archivo HTML insertado en un UNC, cuya apertura se conectará automáticamente a un recurso compartido de red.

No te olvides del archivo desktop.ini. Esto no es muy conocido, pero puede generar este archivo para instalar recursos de escritorio, como iconos y fondos de pantalla, y colocarlo en una carpeta "compartida". En este caso, nuevamente, el sistema se conectará automáticamente para recibir estos íconos e "iniciar sesión" con la cuenta de usuario actual.



Del mismo modo, puede cambiar la configuración del archivo de acceso directo con la extensión .lnk para conectarse automáticamente al recurso.

Por lo tanto, nuestra herramienta crea rápida y fácilmente automáticamente estos archivos .ini o HTML.
Lo último de lo que quiero hablar es MITM, o "el hombre en el medio". Puede redirigir las solicitudes de autenticación NTLM o incrustar contenido HTML en las páginas, como no lo hace la herramienta, y así ayudarlo a hacer su trabajo. De esta manera, puede forzar a los clientes a conectarse a un servidor fraudulento para implementar NTLM Relay. Existen otras herramientas que le permiten realizar NTLM Relay a través de SMB o HTTP y obligan a los usuarios a autenticarse por usted.

Otra característica interesante de Squirtle es la capacidad de convertirlo en un punto de partida para crear solicitudes de API, donde puede usar cualquier herramienta que haya escrito para recibir mensajes de Tipo 2 y 3. El mensaje de Tipo 3 es la última solicitud de autenticación, debe enviar un mensaje de API para recibirlo. Escriba 2 y recupérelo. Rápidamente escribí una API que le permite usar cualquier conjunto de herramientas que desee, puede cambiar el código fuente y usar servidores fraudulentos para conectarse, etc.

Sin embargo, si usted es un pentester o está probando usuarios, entonces necesita algunas relaciones, interacción inversa. Por lo tanto, nuestra herramienta incluye un conjunto de reglas. Ya he dicho que todas las herramientas existentes envían a los usuarios a la misma fuente, y debemos determinar quiénes son estos usuarios. Quería hacer esto con un solo clic para que, como dije, sería posible obtener la autoridad de un administrador de dominio en 60 segundos.

Escribí en nuestras reglas de aplicación basadas en el hecho de que los usuarios pertenecen a grupos y los objetivos pertenecen a grupos de objetivos.

Tan pronto como descubramos que el usuario pertenece a algún grupo y puede acceder a algo con conexión automática, no necesitamos obligarlo a conectarse, esperar y esperar que regrese. Establecimos una regla simple, luego lo mostraré en la interfaz de usuario que si un usuario ingresa al grupo X, se usa un cierto módulo Y para realizar la acción Z en relación con los grupos objetivo T. Después de un par de segundos demostraré cómo funciona esto.

Las reglas también consisten en verificar inmediatamente las solicitudes de API, verificar las reglas generales y repetir esto hasta que se agote el tiempo de espera. Tan pronto como se agote el tiempo de espera, debe responder con una llamada estática y mantener el estado de autenticación, sin permitir que el usuario se desconecte.

Podemos usar SMB para conectarnos a SMB, HTTP para conectarnos a HTTP, HTTP para conectarnos a SMB, etc. implementando NTLM Relaying. El problema es que las personas prácticamente no usan muchos otros protocolos, así que decidí echar un vistazo más de cerca a protocolos como LDAP y MSSQL.

Hablaré sobre LDAP un poco más tarde, pero por ahora notaré que MSSQL es algo genial, porque podemos obtener una base de datos, podemos acceder a los datos, y esto es increíble.



Dado que estamos tratando con clientes, queremos que las acciones se realicen automáticamente inmediatamente después de conectarnos. Por lo tanto, enumeramos usuarios y grupos con Metasploit, que se presentó en la conferencia BlackHat de este año. Por lo tanto, como pentester, obtuve acceso a archivos compartidos, tuve la oportunidad de ejecutar comandos y tomé posesión de información sobre los usuarios y grupos objetivo sin la autoridad del administrador. Sin embargo, con todo esto, no puedo conectarme a los controladores de dominio. La razón es que, por defecto, la mayoría de los controladores de dominio tienen una firma SMB. Para aquellos que no están familiarizados con la firma SMB, diré que este es el mecanismo de seguridad del protocolo SMB, también llamado firmas de seguridad. Utiliza el hash NTLM original para firmar la sesión y firma cada paquete, y si no hay firma, lo desconecta. Por lo tanto, de manera predeterminada, no podemos aplicar NTLM Relaying a un controlador de dominio. Esto me molestó, así que decidí averiguar qué tan fácil y rápido era llegar a este controlador. Volvamos un par de diapositivas.



Resultó que LDAP está habilitado por defecto en el controlador de dominio, lo que permite usar la autenticación NTLM, lo cual es genial. Pero no pudimos cambiar la contraseña, porque, por regla general, cambiar la contraseña o agregar un usuario requiere SSL y SSL está incluido en LDAP si el dominio tiene un certificado de CA. Lo que hicimos fue ingresar a nuestra herramienta para que pueda cambiar las contraseñas de los usuarios, excluir y agregar usuarios, enumerar dominios, extraer hashes de usuarios activos de la memoria, iniciar sesión en el control de dominio y hacer otras cosas interesantes. Lo bueno es que puede agregar usuarios a grupos sin SSL y otras cosas, por lo que, como pentester, puede tomar y conectar las cuentas de otros usuarios, agregarlas al grupo de administradores de dominio si tiene privilegios de administrador, y así sucesivamente.

De vuelta a SMB. Durante mi vuelo de 4 horas aquí desde Chicago, pensé en usar el proxy SMB SOCKS para nuestros propósitos. Cualquier persona que sepa es consciente de que este protocolo permite que las aplicaciones se comuniquen a través de un firewall que bloquea una conexión directa usando un servidor intermedio al que ambos clientes pueden conectarse. Es decir, el proxy SOCKS envía datos limpios de un cliente a otro y viceversa. Por lo tanto, este proxy puede reemplazar los paquetes NTLM con datos transmitidos.



Mediante HTTP, podemos vincular servidores de SharePoint a sitios web internos. Algunas personas creen que no habrá ningún problema con NTLM porque está en una red interna, pero ¿qué pasa con las redes externas? A veces también hay servidores de SharePoint allí, pero no con demasiada frecuencia. Pensé que muchas organizaciones están abiertas al acceso externo, soportan NTLM y permiten el intercambio de servicios web. Para aquellos que no están familiarizados con los Servicios web de Exchange (EWS), diré que son una especie de API HTTP, que generalmente se encuentran en el mismo servidor que Outlook Web Access. De manera predeterminada, utilizan el método de autenticación Negotiate HTTP, que admite NTLM, para que podamos realizar una retransmisión HTTP externa al servicio ubicado en EWS.

Esto es preocupante, porque desde el exterior puede acceder a su correspondencia, contactos, calendario de eventos y establecer sus propias reglas para el correo electrónico utilizando puntos de conexión HotSpot. Puede acceder al servidor EWS a través de Internet si no tienen reglas de firewall para las conexiones salientes que no le permiten conectarse a un servidor SMB fraudulento y recibir autenticación automáticamente. Y todo esto es posible debido al hecho de que todos tienen un teléfono móvil conectado a los servicios EWS y sincronizado con ellos.

Y ahora necesito un trago, porque en este lugar quería comenzar una demostración. Por lo tanto, esta diapositiva muestra cómo se ve la interfaz gráfica de usuario de mi aplicación ZackAttack. Desplazaré hacia abajo la página justo debajo para ver la configuración de acciones, objetivos, grupos objetivo y grupos de usuarios.



Para que pueda hacerse una idea de su funcionalidad y lo poderoso que puede ser. En este momento se está ejecutando un servidor HTTP fraudulento, un servidor SMB fraudulento y un servidor HTTP de gestión. La diapositiva muestra además en qué grupos están los usuarios.



Muestra quién y cuándo está conectado a la red, para que pueda ver qué usuario se ha vuelto a conectar.



A la derecha, las cuentas del sistema y las cuentas de los usuarios existentes se muestran en rojo, desde donde puede enumerar objetivos a través de SMB con un solo clic, recibir correo de los servicios web de Exchange, usar el shell de comandos si es un administrador de sesión, acceder a archivos compartidos, SharePoint, etc.



Como dije, podemos crear reglas y podemos agregar usuarios a los grupos mediante enumeración automática o mediante la creación manual de grupos, por ejemplo, creando un grupo llamado "muu".



Algo que no puedo hacer, como dije, a los dioses de demostración no les gusto. Tendremos que regresar y modificar algo en el programa.



Lo siento chicos, pero esto es solo una versión alfa, escribí este código solo en 3 semanas. Ahora agregaré un grupo llamado "yar", ahora verá que ambos grupos han aparecido en la parte inferior, en los que se ha agregado el usuario seleccionado.



Como dije, también podemos enumerar varios grupos de usuarios desde un controlador de dominio, esta es la pestaña "Grupos de usuarios" y crear reglas para la autenticación automática usando la pestaña "Reglas de ataque" - "Reglas de ataque".

Aquí ve a los usuarios del grupo Yar recién creado que pueden conectarse a los servicios web de Exchange para fines específicos de los grupos objetivo, y aquí también puede agregar cualquier dirección IP, por ejemplo, 10.1.10.250 al grupo objetivo.



Tan pronto como se recibe una solicitud de autenticación de alguien del grupo de usuarios, nos conectamos automáticamente al EWS y extraemos todas las letras de la Bandeja de entrada, de la carpeta Borradores, podemos agregar fácilmente otra carpeta, por ejemplo, Elementos enviados.



La mejor parte de esta herramienta es que después de la autenticación, la sesión se mantiene abierta durante toda la conexión con el servidor fraudulento y se realizan todas estas acciones. Por lo tanto, no necesitamos autenticarnos nuevamente para recibir correos electrónicos entrantes.
Como tenemos 30 solicitudes provenientes del sistema, primero podemos establecer unas 30 reglas y luego realizar una variedad de acciones en esta conexión en particular. Como dije, podemos repetir todos estos pasos para todos los usuarios y para todos los propósitos de esta conexión o para propósitos específicos.

Al mismo tiempo, podemos generar una carga útil haciendo clic en la pestaña Auth Payloads. Desde aquí, puede crear archivos HTML para determinar el OC del usuario y usar uno de los 3 métodos para forzar al navegador a autenticarse automáticamente.



Aquí puede crear desktop.ini para cargar archivos en carpetas compartidas y usar el generador de archivos para inyectar UNC Path en un archivo xml .doc, crear archivos de acceso directo .lnk y archivar archivos Zip, al igual que crear automáticamente archivos de correo XTML. Todo esto se hace lo más simple posible con la ayuda de Firesheep y NTLM Relaying.

Finalmente, a través de la pestaña Resultados + Registros, mi herramienta rastrea los hashes del usuario como lo hizo antes de la autenticación estática, por lo que puede intentar descifrar las contraseñas.



Entonces, esta fue una demostración de las capacidades de ZackAttack. Entonces, ¿cómo nos protegemos de esto? La defensa es limitar la superficie de ataque.



Cada uno tiene sus propios métodos de defensa contra ataques de este tipo. La gente sugiere usar NTLM versión 2. Mi herramienta es compatible con esta versión, pero no hay diferencias significativas entre la versión 2 y la versión 1.

Puede instalar un firewall en el puerto de salida 445, que lo protegerá de cualquier persona que envíe cargas útiles fraudulentas que fuercen la autenticación automática. Sin embargo, esto no protege contra la penetración a través de dispositivos móviles.

Puede configurar políticas de grupo para restringir el uso de programas GPO en Windows 7 para limitar los objetivos de la autenticación NTLM. Todos afirman que la mejor solución es Kerberos. Sin embargo, el problema es que la organización necesitará cambiar todo a Kerberos, y esto no funcionará, porque hay muchas cosas que no son compatibles con Kerberos. Otra cosa es que si habilita Kerberos, no podrá admitir NTLM, lo mismo ocurre con la firma, porque para aquellos que no conoce, deberá firmar cada paquete con un hash de contraseña original. La firma LDAP, las firmas SMB, la autenticación HTTP avanzada: todo esto no es compatible con Cerberus, por lo que las personas se equivocan al pensar que las firmas resolverán todos los problemas. Si aplica firmas obligatorias, esto puede deshabilitar muchas cosas.

Por lo tanto, al proteger la organización, debe mantener un cierto equilibrio. Si usted es un usuario final, generalmente no se preocupa por esas cosas, pero si es administrador del sistema de una empresa, el mayor problema para usted será la necesidad de negarse a usar NTLM.

Dado que Windows 8 y Windows 2012 todavía son compatibles con NTLM de manera predeterminada, tomará un tiempo renunciar a esto y seguir usando Kerberos, y espero que mi herramienta ayude. Se publicará el martes 31 de julio tan pronto como llegue a casa en zfasel.com/tools . También está disponible en el DVD de esta conferencia, así como en mis diapositivas. Si quieres decirme cuán desagradables fueron mi desempeño y mi demo, envía correos electrónicos a dc20@zfasel.com o busca en Twitter mi apodo @zfasel.



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/es436474/


All Articles