Forense Digital com Linux – Técnicas Práticas – Parte 13

Análise Forense com Expressões Regulares no Linux: Identificando alterações em sistemas comprometidos

A análise forense digital é fundamental para identificar atividades maliciosas em sistemas comprometidos. Uma das técnicas mais eficazes para detectar alterações suspeitas — como arquivos criados, excluídos, modificações em diretórios ou adulteração de logs — é o uso de expressões regulares (regex) combinadas com ferramentas nativas do Linux. Neste artigo, vamos explorar como aplicar regex para investigar mudanças em uma máquina potencialmente comprometida, passo a passo.

 

1. Introdução ao cenário

Suponha que uma máquina Linux esteja apresentando comportamentos anômalos: alto uso de recursos, arquivos desconhecidos ou logs inconsistentes. O objetivo é utilizar expressões regulares para:

  • Identificar arquivos criados ou modificados recentemente.

  • Detectar exclusões de arquivos críticos.

  • Analisar alterações em diretórios sensíveis.

  • Investigar logs adulterados.

 

2. Identificando arquivos criados ou modificados

Arquivos maliciosos são frequentemente criados ou modificados durante um ataque. Para localizar arquivos alterados nos últimos 7 dias, use o comando find com regex:

find / -type f -mtime -7 -regextype posix-extended -regex ".*\.(sh|py|conf|log)$"
  • Explicação:

    • -mtime -7: Filtra arquivos modificados nos últimos 7 dias.

    • -regex ".*\.(sh|py|conf|log)$": Busca arquivos com extensões comumente alvo de ataques (.sh.py.conf.log).

    • Use -exec ls -l {} \; para listar detalhes como permissões e proprietários.

Exemplo de Saída:

-rwxr-xr-x 1 root root 1024 Jun 10 15:30 /var/log/.hidden_script.sh  

Arquivos ocultos em /var/log ou com permissões incomuns (ex: 777) devem ser investigados.

 

3. Detectando exclusões de arquivos

Logs do sistema, como /var/log/syslog ou /var/log/auth.log, registram operações de exclusão. Use grep com regex para buscar entradas relacionadas ao comando rm:

grep -E “rm -[rf]|unlink” /var/log/syslog

  • Regex: rm -[rf]|unlink captura comandos de exclusão recursiva (-r) ou forçada (-f).

 

Padrão Suspeito:

Jun 10 14:45 user: root COMMAND=/usr/bin/rm -rf /var/www/html/* 

Exclusões em massa em diretórios críticos (ex: /var/www) podem indicar atividade maliciosa.

 

4. Analisando alterações em diretórios

Diretórios como /etc/bin, ou /home são alvos comuns. Para listar alterações recentes em /etc, combine ls com regex:

 
ls -lt /etc | grep -E "Jun [0-9]{2} (14|15|16):[0-9]{2}"  
  • Regex: Jun [0-9]{2} (14|15|16):[0-9]{2} filtra arquivos modificados entre 14h e 16h no mês de junho.

Casos de Atenção:

  • Arquivos de configuração modificados fora de janelas de manutenção (ex: /etc/passwd).

  • Novos diretórios ocultos (ex: /etc/.backdoor).

 

5. Investigando logs adulterados

Ataques frequentemente incluem a adulteração de logs para apagar evidências. Use regex para identificar lacunas ou inconsistências:

 

5.1. Verificando Lacunas Temporais

cat /var/log/auth.log | grep -E "Jun [0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}" | awk 
'{print $1,$2,$3}' | uniq -c
  • Regex: Jun [0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2} captura timestamps.

  • Saída Suspeita: Intervalos de tempo ausentes (ex: logs das 02:00 às 04:00 apagados).

 

5.2. Buscando padrões de ataque

Para detectar tentativas de injeção de comandos em logs do Apache (/var/log/apache2/access.log):

grep -E "union select|<?php|wget|curl" /var/log/apache2/access.log  
  • Regex: union select|<?php|wget|curl identifica tentativas de exploração via SQLi ou download de payloads.

 

6. Monitorando Atividades com Auditd

O framework auditd registra alterações em tempo real. Para rastrear acesso ao diretório /bin, configure uma regra:

auditctl -w /bin -p war -k system_binaries  

  • Análise dos Logs:

 
ausearch -k system_binaries | grep -E "execve|rename|unlink"  
  • Regex: execve|rename|unlink filtra operações de execução, renomeação ou exclusão.

 

7. Conclusão

Expressões regulares são indispensáveis na análise forense para filtrar grandes volumes de dados e identificar padrões sutis de comprometimento. Ao combinar regex com ferramentas como findgrepawk e auditd, é possível:

  • Detectar arquivos maliciosos criados ou modificados.

  • Identificar exclusões não autorizadas.

  • Correlacionar eventos em logs adulterados.

No entanto, a análise forense exige uma abordagem holística: valide sempre os resultados com múltiplas ferramentas (ex: statmd5sum) e documente todas as evidências para garantir a integridade do processo.

 

Referências Bibliográficas

  • Robbins, A. (2005). Unix in a Nutshell. O’Reilly Media.

  • Friedl, J. E. F. (2006). Mastering Regular Expressions. O’Reilly Media.

  • Nikkel, B. (2021). Practical Linux Forensics: A Guide for Digital Investigators. No Starch Press.

Estas obras fornecem bases técnicas aprofundadas sobre expressões regulares, ferramentas Linux e metodologias de análise forense, complementando os exemplos práticos deste artigo.