miércoles, mayo 13, 2020

CrackMapExec: Una navaja suiza para el pentesting (1 de 2)

CrackMapExec es una herramienta conocida por muchos. Para otros puede ser una gran desconocida, pero creo que si la prueban la verán potencial. Es una de esas herramientas que aporta, pero que también aglutina otras funcionalidades de otras utilidades. Le da cierto poderío el tener muchas funcionalidades centradas en una sola herramienta.

Figura 1: CrackMapExec: Una navaja suiza para el pentesting (1 de 2)

En líneas generales se puede decir que es una herramienta de post-explotación. Está escrita en Python y permite hacer movimientos laterales en una red. ¿Qué cosas se puede hacer? Pues realmente muchas. Iremos viendo algunos ejemplos a lo largo del artículo, aunque CrackMapExec al apoyarse en módulos y funcionalidades externas tiene muchas más acciones posibles de las que a priori se puede uno imaginar.

Figura 2: GitHub de CrackMapExec


Además, el uso es muy diferente, en función de en que parte del trabajo nos encontremos. Por ejemplo, puede que hagamos un Credential Dumping, o una reconocimiento de direcciones IP, enumeración de usuarios, recursos, grupos, búsqueda de archivos en máquinas o ejecutar un Mimikatz sobre la máquina remota, consultar su configuración de las políticas de la máquina o comprobar en qué nivel se encuentra el UAC. Como se puede ver, en un párrafo resumen, podemos hacer una gran cantidad de cosas con CrackMapExec o CME.

Escenario para el artículo

Para comenzar os explicaré lo qué he configurado. He optado por hacer uso de Docker para agilizar la configuración de la herramienta, esto es algo que para vuestras pruebas es algo muy recomendable. Os dejo el pequeño escenario montado:
Tras hacer el pull de la imagen de Docker a mi máquina me dispongo a crear el contenedor y ejecuto el siguiente comando:

Figura 3: Comando "Docker run --rm -it [IMAGE_ID]


Así conseguimos que se levante el contenedor, el cual se destruirá al salir del terminal, gracias al uso del parámetro --rm.

Protocolos en CME

La herramienta hace uso de varios protocolos, como son: winrm, http, smb, ssh o mssql.  Cada protocolo dispone de diferentes acciones y módulos que pueden ser utilizadas. Para ver los módulos se ejecuta la siguiente instrucción:

./crackmapexec [protocolo] -L. 

El que más tiene con diferencia es el protocolo SMB.  Para hacer un reconocimiento de máquinas rápido con el protocolo SMB activo en la red se puede ejecutar la siguiente instrucción:

Figura 4: Comando crackmapexec smb [red]

Movimiento lateral

Como ejemplo de uso del protocolo SMB, siempre es un trabajo de Hacking Windows el poder hacer un movimiento lateral, y esto se puede llevar a cabo una vez conocida la credencial del administrador o conociendo el hash NTLM
 
Figura 5:Libro de Hacking Windows

En el siguiente ejemplo se muestra cómo la autenticación es válida a través del uso de la credencial en plano del administrador. En la misma imagen, se puede ver la enumeración de usuarios que se lleva a cabo con el parámetro --users.

Figura 6: Autenticación y enumeración de usuarios vía SMB


Otro ejemplo que se puede ver rápidamente en este movimiento lateral es la enumeración de grupos y la búsqueda de ficheros de texto, de logs, de ficheros PDF, etcétera. La enumeración de grupos va muy ligada a la enumeración de usuarios y de recursos que se puede hacer sobre la máquina, pero el caso de la búsqueda de ficheros es algo bastante útil en ciertas ocasiones. 
 
Figura 7: Enumeración de grupos en Windows


Ahora vemos el mismo ejemplo de antes, pero en vez de con un TXT con LOGs. Sin duda, una búsqueda interesante a través del uso del parámetro --spider y --pattern. Los resultados se obtienen tras la autenticación y la ejecución de la acción. 

Figura 8: Uso del parámetro --spider y --pattern


Todavía no hemos llegado a la parte donde se utilizan módulos para ampliar las funcionalidades y el potencial de la herramienta.

Figura 9: Volcado de la política de contraseñas con --pass-pol

Otro ejemplo interesante es la adquisición o la consulta de las políticas de la máquina remota. En esta ocasión, vamos a volcar la política de contraseñas y para ello se hace uso del parámetro --pass-pol

Fin de la primera parte

Si te interesa el mundo del pentesting, montante este entorno y empieza a probar. En la segunda parte de este artículo vamos a ver cómo podemos volcar credenciales, cómo podemos sacar partido a los comandos remotos con WMI y qué otros módulos tenemos en CrackMapExec.

Saludos,

*****************************************************************************
*****************************************************************************

Autor: Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Hacking con Metasploit: Advanced Pentesting" "Hacking Windows", "Ethical Hacking", "Got Root",  “Pentesting con Powershell” y de "Empire: Hacking Avanzado en el Red Team", Microsoft MVP en Seguridad y Security Researcher en el equipo de "Ideas Locas" de la unidad CDCO de Telefónica.  Para consultas puedes usar el Buzón Público para contactar con Pablo González

Figura 10: Contactar con Pablo González

No hay comentarios:

Publicar un comentario