
Ferramenta de escalonamento de privilégios no Windows que explora privilégios SeImpersonate via impersonação de pipe nomeado, suportando múltiplos métodos de execução (CreateProcessWithTokenW, CreateProcessAsUserW, CreateUser, BindShell) para acesso SYSTEM.
Primeiramente - créditos para @splinter_code & @decoder_it pelo RoguePotato, pois este código se baseia fortemente nele.
Este é apenas mais um Potato para obter SYSTEM via privilégios SeImpersonate. Mas este é diferente em termos de
CreateProcessWithTokenW para gerar um novo processo. Em vez disso, você pode escolher entre CreateProcessWithTokenW, CreateProcessAsUserW, CreateUser e BindShell.Portanto, este projeto é capaz de abrir um Servidor NamedPipe, personificar qualquer usuário que se conectar a ele e, em seguida, realizar uma das opções mencionadas acima. Se novos gatilhos de autenticação SYSTEM forem publicados no futuro, esta ferramenta ainda pode ser usada para elevar privilégios - você só precisa usar um outro Nome de Pipe neste caso.
Exemplos:
c:\temp\MultiPotato> MultiPotato.exe -t CreateUser
Você tem por padrão 60 segundos (alteráveis via THEAD_TIMEOUT) para deixar a conta SYSTEM ou qualquer outra conta autenticar. Isso pode ser feito, por exemplo, através de uma função MS-EFSRPC sem patch. Por padrão, o MultiPotato escuta no nome de pipe \\.\pipe\pwned/pipe/srvsvc, que é destinado ao uso em combinação com MS-EFSRPC. Para outros gatilhos de autenticação SYSTEM, você pode ajustar este valor através do parâmetro -p.
c:\temp\MultiPotato> PetitPotamModified.exe localhost/pipe/pwned localhost
Usar PetitPotam.py como gatilho de um sistema remoto com um usuário válido de baixo privilégio também é possível, claro.
c:\temp\MultiPotato> MultiPotato.exe -t CreateProcessAsUserW -p "pwned\pipe\spoolss" -e "C:\temp\stage2.exe"
E acione via
c:\temp\MultiPotato>MS-RPRN.exe \\192.168.100.150 \\192.168.100.150/pipe/pwned
Importante: Nos meus testes com MS-RPRN, não consegui usar localhost ou 127.0.0.1 como alvo, precisa ser o endereço IP da rede ou FQDN. Além disso, o Serviço de Impressão precisa estar habilitado para que isso funcione.
c:\temp\MultiPotato> MultiPotato.exe -t BindShell -p "pwned\pipe\spoolss"
Recentemente, eu tive um teste de penetração onde consegui comprometer um servidor MSSQL via SQL-Injection e XP_CMDShell. Mas todos os Potatoes públicos falharam neste sistema alvo para elevar privilégios de conta de serviço para SYSTEM. O gatilho de autenticação SYSTEM não era o problema - em vez disso, CreateProcessWithTokenW falhava o tempo todo com o código NTSTATUS 5 - acesso negado. Isso realmente não fez sentido para mim e pode ser um caso extremo. Uma razão para isso poderia ser a proteção de endpoint local, que pode ter bloqueado a criação de processo após personificar SYSTEM.
Por isso, procurei alternativas - e perguntei a algumas pessoas no Twitter sobre isso. Novamente, créditos para @splinter_code por me explicar como fazer via CreateProcessAsUserW, que funcionou bem no servidor MSSQL comprometido para obter um C2-Callback SYSTEM.