
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 find
, grep
, awk
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: stat
, md5sum
) 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.