Seguridad en Sistemas Operativos Windows e Introducción al Software y Exploit Mimikatz, Parte II

En la Parte I de este tutorial hemos visto aspectos importantes sobre la Seguridad de Windows. En esta Parte II profundizaremos sobre la utilización del Exploit Mimikatz, la creación de Golden Tickets y otras de sus características.

Sabemos que un atacante utilizará Mimikatz con el propósito de robar nuestras credenciales e intentar escalar privilegios, aunque también puede ser utilizado como herramienta Pentesting para encontrar vulnerabilidades en nuestra Red.

Si realmente queremos estar protegidos contra este Exploit, además de tener un Sistema Operativo actualizado, será recomendable disponer de un buen EndPoint o Antivirus que lo detectará y eliminará.

Debemos saber que los Sistemas Operativos como Windows Server 2012 R2> y posteriores disponen de una protección LSA, por lo que veremos más adelante métodos para desactivar dicha protección.

Qué puede hacer Mimikatz

Actualmente Mimikatz puede explotar diferentes tipos de vulnerabilidades, lo que proporciona al atacante diferentes caminos para conseguir recopilar credenciales de usuarios, además de escalar privilegios con ellas. Entre las vulnerabilidades que puede explotar están:

  • Pass-the-hash: Windows utiliza para guardar las contraseñas un hash NTLM, por lo que un atacante utilizará este hash para hacer login en las máquinas. Esto quiere decir que el atacante no necesita crackear la clave para acceder sino tan sólo conseguir el Hash.
  • Pass-the-ticket: Las nuevas versiones de Windows guardan sus datos importantes y claves en una construcción llamada Ticket. Mimikatz permite utilizar esta funcionalidad para que un usuario pase su Ticket de Kerberos a otro ordenador con el fin de hacer login a través de el.
  • Over-Pass the hash (pass the key) es la versión mejorada de pass-the-hash. Pasa una clave única que no hace más que suplantar a un usuario de un controlador de dominio.
  • Kerberos Golden Ticket: Este es un ataque pass-the-ticket, que no es más que un Ticket especifico de una cuenta oculta llamada KRBTGT, que es la cuenta encargada de encriptar los Tickets Kerberos. El Golden Ticket aporta credenciales de administrador de domiminio para cualquier ordenador de la red.
  • Kerberos Silver Ticket: es otro ataque pass-the-ticket, pero su ventaja radica en que es más fácil de utilizar para atacar servicios específicos de la red. Kerberos asigna un ticket TGS a un usuario con el que podrá hacer login en servicios de la red. Como Microsoft no siempre comprueba un TGS después de ser utilizado, será posible utilizarlo evitando las protecciones de este.
  • Pass-the-cache, es un ataque que no se aprovecha de Windows. Aunque es básicamente un ataque pass-the-ticket, habitualmente utiliza las credenciales de acceso encriptadas guardadas de Sistemas Operativos Mac/Unix y Linux.

Descarga de Mimikat

Podemos descargar Mimikatz en forma de ejecutable o descargar su código fuente para compilar. Dispone de 2 versiones: una para ejecutar en sistemas de 32bits y otra para 64bits, por lo que debemos tener en cuenta este punto a la hora de ejecutar Mimikatz. Tendrás que desactivar las protecciones y Antivirus de tu sistema para poder descargarlo.

Esta es su estructura de ficheros:

El atacante y Mimikatz

Una organización puede disponer de cientos o miles de máquinas y generalmente los atacantes se centran en atacar el eslabón más débil de la cadena, analizando máquinas vulnerables con Sistemas de Seguridad insuficientes:

  • Equipos sin actualizar.
  • Sin Endpoint o Antivirus.
  • Usuarios con contraseñas débiles.
  • Sin doble factor de autenticación.

Una vez el atacante consigue acceder a la máquina, intentará escalar privilegios, deshabilitar las protecciones e instalar sus propios Exploits o Scripts con el objetivo de capturar información.

Si un atacante consigue alojar Mimikatz en la máquina que está atacando, podrá comenzar a utilizarlo.

La Interfaz de Shell de Mimikatz

Cuando ejecutamos Mimikatz por primera vez, este nos activa una interfaz de Shell propia. Mimikatz puede utilizarse desde su interfaz de Shell o fuera de ella.

Como principiante en el manejo de Mimikatz, debemos saber que Mimikatz está estructurado en módulos y cada uno de ellos dispondrá de un conjunto de comandos. Al acceder a Mimikatz, nos situa en el módulo Estandar y esta es su relación de comandos:

Uno de los módulos que tenemos que tenemos que utilizar al comenzar con Mimikatz es privilege, que nos proporciona comandos específicos para la manipulación de privilegios.

Debug nos va a permitir depurar procesos, que no podríamos realizar de otra forma, por lo que esta será una de las primeras cosas que debemos activar.

Otro paso opcional será crear un log, de todo la información capturada por pantalla. En este caso utilizamos el módulo log. Si activamos el log sin indicar un nombre de fichero, toda la información será guardada en un fichero llamado mimikatz.log

Una vez hemos llegado a este paso, podemos comenzar a obtener algo de información. Empezamos con el módulo Sekurlsa, que se encarga de la extracción de Passwords, Identificadores, Códigos Pin y Tickets de la memoria, en concreto del proceso lsass (Local Security Authority Subsystem Service). Esta es una lista de sus comandos:

Empezamos con el módulo sekurlsa y lo combinamos con el comando logonpaswords para así extraer los tickets y claves de la memoria.

Mimikatz extrae información de usuarios, así como claves de los usuarios, desde el último usuario que ha accedido al sistema y todos aquellos usuarios que han accedido recientemente a la máquina. Por lo que si es un administrador es el que ha accedido a una máquina con Mimikatz, sus credenciales estarán comprometidas.

En este punto podemos comprobar que podemos ejecutar una nueva instancia con el Hash del usuario objetivo y activar una consola con privilegios. Para ello utilizamos  el comando pth (Pass the Hash) e indicamos el dominio y Hash NTLM de su cuenta:

También podemos ejecutar cualquier programa a nuestra elección, indicando en el parámetro /run el programa o script que necesitamos a ejecutar:

El módulo Kerberos

El módulo de Kerberos nos permite trabajar sin privilegios, así como interactuar con la API de Kerberos y crear tanto los Golden como los Silver Tickets. Esta es una relación de los comandos que podemos utilizar en este módulo:

Para realizar un ataque utilizando un Golden Ticket lo primero que debemos consultar es el Hash de la cuenta KRBTGT encargada de encriptar los Tickets. En primer lugar necesitamos comprometer el Hash de la cuenta KRBTGT, además de obtener privilegios de administrador del directorio activo. Los requisitos para crear en Golden Ticket son:

  • Comprometer la cuenta KRBTGT y obtener su Hash NTLM (RC4), DES or AES .
  • Obtener el Nombre del Dominio y su SID.
  • El Usuario que queremos utilizar.
  • El ID de usuario que queremos suplantar (500 para una cuenta de administrador).
  • Opcionalmente los identificadores de grupo a los que pertenecerá (512 para Administradores de Dominio)

Empezamos utilizando el módulo lsadump, encargado básicamente de interactuar con LSA para extraer credenciales, indicando el dominio y la cuenta KRBTGT.

Una vez hemos obtenido el Hash NTLM de la cuenta KRBTGT, el siguiente paso será obtener el SID del dominio al que pertenece el usuario. Con un Whoami /user obtenemos la información necesaria para continuar:

Después de haber comprometido la cuenta KRBTGT, obtener su Hash NTLM y el SID del dominio, podemos comenzar a crear nuestro Golden Ticket. Veamos a continuación cómo crear un TGT para una cuenta de usuario inexistente con privilegios elevados.

Si nos fijamos bien el Ticket generado tiene por nombre ticket.kirbi y será el que a continuación utilicemos junto al comando ptt (Pass-The-Ticket).

Como el TGT que acabamos de crear ha sido firmado y encriptado por el Hash de la cuenta KRBTGT, cualquier Controlador de Dominio deberá aceptarlo y otorgarnos un TGS (ticket granting service) para su utilización. Con esto deberíamos tener acceso al servidor:

Cómo podemos ver a continuación hemos creado Golden Ticket y hemos accedido al Controlador de Dominio. Si comprobamos el TGT actual podemos ver que el Client Name es TuAdminDeConfianza, justo el que hemos creado:

Esta es una relación de comandos que podemos utilizar a la hora de crear Golden y Silver Tickets:

  • /domain, que corresponde al nombre del dominio.
  • /sid, The SID of the domain.
  • /user, usuario que queremos suplantar.
  • /ticket, nombre del ticket con extensión .kirbi.
  • /groups, identificadores de los grupos separados por comas (Por defecto son: 513,512,520,518,519)
  • /id, RID o identificador de seguridad del usuario (500 para un administrador local)
  • /target, el servidor donde está alojado el servicio.
  • /service, El nombre del servicio que queremos acceder cuando creamos un Silver Ticket (ex: cifs, rpcss, http, mssql)
  • /ptt, inyectar el Golden Ticket generado en la memoria.
  • /startoffset, cuando estará disponible el Ticket (por defecto 0)
  • /endin, El ciclo de vida del Ticket en minutos (por defecto son 10 años) y en la política de Seguridad de Kerberos son 10 horas.
  • /renewmax, ciclo de vida de renovación del ticket (por defecto 10 años) y en la política de Seguridad de Kerberos son 7 días
  • /krbtgt, clave krbtgt cifrada en RC4.
  • /des, clave en cifrada en formato DES.
  • /rc4, clave cifrada en formato RC4.
  • /aes128, clave cifrada en formato AES128.
  • /aes256, clave cifrada en formato AES256
  • /claims: valores adicionales incluidos en el Ticket.
  • /rodc: para la generación de un Golden Ticket con el Hash de la cuenta krbtgt de un Controlador de Dominio sólo lectura.

Desactivar la Protección LSA

Windows dispone de una característica llamada LSA Protection, que lo que hace es habilitar LSASS cómo un proceso protegido del sistema y evitar que cualquier proceso sin protección interactúe con LSASS. Aunque Mimikatz puede saltarse la protección utilizando uno de sus drivers, hará que salten las alarmas en los logs del sistema.

Recuerda que tenemos que ejecutar Mimikatz con privilegios elevados de administración para eliminar la protección.

El módulo Crypto

Otro módulo interesante de Mimikatz es Crypto que nos permite además de utilizar funciones de encriptación, listar y exportar certificados que tenga instalados la  máquina.

Si lo que queremos es listar o exportar los certificados instalados en el sistema, utilizamos los parámetros –list o –export.

El módulo Event

El módulo Event nos permite limpiar el log de eventos del Sistema, con el objetivo de limpiar cualquier rastro que pueda haber dejado Mimikatz.

Protecciones ante Mimikatz

Recuerda que como administrador de Sistemas podrás protegerte ante exploits cómo Mimikatz siguiendo unas sencillas pautas de Seguridad:

  • Integra herramientas de seguridad en los Sistemas, ya sean EndPoint o Antivirus.
  • Mantén los Sistemas Operativos y su Software siempre actualizados, para protegerlos contra cualquier vulnerabilidad.
  • Limita los privilegios de los usuarios.
  • Haz Pentesting de forma regular ya sea utilizando Mimikatz o similares para encontrar vulnerabilidades.
  • Crea Políticas de Seguridad con el objetivo de restringir el acceso a procesos y recursos.

Bibliografía

A continuación os traigo una buena cantidad de páginas, que me han sido de gran utilidad para poder crear este tutorial, donde se puede obtener mucha más información sobre el funcionamiento y la utilización de Mimikatz.

  • https://adsecurity.org/?page_id=1821
  • https://book.hacktricks.xyz/windows-hardening/stealing-credentials/credentials-mimikatz
  • https://cheatography.com/wbtaylor/cheat-sheets/basic-mimikatz-usage/
  • https://www.netwrix.com/how_golden_ticket_attack_works.html
  • https://tools.thehacker.recipes/mimikatz/modules/kerberos/golden

Deja una respuesta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.