Lab 10.2: Exploração de Serviços IPC
Objetivos de Aprendizagem
Ao final deste laboratório, você será capaz de:
- Compreender as vulnerabilidades relacionadas ao IPC do Windows
- Identificar serviços IPC mal configurados
- Entender os ataques do tipo "Potato"
- Analisar os riscos de impersonation de token
- Implementar defesas apropriadas
Duração Estimada
50 minutos
Pré-requisitos
- Lab 10.1 concluído
- VM Windows 10/11
- Direitos de administrador
- Conhecimentos básicos sobre tokens do Windows
Contexto Profissional
As vulnerabilidades de IPC são exploradas em:
- 70% das escaladas de privilégio no Windows
- Ataques do tipo Potato (JuicyPotato, PrintSpoofer, etc.)
- Lateral movement em ambientes Active Directory
- Malwares avançados e APT
AVISO ÉTICO E LEGAL
Este lab é estritamente educacional.
As técnicas apresentadas são utilizadas por:
- Pentesters em testes autorizados
- Red Teams para simulações de ataque
- Equipes de segurança para entender ameaças
PROIBIDO sem autorização explícita:
- Em sistemas de produção
- Em máquinas que não lhe pertencem
- Para fins maliciosos
Parte 1: Compreendendo os Tokens do Windows
Etapa 1.1: Tipos de tokens
O Windows utiliza tokens para gerenciar identidade e privilégios:
| Tipo | Descrição | Utilização |
|---|---|---|
| Primary Token | Token principal do processo | Identidade do processo |
| Impersonation Token | Token temporário | Agir em nome de outro usuário |
Níveis de impersonation:
SecurityAnonymous: Nenhuma informação sobre o clienteSecurityIdentification: Pode identificar, mas não agirSecurityImpersonation: Pode agir localmenteSecurityDelegation: Pode agir na rede
Etapa 1.2: Veja seu token atual
# Informações sobre o token atual
whoami /all
# Privilégios do token
whoami /priv
Perguntas:
- Quais privilégios você possui?
- O privilégio
SeImpersonatePrivilegeestá presente?
Etapa 1.3: Quem possui SeImpersonatePrivilege?
Por padrão, esse privilégio é concedido a:
LOCAL SERVICENETWORK SERVICEAdministrators- Serviços do Windows
# Verificar se você possui o privilégio
(whoami /priv) | Select-String "SeImpersonate"
Parte 2: Vulnerabilidade de Impersonation via Pipes
Etapa 2.1: O conceito do ataque
1. Atacante cria um named pipe com permissões fracas
2. Um processo privilegiado (SYSTEM) conecta-se ao pipe
3. O atacante "impersona" o token SYSTEM
4. O atacante executa código como SYSTEM
Etapa 2.2: Condições necessárias
Para explorar essa vulnerabilidade:
- Ter
SeImpersonatePrivilegeouSeAssignPrimaryTokenPrivilege - Poder criar um named pipe
- Conseguir forçar um processo privilegiado a se conectar nele
Etapa 2.3: Serviços vulneráveis históricos
| Serviço | Vulnerabilidade | CVE |
|---|---|---|
| Print Spooler | SpoolFool, PrintNightmare | CVE-2021-1675 |
| BITS | Token impersonation | Múltiplos |
| WMI | DCOM activation | Múltiplos |
| MSDTC | Token impersonation | Múltiplos |
Parte 3: Família de Ataques "Potato"
Etapa 3.1: Visão geral
Os ataques "Potato" exploram IPC para escalada de privilégios:
| Nome | Ano | Método |
|---|---|---|
| Hot Potato | 2016 | NBNS + WPAD spoofing |
| Rotten Potato | 2016 | DCOM + NTLM relay |
| Juicy Potato | 2018 | Abuso de DCOM CLSID |
| Rogue Potato | 2020 | Fake OXID resolver |
| Sweet Potato | 2020 | Combinação de técnicas |
| PrintSpoofer | 2020 | Pipe do Print Spooler |
| GodPotato | 2022 | Nova técnica DCOM |
Etapa 3.2: Funcionamento geral
[Serviço com SeImpersonate]
|
v
[Cria um pipe ou listener]
|
v
[Força SYSTEM a se conectar via DCOM/Spooler/etc.]
|
v
[Captura o token SYSTEM]
|
v
[Executa comando como SYSTEM]
Etapa 3.3: PrintSpoofer - Exemplo conceitual
PrintSpoofer explora o serviço Print Spooler:
- O spooler possui uma funcionalidade que se conecta a pipes
- Cria-se um pipe com um nome específico
- Dispara-se a conexão do spooler
- Impersona-se o token SYSTEM do spooler
Nota: Não executaremos o exploit, apenas entenderemos o mecanismo.
Parte 4: Detecção de Ataques IPC
Etapa 4.1: Indicadores de comprometimento (IOC)
Pipes suspeitos:
# Procurar pipes com nomes incomuns
Get-ChildItem \\.\pipe\ | Where-Object {
$_.Name -match "(spoof|potato|pipe[0-9]|test)"
}
Processos suspeitos:
# Processos com SeImpersonatePrivilege que não deveriam ter
Get-Process | ForEach-Object {
$proc = $_
try {
$token = [System.Security.Principal.WindowsIdentity]::GetCurrent()
# Análise dos privilégios...
} catch {}
}
Etapa 4.2: Eventos Sysmon
# Event ID 17: Pipe Created
Get-WinEvent -FilterHashtable @{
LogName = 'Microsoft-Windows-Sysmon/Operational'
ID = 17
} -MaxEvents 50 | Where-Object {
$_.Message -match "(spoof|potato)"
} | Format-Table TimeCreated, Message -Wrap
# Event ID 18: Pipe Connected
Get-WinEvent -FilterHashtable @{
LogName = 'Microsoft-Windows-Sysmon/Operational'
ID = 18
} -MaxEvents 50 | Format-Table TimeCreated, Message -Wrap
Etapa 4.3: Eventos Security Log
# Event ID 4688: Process Creation com impersonation
Get-WinEvent -FilterHashtable @{
LogName = 'Security'
ID = 4688
} -MaxEvents 100 | Where-Object {
$_.Message -match "Impersonation"
}
Perguntas: 3. Quais eventos você encontrou? 4. Como você detectaria um ataque Potato?
Parte 5: Defesas e Hardening
Etapa 5.1: Reduzir a superfície de ataque
Desativar serviços desnecessários:
# Verificar o estado do Print Spooler
Get-Service Spooler
# Desativar se não for necessário (ATENÇÃO em produção!)
# Stop-Service Spooler
# Set-Service Spooler -StartupType Disabled
Etapa 5.2: Restringir SeImpersonatePrivilege
Via Local Security Policy:
secpol.msc- Local Policies > User Rights Assignment
- "Impersonate a client after authentication"
- Remover grupos desnecessários
Etapa 5.3: Ativar proteções
Windows Defender Credential Guard:
# Verificar se o Credential Guard está ativo
Get-CimInstance -ClassName Win32_DeviceGuard -Namespace root\Microsoft\Windows\DeviceGuard
LSA Protection:
# Verificar LSA Protection
Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" -Name "RunAsPPL"
Etapa 5.4: Script de verificação de segurança
# Script de verificação da configuração IPC
Write-Host "=== VERIFICAÇÃO DE SEGURANÇA IPC ===" -ForegroundColor Cyan
# 1. Print Spooler
$spooler = Get-Service Spooler -ErrorAction SilentlyContinue
if ($spooler.Status -eq "Running") {
Write-Host "[!] Print Spooler está ativo" -ForegroundColor Yellow
} else {
Write-Host "[OK] Print Spooler está inativo" -ForegroundColor Green
}
# 2. Pipes incomuns
$suspectPipes = Get-ChildItem \\.\pipe\ | Where-Object {
$_.Name -match "(spoof|potato|test[0-9])"
}
if ($suspectPipes) {
Write-Host "[!] Pipes suspeitos detectados:" -ForegroundColor Red
$suspectPipes | ForEach-Object { Write-Host " $_" }
} else {
Write-Host "[OK] Nenhum pipe suspeito" -ForegroundColor Green
}
# 3. SeImpersonatePrivilege
if ((whoami /priv) -match "SeImpersonate.*Enabled") {
Write-Host "[INFO] SeImpersonatePrivilege está ativo" -ForegroundColor Yellow
}
Write-Host "`n=== FIM DA VERIFICAÇÃO ===" -ForegroundColor Cyan
Perguntas: 5. Seu sistema é vulnerável a ataques Potato? 6. Quais medidas você implementaria?
Parte 6: Exercício Prático
Etapa 6.1: Auditoria completa
Realize uma auditoria na sua VM:
- Liste todos os serviços com SeImpersonatePrivilege
- Identifique os pipes ativos e seus proprietários
- Verifique o estado dos serviços de risco (Spooler, BITS, etc.)
- Analise os logs para conexões suspeitas de pipe
Etapa 6.2: Relatório de auditoria
Crie um relatório incluindo:
- Estado atual da segurança IPC
- Riscos identificados
- Recomendações de remediação
Entregáveis
-
Relatório de auditoria (2-3 páginas):
- Inventário dos serviços de risco
- Análise de privilégios
- Recomendações
-
Capturas de tela:
- whoami /priv
- Lista de pipes
- Script de verificação executado
-
Respostas às 6 perguntas
Critérios de Avaliação
| Critério | Pontos |
|---|---|
| Compreensão dos tokens | 20% |
| Análise dos ataques Potato | 25% |
| Detecção implementada | 25% |
| Recomendações de segurança | 30% |
Comandos de Referência
# Privilégios
whoami /priv
whoami /all
# Serviços
Get-Service Spooler, BITS, WMI
# Pipes
Get-ChildItem \\.\pipe\
# Eventos
Get-WinEvent -FilterHashtable @{LogName='Security';ID=4688}
Get-WinEvent -FilterHashtable @{LogName='Microsoft-Windows-Sysmon/Operational';ID=17,18}
# Configuração
Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa"
Recursos Adicionais
Lab desenvolvido no âmbito do curso Sistemas Operacionais - MÓDULO 10