Ce script vise à identifier les vulnérabilités locales d'escalade des privilèges (LPE) qui sont généralement dues à des problèmes de configuration Windows ou à de mauvaises pratiques. Il peut également recueillir des informations utiles pour certaines tâches d'exploitation et post-exploitation.
Après avoir téléchargé le script et le copier sur la machine Windows cible, exécutez-la à l'aide de l'une des commandes ci-dessous.
Note
Vous n'avez pas besoin de cloner l'ensemble du référentiel. Le fichier PrivescCheck.ps1 est un script PowerShell autonome qui contient tout le code requis par PrivescCheck pour s'exécuter.
Important
Dans les commandes ci-dessous, la première . (DOT) est utilisé pour "Sourcing de points" le script, afin que les fonctions et les applets de commande puissent être utilisés dans la portée actuelle (voir la fonction de source de points PowerShell).
Identifiez rapidement les problèmes importants, tels que les vulnérabilités locales d'escalade des privilèges.
powershell -ep bypass -c " . .PrivescCheck.ps1; Invoke-PrivescCheck "Identifiez les problèmes importants, mais collectez également des informations supplémentaires et enregistrez les résultats pour rapporter des fichiers faciles à lire.
powershell -ep bypass -c " . .PrivescCheck.ps1; Invoke-PrivescCheck -Extended -Report PrivescCheck_$($env:COMPUTERNAME) -Format TXT,HTML "Effectuez des vérifications étendues et audites et enregistrez les résultats sur des rapports lisibles par l'homme, mais également des fichiers lisibles par machine, qui peuvent ensuite être analysés pour la génération de rapports automatisés.
powershell -ep bypass -c " . .PrivescCheck.ps1; Invoke-PrivescCheck -Extended -Audit -Report PrivescCheck_$($env:COMPUTERNAME) -Format TXT,HTML,CSV,XML " Tous les vérifications implémentées dans PRIVESCCHECK ont un type . Cette valeur, et les drapeaux spécifiés sur la ligne de commande, détermineront s'ils sont exécutés ou non.
Les vérifications de Base de type seront toujours exécutées, sauf si le script est exécuté en tant qu'administrateur. Ils sont principalement destinés à identifier les vulnérabilités d'escalade des privilèges, ou d'autres problèmes importants.
Les vérifications du type Extended ne peuvent être exécutées que si l'option -Extended est spécifiée sur la ligne de commande. Ils sont principalement destinés à fournir des informations supplémentaires qui pourraient être utiles pour le développement d'exploitation ou après l'exploitation.
Les vérifications de Audit de type ne peuvent être exécutées que si l'option -Audit est spécifiée sur la ligne de commande. Ils sont principalement destinés à fournir des informations pertinentes dans le contexte d'un audit de configuration.
Les vérifications de type Experimental ne peuvent être exécutées que si l'option -Experimental est spécifiée sur la ligne de commande. Ce sont des vérifications instables qui nécessitent un travail supplémentaire. Utilisez-les avec prudence.
Par défaut, la politique d'exécution PowerShell est définie sur les clients Restricted et RemoteSigned sur les serveurs, lorsqu'un nouveau processus powershell.exe est démarré. Ces politiques bloquent l'exécution des scripts (non signés), mais ils peuvent être remplacés dans la portée actuelle comme suit.
Set-ExecutionPolicy Bypass - Scope Process - Force
. .PrivescCheck.ps1Cependant, cette astuce ne fonctionne pas lorsque la politique d'exécution est appliquée via un GPO. Dans ce cas, après avoir commencé une nouvelle session PowerShell, vous pouvez charger le script comme suit.
Get-Content .PrivescCheck.ps1 | Out-String | Invoke-ExpressionUne façon courante de contourner le mode de langue contrainte consiste à démarrer PowerShell version 2 car il n'implémente pas cette protection. Par conséquent, une partie importante de l'effort de développement est consacrée à la maintenance de cette compatibilité.
Note
Bien que PowerShell version 2 soit toujours activé par défaut sur les versions récentes de Windows, il ne peut pas s'exécuter sans le .NET Framework version 2.0, qui nécessite une installation manuelle.
Si vous exécutez ce script dans une session MeterPreter, vous obtiendrez probablement une erreur de "délai d'expiration". Metasploit a une valeur de "délai d'expiration de réponse", qui est définie sur 15 secondes par défaut, mais ce script prend beaucoup plus de temps à exécuter dans la plupart des environnements.
meterpreter > load powershell
Loading extension powershell...Success.
meterpreter > powershell_import /local/path/to/PrivescCheck.ps1
[+] File successfully imported. No result was returned.
meterpreter > powershell_execute "Invoke-PrivescCheck"
[-] Error running command powershell_execute: Rex::TimeoutError Operation timed out. Il est possible de définir une valeur différente grâce à l'option -t de la commande sessions (documentation). Dans l'exemple suivant, un délai de 2 minutes est défini pour la session avec l'ID 1 .
msf6 exploit(multi/handler) > sessions -t 120 -i 1
[*] Starting interaction with 1...
meterpreter > powershell_execute "Invoke-PrivescCheck"