
Outil d'élévation de privilèges Windows exploitant les privilèges SeImpersonate via l'usurpation de canal nommé (Named Pipe), prenant en charge plusieurs méthodes d'exécution (CreateProcessWithTokenW, CreateProcessAsUserW, CreateUser, BindShell) pour l'accès SYSTEM.
Tout d'abord - crédit à @splinter_code et @decoder_it pour RoguePotato car ce code se base fortement dessus.
Ce n'est qu'un autre Potato pour obtenir les privilèges SYSTEM via SeImpersonate. Mais celui-ci est différent en termes de
CreateProcessWithTokenW pour lancer un nouveau processus. Vous pouvez plutôt choisir entre CreateProcessWithTokenW, CreateProcessAsUserW, CreateUser et BindShell.Ainsi, ce projet est capable d'ouvrir un serveur NamedPipe, d'usurper l'identité de tout utilisateur qui s'y connecte, puis d'exécuter l'une des options mentionnées ci-dessus. Si de nouveaux déclencheurs d'authentification SYSTEM sont publiés à l'avenir, cet outil peut toujours être utilisé pour élever les privilèges - il suffit d'utiliser un autre nom de pipe dans ce cas.
Exemples :
c:\temp\MultiPotato> MultiPotato.exe -t CreateUser
Vous avez par défaut 60 secondes (modifiables via THEAD_TIMEOUT) pour laisser le compte SYSTEM ou tout autre compte s'authentifier. Cela peut être fait par exemple via une fonction MS-EFSRPC non patchée. Par défaut, MultiPotato écoute sur le nom de pipe \\.\pipe\pwned/pipe/srvsvc qui est destiné à être utilisé en combinaison avec MS-EFSRPC. Pour d'autres déclencheurs d'authentification SYSTEM, vous pouvez ajuster cette valeur via le paramètre -p.
c:\temp\MultiPotato> PetitPotamModified.exe localhost/pipe/pwned localhost
Utiliser PetitPotam.py comme déclencheur depuis un système distant avec un utilisateur valide à faibles privilèges est bien sûr également possible.
c:\temp\MultiPotato> MultiPotato.exe -t CreateProcessAsUserW -p "pwned\pipe\spoolss" -e "C:\temp\stage2.exe"
Et déclenchez-le via
c:\temp\MultiPotato>MS-RPRN.exe \\192.168.100.150 \\192.168.100.150/pipe/pwned
Important : Dans mes tests pour MS-RPRN, je n'ai pas pu utiliser localhost ou 127.0.0.1 comme cible, cela doit être l'adresse IP réseau ou le FQDN. De plus, le service d'impression doit être activé pour que cela fonctionne.
c:\temp\MultiPotato> MultiPotato.exe -t BindShell -p "pwned\pipe\spoolss"
Récemment, j'ai effectué un test d'intrusion où j'ai pu compromettre un serveur MSSQL via une injection SQL et XP_CMDShell. Mais tous les Potatoes publics ont échoué sur ce système cible pour élever les privilèges du compte de service à SYSTEM. Le déclencheur d'authentification SYSTEM n'était pas le problème - au contraire, CreateProcessWithTokenW échouait tout le temps avec le code NTSTATUS 5 - accès interdit. Cela n'avait pas vraiment de sens pour moi et pourrait être un cas marginal. Une raison possible pourrait être la protection de point de terminaison locale qui aurait pu bloquer la création du processus après l'usurpation de SYSTEM.
Par conséquent, j'ai cherché des alternatives - et j'ai demandé à quelques personnes sur Twitter. Encore une fois, crédit à @splinter_code pour m'avoir expliqué comment le faire via CreateProcessAsUserW, qui a bien fonctionné sur le serveur MSSQL compromis pour obtenir un rappel C2 SYSTEM.