User Impersonation
Pass the Hash
O Impersonation (personificação) serve para se passar por outro usuário. Com o comando abaixo iremos fazer um impersonate, porém se executarmos o getuid
, ainda irá mostrar o usuário atual, porém as permissões foram alteradas. Para realizar esse passo, é necessário ter privilégios elevados.
Semelhante a forma demonstrada acima, porém de uma maneira mais stealth, útil para bypassar mecanismos de segurança.
Para desfazer o Impersonate (dessa e das demais maneiras), execute:
Pass the Ticket
Maneira 1
Após executar um ps
ou powershell ps
e pegarmos o PID de um processo que esteja sendo utilizado pelo usuário alvo, iremos executar o seguinte comando:
Para listar todos os PIDs, execute:
E para utilizar o token (fazer o impersonate de fato), execute o comando abaixo, alterando o <id-token>
pelo ID listado na saída do comando acimatie
Para sair im impersonate e voltar a utilizar o usuário anterior, execute:
Note que isso ainda manterá o token na lista de tokens roubados, porém não em uso. Para de fato remover da lista, é necessário executar o seguinte comando:
Se quiser remover todos os tokens de uma só vez, execute:
Maneira 2
Criando um logon em branco e também um LUID, que deve ser anotado para utilizarmos futuramente.
Dessa forma que criamos, não temos um ticket dentro, portanto ainda não estará visível na triagem (triage
). A próxima etapa é passar o TGT para este novo LUID que criamos e faremos isso utilizando o comando ptt
do Rubeus. No comando abaixo, altere o valor de /luid
para o novo LUID que acabamos de criar (comando acima) e /ticket
será o ticket codificado em base64 que já foi extraído anteriormente na sessão Credential Theft (Roubo de Credenciais) - Extraindo Tickets Kerberos
, que deve ser de algum usuário da rede.
Note que agora já podemos ver nosso LUID na triagem
Feito isso, agora precisamos dar o último passo, que consiste em personificar o processo que criamos com createonly
. Para isso, precisamos do PID do processo alvo, porém utilize um PID que pertença ao usuário alvo (utilize um cmd com privilégios para procurar por isso). Por algum motivo, o comando ps
não conseguiu visualizar os PIDs de outros usuários, mesmo com privilégios elevados. Isso com certeza merece um ponto de atenção.
Finalizado o Impersonate. Utilize os comandos abaixo para desfazer a personificação.
Overpass the Hash
Overpass the hash é uma técnica que nos permite solicitar um Kerberos TGT para um usuário, utilizando seu hash NTLM ou AES. Privilégios elevados são necessários para obter hashes de usuário, mas não para realmente solicitar um ticket. Rubeus pode nos ajudar nessa missão.
Este TGT pode então ser aproveitado através do Pass the Ticket.
Make Token
Para realizar esse tipo de personificação, é necessário saber o nome do Domínio, usuário e senha
Podemos agora por exemplo, executar comandos remotos em outros hosts, através do usuário atual
Para sair do Impersonate e voltar a utilizar o usuário anterior, execute:
Process Injection
A injeção de processo (Process Injection) nos permite injetar shellcode arbitrário em um processo de nossa escolha. Você só pode injetar em processos que você possa obter com privilégios suficientes para gravar em sua memória. Quando estamos em contexto elevado, isto inclui processos pertencentes a outros utilizadores.
O Beacon possui dois comandos principais de injeção:
shinject
= Permite injetar qualquer shellcode arbitrário de um arquivo binário em sua máquina atacanteinject
= Injetará uma carga completa do Beacon para o listener especificado
Vamos imaginar um cenário onde temos acesso privilegiado no Windows, e temos um usuário que possui um processo utilizando o PID 5489. Para realizar uma injeção e abrirmos um Beacon em nome desse usuário, devemos executar o comando abaixo, alterando o PID e a arquitetura, caso seja necessario.
Mimikatz
Abrindo cmd.exe
em nome de outro usuário
Last updated