Demostración en vídeo de este post:
En el post anterior he explicado el uso de la herramienta SMBMap y los beneficios que aporta a la hora de ejecutar operaciones de post-explotación sobre servicios Samba, SMB y muy especialmente, sobre entornos de directorio activo y en esta ocasión, es el turno de CrackMapExec. Lo cierto es que tanto SMBMap como CrackMapExec son muy similares y permiten hacer prácticamente las mismas operaciones de enumeración y reconocimiento, de hecho, incluso algunas opciones son comunes en ambas herramientas ya que heredan las características de Impacket, una estupenda librería que merece mucho la pena conocer y a la que se le ha dedicado una serie completa de posts que puedes leer en los siguientes enlaces:
Network Hacking con Impacket – Parte 1
Network Hacking con Impacket – Parte 2
Network Hacking con Impacket – Parte 3
Network Hacking con Impacket – Parte 4
Network Hacking con Impacket – Parte 5
Network Hacking con Impacket – Parte 6
Si es interesante para ti todo lo relacionado con la seguridad en Active Directory y los ataques más interesantes que se pueden llevar a cabo en estos entornos, te recomiendo que te apuntes al volumen 1 y volumen 2 del entrenamiento en sistemas Windows que tenemos disponible en Securízame.
Hay varias formas de instalar la herramienta y probablemente, la más cómoda sea por medio de Docker, ya que existe una imagen preparada para poder crear un contenedor y lanzar la herramienta desde éste. Otra alternativa consiste en descargar la última versión disponible desde la sección de releases y ejecutar el binario con Python 3.8 o superior. En cualquier caso, puedes leer la documentación del proyecto en donde se explican las diferentes opciones de instalación.
Una vez se cuenta con la herramienta instalada y preparada para usar, hay que tener en cuenta que no solamente soporta SMB, cuenta con otros módulos que permiten la enumeración de servicios tales como LDAP, RDP, WinRM, SQL Server y otros muy orientados a entornos de directorio activo.
Para listar los protocolos soportados basta con ejecutar la herramienta con la opción «–help», cada uno de ellos cuenta con sus opciones concretas, las cuales también se pueden listar con «cme <protocolo> –help»
La herramienta cuenta con opciones para listar usuarios, grupos y las unidades compartidas en un servicio del tipo SMB, basta simplemente con indicar la opción correspondiente y CME hará el resto.
Como se puede ver en la imagen anterior, con la opción «–users» y «–groups» es posible enumerar los usuarios y grupos respectivamente. Además, el proceso de autenticación puede ser por medio de usuario y contraseña, hash NTLM o token TGT de Kerberos en el caso de una máquina que esté unida a un directorio activo.
Por otro lado la opción «–shares» permite listar las unidades compartidas, incluyendo los permisos y etiqueta asociada, igual a como lo hace SMBMap
La herramienta viene con una opción para realizar búsquedas de forma recursiva en una unidad compartida indicada por parámetro. Entre otras cosas, permite indicar patrones de búsqueda, nivel de profundidad o recursividad y si debe buscar directorios o solo ficheros que cumplan con el patrón dado.
Otra opción interesante consiste en obtener la política que se utiliza en un directorio activo para las contraseñas de los usuarios. Con la opción «–pass-pol» la herramienta se encargará de enseñar toda la información de las contraseñas en la terminal, sin embargo son necesarios permisos de administrador para realizar esta operación.
En cualquier sistema Windows o controlador de dominio, los ficheros correspondientes a la base de datos local (SAM) y la de dominio (NTDS) son fundamentales para el correcto funcionamiento de todo el sistema. Este tipo de elementos se pueden consultar con CME y funciona de un modo muy similar a como lo hace Impacket con el script «secretsdump.py». Para realizar el volcado de lo que se encuentra almacenado en dichos ficheros basta con indicar las opciones –sam o –ntds
Por otro lado, la información almacenada en el proceso LSASS es importante también, ya que se utiliza para llevar a cabo el proceso de autenticación. Los LSA Secrets se pueden extraer utilizando la opción «–lsa», sin embargo hay que tener en cuenta que nuevamente, se requieren permisos de administrador.
Por último, CrackMapExec soporta la ejecución de comandos en el sistema remoto con la opción «-x», exactamente igual que SMBMap
Si bien la posibilidad de ejecutar instrucciones es una característica muy potente de la herramienta, también cuenta con una serie de módulos que se pueden ejecutar sobre el sistema y que permiten realizar todo tipo de labores de pentesting. Para consultar los módulos que se encuentran disponibles basta con ejecutar la opción «-L» o «–list-modules». El listado va creciendo en cada nueva versión ya que poco a poco, son más las personas que deciden aportar al proyecto.
El tema de los módulos en CrackMapExec bien merece la pena explicarlo en otro post y así se hará. Es una herramienta que está evolucionando con el tiempo y que deberías tener en el radar si te dedicas a realizar pruebas de pentesting en sistemas Windows, ya sean estaciones de trabajo o controladores de dominio.
Un saludo y Happy Hack!
Adastra.