Buscando formas de elevar privilegios en Windows – parte 1 (PowerSploit)
PowerSploit es una colección de módulos de Microsoft PowerShell que te facilita la vida al momento de hacer un pentest, y aca me voy a enfocar principalmente en buscar formas de ganar privilegios de administrador en un Windows (en el cuál ya tenemos un usuario no-administrador).
Lo primero, es bajar/subir el PowerSploit en la maquina victima.
Se puede descargar de aca: https://github.com/PowerShellMafia/PowerSploit/
Creamos un directorio en la maquina victima, por ejemplo «C:\Temp\» y ahí copiamos el zip de PowerSploit y el unzip.exe (el unzip.exe lo tenés en Kali, o podes bajarlo de internet sin muchas vueltas).
Una vez copiaste ambos archivos, ejecuta lo siguiente:
powershell.exe -nop -exec bypass
De la documentacion de powershell:
–Exec Bypass: to bypass/ignore the execution policy like Restricted which restricts the PowerShell scripts from running.
–Nop / -Noprofile : to ignore the commands in the Profile file
Ya en la nueva session de powershell, hacemos:
C:\temp\unzip.exe C:\temp\PowerSploit-master.zip
CD C:\temp\PowerSploit-master\
Una vez ahí, importas el módulo de powersploit:
Import-Module C:\temp\PowerSploit-master\PowerSploit
Con eso, ya tenés PowerSploit cargado.
Si queres ver todos los comandos que te habilita este módulo, podes ejecutar:
Get-Command -Module PowerSploit
El comando en particular que nos interesa, es ‘Invoke-AllChecks’, que básicamente ejecuta todos los chequeos que tiene el PowerSploit y genera un reporte.
La mejor forma de verlo, es ejecutar algo como:
PS C:\temp\PowerSploit-master\> Invoke-AllChecks
La salida va a ser algo similar a esto:
PS C:\temp\PowerSploit-master\> Invoke-AllChecks
[*] Running Invoke-AllChecks
[*] Checking if user is in a local group with administrative privileges...
[*] Checking for unquoted service paths...
[*] Use 'Write-UserAddServiceBinary' or 'Write-CMDServiceBinary' to abuse
[+] Unquoted service path: ProcessExplorerService - C:\Program Files\procexp.exe
[+] Unquoted service path: ProcessMonitorService - C:\Program Files\Sysinternals\Process Monitor\Procmon.exe
[*] Checking service executable permissions...
[*] Use 'Write-ServiceEXE -ServiceName SVC' or 'Write-ServiceEXECMD' to abuse
[+] Vulnerable service executable: ProcessExplorerService - C:\Program Files\procexp.exe
[+] Vulnerable service executable: ProcessMonitorService - C:\Program Files\Sysinternals\Process Monitor\Procmon.exe
[*] Checking service permissions...
[*] Checking for unattended install files...
[*] Checking %PATH% for potentially hijackable .dll locations...
[*] Checking for AlwaysInstallElevated registry key...
[*] Checking for Autologon credentials in registry...
[*] Checking for encrypted web.config strings...
[*] Checking for encrypted application pool and virtual directory passwords...
En el reporte vas a poder ver un detalle de cada vector de ataque que PowerSploit encontró. Ejemplo:
[+] Vulnerable service executable: ProcessExplorerService – C:\Program Files\procexp.exe
Ya en base a lo que encontres, vas a tener que proceder de diferentes formas, pero por ejemplo aca hay una guia de como elevar privilegios, usando un servicio mal configurado: https://www.harmj0y.net/blog/powershell/powerup-a-usage-guide/
Cheatsheet de PowerSploit: https://h4ck.co/wp-content/uploads/2017/11/PowerUp.pdf