# Introducción a PowerUp

`PowerUp.ps1` es una herramienta de script escrita en PowerShell que forma parte del conjunto de herramientas PowerSploit, una colección de módulos de PowerShell diseñados para ayudar a los pentesters durante las fases de post-explotación y evaluación de seguridad en entornos Windows.

{% embed url="<https://github.com/PowerShellMafia/PowerSploit/blob/master/Privesc/PowerUp.ps1>" %}

La finalidad de `PowerUp.ps1` es automatizar el proceso de evaluación de la configuración de seguridad y buscar posibles vectores de elevación de privilegios en sistemas Windows. Es una herramienta ampliamente utilizada en el ámbito del pentesting y por equipos de red (Red Teams) para identificar debilidades y vulnerabilidades dentro de la configuración de un sistema que podrían ser explotadas para obtener mayores privilegios.

Entre las características y capacidades de `PowerUp.ps1`, se incluyen:

* <mark style="color:red;">**Enumeración de servicios con rutas no citadas**</mark><mark style="color:red;">:</mark> Identifica servicios donde la ruta del ejecutable no está entre comillas y contiene espacios, lo que podría permitir la inserción de ejecutables maliciosos en la ruta.
* <mark style="color:red;">**Permisos de ejecutables de servicios**</mark><mark style="color:red;">:</mark> Comprueba si el usuario actual tiene permisos para modificar archivos de servicios de Windows que luego podrían ser ejecutados con privilegios elevados.
* <mark style="color:red;">**Permisos de servicio**</mark><mark style="color:red;">:</mark> Evalúa si el usuario actual tiene la capacidad de modificar servicios de Windows o su configuración.
* <mark style="color:red;">**Búsqueda en la variable de entorno**</mark>**&#x20;`%PATH%`**<mark style="color:red;">:</mark> Busca ubicaciones en la variable de entorno `%PATH%` que podrían ser usadas para la inyección de DLLs maliciosas.
* <mark style="color:red;">**Clave de registro**</mark> **`AlwaysInstallElevated`**<mark style="color:red;">:</mark> Comprueba si esta clave de registro está configurada para permitir la instalación de programas con privilegios elevados.
* <mark style="color:red;">**Credenciales de autologon**</mark><mark style="color:red;">:</mark> Busca credenciales almacenadas en el registro que permiten el inicio de sesión automático.
* <mark style="color:red;">**Configuraciones de Autorun y archivos modificables**</mark><mark style="color:red;">:</mark> Identifica configuraciones de autorun y archivos del sistema que son modificables y podrían ser abusados para ejecutar código al reiniciar el sistema o al iniciar sesión.
* <mark style="color:red;">**Tareas programadas**</mark><mark style="color:red;">:</mark> Revisa los archivos y configuraciones de tareas programadas que podrían ser modificadas para obtener ejecución de código con privilegios.
* <mark style="color:red;">**Archivos de instalación desatendidos**</mark><mark style="color:red;">:</mark> Busca archivos de instalación desatendida que pueden contener credenciales en texto plano.
* <mark style="color:red;">**Cadenas cifradas en archivos**</mark> **`web.config`**<mark style="color:red;">:</mark> Identifica cadenas de configuración cifradas que podrían incluir información sensible.
* <mark style="color:red;">**Contraseñas de pools de aplicaciones y directorios virtuales**</mark><mark style="color:red;">:</mark> Busca contraseñas cifradas asociadas con pools de aplicaciones y directorios virtuales en IIS que podrían ser descifradas.
* <mark style="color:red;">**Contraseñas en texto plano en archivos**</mark> **`SiteList.xml`** <mark style="color:red;">**de McAfee**</mark><mark style="color:red;">:</mark> Busca archivos de configuración de McAfee que pueden contener contraseñas en texto plano.
* <mark style="color:red;">**Preferencias de Política de Grupo en caché**</mark><mark style="color:red;">:</mark> Revisa si hay archivos .xml de Política de Grupo que contienen contraseñas o configuraciones que podrían ser explotadas.

```powershell
PS C:\Users\admin\Desktop> Import-Module .\PowerUp.ps1
PS C:\Users\admin\Desktop> Invoke-AllChecks

[*] Running Invoke-AllChecks


[*] Checking if user is in a local group with administrative privileges...
[+] User is in a local group that grants administrative privileges!
[+] Run a BypassUAC attack to elevate privileges to admin.


[*] Checking for unquoted service paths...

[*] Checking service executable and argument permissions...

[*] Checking service permissions...

[*] Checking %PATH% for potentially hijackable .dll locations...

HijackablePath : C:\Users\admin\AppData\Local\Microsoft\WindowsApps\
AbuseFunction  : Write-HijackDll -OutputFile 'C:\Users\admin\AppData\Local\Microsoft\WindowsApps\\wlbsctrl.dll'
                 -Command '...'

[*] Checking for AlwaysInstallElevated registry key...

[*] Checking for Autologon credentials in registry...

[*] Checking for vulnerable registry autoruns and configs...

[*] Checking for vulnerable schtask files/configs...

[*] Checking for unattended install files...

[*] Checking for encrypted web.config strings...

[*] Checking for encrypted application pool and virtual directory passwords...
```

## <mark style="color:red;">Validaciones realizadas por PowerUp:</mark>

* [x] Current privileges
* [x] Unquoted service paths
* [x] Service executable permissions
* [x] Service permissions
* [x] %PATH% for hijackable DLL locations
* [x] AlwaysInstallElevated registry key
* [x] Autologon credentials in registry
* [x] Modifidable registry autoruns and configs
* [x] Modifiable schtask files/configs
* [x] Unattended install files
* [x] Encrypted web.config strings
* [x] Encrypted application pool and virtual directory passwords
* [x] Plaintext passwords in McAfee SiteList.xml
* [x] Cached Group Policy Preferences .xml files
