
Strumento di escalation dei privilegi di Windows che sfrutta i privilegi SeImpersonate tramite l'impersonificazione di Named Pipe, supportando molteplici metodi di esecuzione (CreateProcessWithTokenW, CreateProcessAsUserW, CreateUser, BindShell) per l'accesso come SYSTEM.
Innanzitutto, un ringraziamento a @splinter_code & @decoder_it per RoguePotato poiché questo codice si basa pesantemente su di esso.
Questa è solo un'altra Potato per ottenere SYSTEM tramite privilegi SeImpersonate. Ma questa è diversa in termini di:
CreateProcessWithTokenW per generare un nuovo processo. Puoi invece scegliere tra CreateProcessWithTokenW, CreateProcessAsUserW, CreateUser e BindShell.Quindi questo progetto è in grado di aprire un NamedPipe Server, impersonare qualsiasi utente che vi si connette e successivamente eseguire una delle opzioni menzionate sopra. Se in futuro verranno pubblicati nuovi trigger di autenticazione SYSTEM, questo strumento potrà ancora essere utilizzato per elevare i privilegi: in tal caso dovrai solo usare un altro Pipe-Name.
Esempi:
c:\temp\MultiPotato> MultiPotato.exe -t CreateUser
Hai per impostazione predefinita 60 secondi (modificabile tramite THEAD_TIMEOUT) per consentire all'account SYSTEM o a qualsiasi altro account di autenticarsi. Questo può essere fatto, ad esempio, tramite una funzione MS-EFSRPC non patchata. Di default, MultiPotato ascolta sul nome pipe \\.\pipe\pwned/pipe/srvsvc che è pensato per essere usato in combinazione con MS-EFSRPC. Per altri trigger di autenticazione SYSTEM puoi regolare questo valore tramite il parametro -p.
c:\temp\MultiPotato> PetitPotamModified.exe localhost/pipe/pwned localhost
Usare PetitPotam.py come trigger da un sistema remoto con un utente valido a bassi privilegi è ovviamente possibile.
c:\temp\MultiPotato> MultiPotato.exe -t CreateProcessAsUserW -p "pwned\pipe\spoolss" -e "C:\temp\stage2.exe"
E attivalo tramite
c:\temp\MultiPotato>MS-RPRN.exe \\192.168.100.150 \\192.168.100.150/pipe/pwned
Importante: Nei miei test per MS-RPRN non ho potuto usare localhost o 127.0.0.1 come destinazione, deve essere l'indirizzo IP di rete o il FQDN. Inoltre, il servizio Stampante deve essere abilitato affinché funzioni.
c:\temp\MultiPotato> MultiPotato.exe -t BindShell -p "pwned\pipe\spoolss"
Recentemente ho svolto un penetration test in cui sono riuscito a compromettere un server MSSQL tramite SQL Injection e XP_CMDShell. Ma tutte le Potato pubbliche su questo sistema di destinazione non sono riuscite a elevare i privilegi da account di servizio a SYSTEM. Il trigger di autenticazione SYSTEM non era il problema: invece CreateProcessWithTokenW falliva sempre con codice NTSTATUS 5 - accesso negato. Questo non aveva molto senso per me e potrebbe essere un caso limite. Una possibile ragione potrebbe essere la protezione endpoint locale che potrebbe aver bloccato la creazione del processo dopo l'impersonificazione di SYSTEM.
Pertanto ho cercato alternative – e ho chiesto ad alcune persone su Twitter. Di nuovo, un ringraziamento a @splinter_code per avermi spiegato come farlo tramite CreateProcessAsUserW che ha funzionato perfettamente sul server MSSQL compromesso per ottenere un C2-Callback SYSTEM.