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

Análise de malware com Expressões Regulares no Linux

A forense digital é uma disciplina essencial para investigar incidentes de segurança, especialmente quando se trata de analisar máquinas infectadas por malware. Neste artigo, vamos explorar como as expressões regulares (regex) no Linux podem ser utilizadas para identificar e analisar padrões suspeitos em logs, arquivos e tráfego de rede, ajudando a desvendar comportamentos maliciosos em uma máquina comprometida.

 

1. Introdução ao cenário

Imagine uma máquina Linux que está apresentando comportamentos anômalos, como alto uso de CPU, tráfego de rede incomum e arquivos corrompidos. O objetivo é utilizar expressões regulares para analisar logs, arquivos de sistema e capturas de pacotes, identificando padrões que possam indicar a presença de malware.

 

2. Compreendendo Expressões Regulares

Expressões regulares são sequências de caracteres que definem padrões de busca em textos. Elas são extremamente úteis para filtrar e extrair informações específicas de grandes volumes de dados. No Linux, ferramentas como grepawksed e perl suportam o uso de regex, tornando-as ideais para análise forense.

 

3. Analisando Logs do Sistema

Logs do sistema, como /var/log/syslog e /var/log/auth.log, são fontes valiosas de informação. Vamos começar analisando o arquivo auth.log para identificar tentativas de login suspeitas:

grep "Failed password" /var/log/auth.log

Este comando utiliza grep para buscar todas as linhas que contêm a expressão “Failed password”, indicando tentativas de login mal-sucedidas. Para refinar a busca e identificar IPs suspeitos, podemos usar uma regex mais complexa:

grep -E "Failed password for .* from ([0-9]{1,3}\.){3}[0-9]{1,3}" /var/log/auth.log

 

Aqui, -E habilita o uso de expressões regulares estendidas. A regex ([0-9]{1,3}\.){3}[0-9]{1,3} captura endereços IP, permitindo identificar de onde estão vindo as tentativas de acesso.

 

4. Buscando Arquivos Suspeitos

Malwares frequentemente criam ou modificam arquivos no sistema. Para identificar arquivos criados recentemente, podemos usar o comando find combinado com regex:

find / -type f -mtime -7 -regex ".*\.\(sh\|py\|exe\)$"

 

Este comando busca por arquivos (-type f) modificados nos últimos 7 dias (-mtime -7) que tenham extensões .sh.py ou .exe (-regex ".*\.\(sh\|py\|exe\)$"). Essas extensões são comumente associadas a scripts e executáveis maliciosos.

 

5. Analisando Capturas de Pacotes

Capturas de pacotes, como as geradas pelo Wireshark ou tcpdump, podem conter evidências de comunicação maliciosa. Suponha que você tenha um arquivo captura.pcap. Podemos usar tcpdump com regex para filtrar tráfego suspeito:

tcpdump -nn -r captura.pcap | grep -E "(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.
(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.
(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9]):[0-9]{1,5}"

Este comando lê o arquivo captura.pcap e filtra linhas que contenham endereços IP e portas, que podem indicar comunicação com servidores maliciosos.

 

6. Extraindo Strings de Binários

Malwares frequentemente armazenam strings significativas, como URLs, comandos ou chaves de registro, dentro de seus binários. Podemos usar o comando strings combinado com grep e regex para extrair essas informações:

strings malware.bin | grep -E "https?://[^\s]+"

Este comando extrai todas as strings do arquivo malware.bin e filtra aquelas que correspondem a URLs (https?://[^\s]+), que podem ser usadas para comunicação com servidores de comando e controle (C2).

 

7. Correlacionando Dados com Awk

Para uma análise mais avançada, podemos usar awk para correlacionar dados de diferentes fontes. Por exemplo, para contar o número de tentativas de login por IP no arquivo auth.log:

awk '/Failed password/ {print $(NF-3)}' /var/log/auth.log | sort | uniq -c | sort -nr

Este comando extrai o IP de cada linha com “Failed password”, conta as ocorrências por IP e ordena os resultados. Isso pode ajudar a identificar IPs que estão realizando ataques de força bruta.

 

Conclusão

Expressões regulares são uma ferramenta poderosa para análise forense em sistemas Linux, permitindo a identificação rápida e eficiente de padrões suspeitos em logs, arquivos e tráfego de rede. Ao dominar o uso de regex com ferramentas como grepfindtcpdump e awk, você estará melhor equipado para investigar máquinas infectadas e coletar evidências cruciais.

No entanto, é importante lembrar que a análise forense é um processo complexo que requer a integração de múltiplas técnicas e ferramentas. A prática constante e a atualização contínua são essenciais para se manter à frente no campo dinâmico da segurança cibernética.

 

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.

Estas referências fornecem uma base sólida para o uso de expressões regulares e técnicas de análise forense, complementando o conteúdo prático apresentado neste artigo.