Análise de Contas e Autenticação
O primeiro passo na investigação é verificar a integridade das contas do sistema. O arquivo /etc/passwd contém as informações básicas dos usuários.
# Estrutura: usuario:senha:UID:GID:comentario:home:shell
# Identificar usuários com shell de login interativo
grep -E '/bin/bash|/bin/sh' /etc/passwd
# Localizar contas com privilégios de superusuário (UID 0)
awk -F':' '$3 == 0 { print $1 }' /etc/passwd
# Verificar usuários com permissões elevadas via sudo
grep -v '^#' /etc/sudoers | grep 'ALL=(ALL)'
O arquivo /etc/shadow armazena as senhas criptografadas e políticas de expiração.
# Extrair usuários que possuem senhas definidas (campos 1 e 6 indicam criptografia)
awk -F':' '$2 ~ /^\$[16]/ { print $1 }' /etc/shadow
Para rastrear sessões ativas e históricas de login:
# Exibir sessões ativas e processos em execução
w
# Histórico de logins bem-sucedidos (lê /var/log/wtmp)
last -F | head -n 20
# Histórico de tentativas de login falhas (lê /var/log/btmp)
sudo lastb -F | head -n 20
# Última vez que cada usuário se autenticou
lastlog
Nota de Segurança: Para impedir que invasores limpem o histórico, aplique o atributo imutável ou de append no arquivo de logs: sudo chattr +a /var/log/wtmp.
Para auditar comandos executados, configure o histórico do bash para registrar IP e timestamp:
# Aumentar o tamanho do histórico
sed -i 's/HISTSIZE=.*/HISTSIZE=20000/' /etc/profile
# Adicionar ao final de /etc/profile para registrar IP e data
cat << 'EOF' >> /etc/profile
export HISTTIMEFORMAT="%d/%m/%Y %T $(who -u am i 2>/dev/null | awk '{print $NF}' | tr -d '()') "
shopt -s histappend
export PROMPT_COMMAND="history -a"
EOF
source /etc/profile
Rastreamento de Processos e Conexões de Rede
Identifique conexões de rede suspeitas e processos em execução.
# Listar portas abertas e conexões estabelecidas com os respectivos PIDs
ss -tunap | grep ESTAB
# Alternativa usando netstat
netstat -antp | grep LISTEN
Ao identificar um PID suspeito, investigue o processo:
PID_ALVO=1234
# Verificar o caminho do executável
ls -l /proc/$PID_ALVO/exe
# Listar arquivos abertos pelo processo
lsof -p $PID_ALVO
# Verificar a data de início do processo
ps -p $PID_ALVO -o lstart=
# Encerrar processo malicioso (uso com cautela)
kill -9 $PID_ALVO
Se o executável foi deletado, o processo pode estar rodando apenas em memória. O comando ls -l /proc/$PID_ALVO/exe mostrará "(deleted)".
Persistência e Inicialização Automática
Invasores frequentemente utilizam scripts de inicialização para manter a persistência.
# Verificar o nível de execução atual
runlevel
# Inspecionar scripts de inicialização legados
cat /etc/rc.local
# Listar links simbólicos em diretórios de inicialização System-V
ls -l /etc/rc3.d/
Para adicionar ou remover serviços de inicialização no estilo System-V:
# Exemplo de criação de link para script malicioso (apenas para fins de teste/forense)
ln -s /tmp/payload.sh /etc/init.d/svc_backdoor
update-rc.d svc_backdoor defaults 99
# Remover o serviço de inicialização
update-rc.d -f svc_backdoor remove
Tarefas Agendadas e Serviços
Verifique agendamenttos do cron que podem estar executando payloads.
# Listar tarefas do usuário atual
crontab -l
# Diretórios críticos para análise de cron
cat /etc/crontab
ls -la /etc/cron.d/
ls -la /etc/cron.daily/
ls -la /var/spool/cron/crontabs/
Audite serviços instalados e seus estados de inicialização:
# Para sistemas baseados em RPM/SysVinit
chkconfig --list | grep -E '3:on|5:on'
# Para sistemas com systemd
systemctl list-unit-files --state=enabled
# Verificar serviços instalados via código-fonte (geralmente em /usr/local)
ls -l /etc/init.d/ | grep -v '^l'
Análise de Arquivos e Sistema de Arquivos
Localize arquivos suspeitos com base em metadados e atributos.
# Buscar por arquivos modificados nas últimas 24 horas
find / -type f -mtime -1 -ls 2>/dev/null
# Encontrar arquivos ocultos ou com nomes suspeitos em diretórios temporários
find /tmp /var/tmp -name ".*" -type f
# Localizar arquivos sem proprietário ou grupo válido (risco de segurança)
find / -nouser -o -nogroup
# Buscar arquivos com tamanho específico (ex: maior que 50MB)
find / -type f -size +50M -exec ls -lh {} \;
Para ordenar processos por consumo de recursos:
# Top 10 processos por uso de CPU
ps -eo pid,pcpu,pmem,comm --sort=-pcpu | head -n 11
# Top 10 processos por uso de Memória
ps -eo pid,pcpu,pmem,comm --sort=-pmem | head -n 11
Auditoria de Logs do Sistema
Os logs em /var/log/ são essenciais para reconstruir a linha do tempo do incidente.
# Principais arquivos de log:
# /var/log/secure ou /var/log/auth.log (Autenticação)
# /var/log/messages ou /var/log/syslog (Sistema geral)
# /var/log/cron (Tarefas agendadas)
Técnicas de análise para identificar ataques de força bruta e acessos bem-sucedidos:
# Identificar IPs com múltiplas falhas de autenticação (Força Bruta)
grep "Failed password" /var/log/secure | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr | head
# Extrair IPs de origem das tentativas falhas usando regex
grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" /var/log/secure | grep -F -f <(grep "Failed password" /var/log/secure) | sort | uniq -c | sort -nr
# Listar IPs que obtiveram acesso bem-sucedido via SSH
grep "Accepted publickey\|Accepted password" /var/log/secure | awk '{print $(NF-2)}' | sort | uniq -c | sort -nr
# Rastrear criação e remoção de usuários
grep -E "useradd|userdel" /var/log/secure
# Monitorar uso de su e sudo
grep -E "su:|sudo:" /var/log/secure