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

Análise de Ataques de Força Bruta com Expressões Regulares no Linux

Ataques de força bruta são uma das técnicas mais comuns utilizadas por invasores para ganhar acesso não autorizado a sistemas. Esses ataques envolvem tentativas repetidas de login, geralmente via SSH ou FTP, até que uma credencial válida seja descoberta. Neste artigo, vamos explorar como as expressões regulares (regex) no Linux podem ser utilizadas para analisar logs e identificar padrões de ataques de força bruta em uma máquina que está sendo alvo de múltiplas conexões SSH e FTP.

 

1. Introdução ao cenário

Imagine uma máquina Linux que está recebendo um grande número de tentativas de login via SSH e FTP. O administrador do sistema notou um aumento incomum no tráfego de rede e suspeita que a máquina esteja sendo alvo de um ataque de força bruta. Nosso objetivo é analisar os logs do sistema para identificar padrões de ataque, como IPs suspeitos, horários de pico e credenciais testadas.

 

2. Analisando logs de SSH

Os logs de SSH são armazenados em /var/log/auth.log na maioria das distribuições Linux. Vamos começar analisando este arquivo para identificar tentativas de login mal-sucedidas.

 

2.1. Identificando Tentativas de Login Falhas

Para buscar todas as tentativas de login falhas, podemos usar o comando grep com a expressão “Failed password”:

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

Este comando retorna todas as linhas que contêm a mensagem “Failed password”, indicando tentativas de login mal-sucedidas.

 

2.2. Extraindo IPs suspeitos

Para identificar os IPs que estão realizando as tentativas de login, podemos usar uma regex que capture endereços IP:

grep -oE "([0-9]{1,3}\.){3}[0-9]{1,3}" /var/log/auth.log | sort | uniq -c | sort -nr

Aqui, a regex ([0-9]{1,3}\.){3}[0-9]{1,3} captura endereços IP, e os comandos sortuniq -c e sort -nr organizam os resultados por frequência, mostrando quais IPs estão realizando mais tentativas.

 

2.3. Identificando Usuários Alvo

Para descobrir quais usuários estão sendo alvo do ataque, podemos usar:

grep -oP "Failed password for \K[^\s]+" /var/log/auth.log | sort | uniq -c | sort -nr

Aqui, a regex Failed password for \K[^\s]+ extrai o nome do usuário após a mensagem “Failed password for”.

 

3. Analisando logs de FTP

Se o servidor FTP estiver em execução, os logs podem estar em /var/log/vsftpd.log ou /var/log/xferlog, dependendo da configuração. Vamos analisar esses logs para identificar tentativas de login falhas.

 

3.1. Buscando tentativas de login falhas

Para buscar tentativas de login falhas no FTP, use:

grep "FAIL LOGIN" /var/log/vsftpd.log

Este comando retorna todas as linhas que contêm a mensagem “FAIL LOGIN”.

 

3.2. Extraindo IPs e Usuários

Para extrair IPs e usuários associados às tentativas falhas, podemos usar:

grep -oP "FAIL LOGIN: Client \"\K[^\"]+" /var/log/vsftpd.log | sort | uniq -c | sort -nr

Aqui, a regex FAIL LOGIN: Client \"\K[^\"]+ captura o IP do cliente após a mensagem “FAIL LOGIN: Client”.

 

4. Correlacionando dados com Awk

Para uma análise mais avançada, podemos usar awk para correlacionar dados de diferentes logs. Por exemplo, para contar o número de tentativas de login por IP e usuário:

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

Este comando extrai o IP ($(NF-3)) e o usuário ($9) de cada linha com “Failed password” e conta as ocorrências.

 

5. Identificando horários de pico

Para identificar os horários em que o ataque está mais ativo, podemos extrair o horário das tentativas de login:

grep -oP "Failed password.*\K[0-9]{2}:[0-9]{2}:[0-9]{2}" /var/log/auth.log | uniq -c

Aqui, a regex Failed password.*\K[0-9]{2}:[0-9]{2}:[0-9]{2} captura o horário das tentativas falhas.

 

6. Bloqueando IPs suspeitos

Após identificar os IPs suspeitos, podemos bloquear temporariamente o acesso usando iptables:

iptables -A INPUT -s 203.0.113.45 -j DROP

Este comando bloqueia o IP 203.0.113.45. Para uma solução mais permanente, considere usar ferramentas como fail2ban.

 

7. Conclusão

Expressões regulares são uma ferramenta poderosa para análise forense em sistemas Linux, especialmente quando se trata de identificar e caracterizar ataques de força bruta. Ao combinar regex com ferramentas como grepawk e iptables, é possível identificar padrões de ataque, extrair evidências e tomar medidas para proteger o sistema.

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.