0 minutos de leitura
Ameaças Usam APIs do Telegram para Coletar Credenciais
Hassan Faizan
Resumo Executivo
Nas últimas semanas, houve um aumento nos ataques de phishing, conduzidos por meio de plataformas de mensagens como o Telegram. O Telegram é um aplicativo amplamente utilizado que permite aos usuários enviar mensagens, fotos, vídeos e outros arquivos online. Ele também fornece APIs para desenvolvedores criarem bots e aplicativos personalizados. Infelizmente, essas APIs também podem atrair atores mal-intencionados que as utilizam para fins ilícitos, como roubo de credenciais.
Cadeia de Infecção
A Figura 1 apresenta um exemplo de um e-mail de phishing que mostra uma URL, ou seja, hxxps[://]www[.]astunet[.]com/wp-plug/imu0nni5/3rhenqt2/
r2.dev é um serviço de armazenamento em nuvem da Cloudflare com uma longa história de hospedagem de páginas de phishing. Aqui, observamos uma página de destino de phishing, ou seja, hxxps[://]pub-31a116fb226d4dfaa2004eef764a6bff[.]r2[.]dev/ayo[.]html#
Ao investigar a página HTML, encontramos um script do lado do cliente escrito em JavaScript, com alguns trechos de jQuery, que realiza várias ações, incluindo o manuseio de envios de formulários e o envio de dados para um bot do Telegram. A Figura 3 mostra um trecho de código responsável pela requisição POST que exfiltra credenciais do alvo e outras informações.
A Figura 4 mostra um trecho de código que define uma função responsável por registrar informações dos visitantes em um chat do Telegram. Ela constrói uma mensagem detalhada usando dados dos visitantes e outras informações e, em seguida, a envia para um chat do Telegram especificado por meio de uma requisição de API.
Outras partes dos trechos de código não estão incluídas por questões de brevidade. No entanto, o código acima e o restante dos trechos de código parecem ser maliciosos e projetados para fins de phishing. Abaixo está uma análise de sua funcionalidade.
Variáveis Chave:
- BOT_TOKEN: O token para o bot do Telegram usado para enviar mensagens.
- CHAT_ID: O ID do chat onde o bot envia mensagens.
- LOGGER_TOKEN: Outro token, possivelmente para fins de registro com um bot diferente.
- LOGGER_ID: O ID do chat usado pelo bot de registro.
- FILE: Uma URL codificada em Base64.
Manipulação de URL:
O script inicia após o carregamento completo do documento. Inicializa uma variável de contagem com valor 0. Para lidar com a página de phishing descrita acima, uma parte do hash da URL é extraída, decodificada em Base64 e armazenada na variável ai. Se a variável ai não estiver vazia, tentará buscar e exibir um logo para os domínios extraídos do endereço de e-mail.
Manipulador de Envio do Formulário:
- Trata o envio de formulários quando o botão com o ID submit-btn é clicado.
- Normalmente, quando um formulário é enviado clicando no botão de envio, o navegador envia os dados do formulário para o servidor e recarrega a página por padrão. Usando event.preventDefault(), essa ação padrão é interrompida, permitindo que o envio do formulário seja tratado com código JavaScript personalizado em vez do envio tradicional do formulário.
- O código realiza uma validação personalizada do e-mail por meio de uma validação básica de formato de e-mail usando expressão regular e da senha, validando o comprimento da senha (mínimo de 4 caracteres). Se essas entradas forem válidas, os dados (informações do visitante, e-mail, senha, navegador, idioma e registro MX) são enviados para um bot do Telegram usando uma solicitação AJAX (de forma assíncrona).
- Dependendo da resposta, exibe uma mensagem de erro ou redireciona para um arquivo PDF, ou seja, hxxps[://]www[.]docspro[.]nl/wp-content/uploads/2021/12/Docspro-License-Agreement[.]pdf após uma simulação de login bem-sucedida.
Funções Auxiliares:
- handleBase64Data(string)
- Decodifica uma string codificada em Base64.
- GetBrowserandLanguage()
- Recupera a versão do navegador e o idioma do cliente.
- logVisitorToTelegram(email)
- Função assíncrona usada para registrar informações do visitante em um chat específico do Telegram usando o bot de registro.
- getMXRecord(domain)
- Função assíncrona que busca registros MX (Mail Exchange) para um domínio específico usando a API DNS do Google.
- getVisitorIP()
- Obtém as informações do IP do visitante do serviço ipinfo.io.
- sendVisitorIP()
- Função assíncrona que combina a obtenção do IP do visitante com outras informações (cidade, país, região) e envia para o destino desejado.
Curiosamente, entre as variáveis chave, a variável FILE não é vista sendo utilizada no código. Ela contém strings codificadas em base64, que são decodificadas para uma URL, ou seja, hxxps[://]goldviseinvesmenu[.]com/levels/ll[.]php. Embora o propósito não seja claro, é muito provável que as informações do visitante sejam enviadas para esse destino desejado.
Conclusão:
O script tenta coletar credenciais de usuário (e-mail, senha) e enviá-las para um bot do Telegram de forma assíncrona por meio de uma solicitação AJAX. Ele valida os campos de entrada e garante que atendam a certos critérios. O IP do visitante e outras informações são coletados e enviados junto com as credenciais, e as informações do IP e do navegador podem ser usadas para fins de rastreamento. O script inclui funcionalidade para buscar e exibir logos de domínios com base no endereço de e-mail fornecido. O uso de event.preventDefault() é crucial neste código para interceptar o comportamento padrão de envio do formulário e permitir o manuseio personalizado dos dados do formulário sem recarregar a página.
Indicador de Comprometimento:
Sujeito | s***@[redacted] has shared Fin...Statement_[redacted]1325303630.pdf" with you today |
Domínio Comprometido | www[.]astunet[.]com |
Phishing landing page | hxxps[://]pub-31a116fb226d4dfaa2004eef764a6bff[.]r2[.]dev/ayo[.]html# |
Domínio C2 (provável) | goldviseinvesmenu[.]com |
Arquivo PDF legítimo (apenas para espaço reservado) após login bem-sucedido | hxxps[://]www[.]docspro[.]nl/wp-content/uploads/2021/12/Docspro-License-Agreement[.]pdf |
Bot do Telegram | hxxps[://]api[.]telegram[.]org/bot7256693481:AAHVAkPmxExV-EPf1cOIk-cCH0L0SR9aq7o/sendMessage?chat_id=5616766790 |
Declaração de Proteção:
- Fase 1 (Reconhecimento) – Coleta de endereços de e-mail. Os e-mails são bloqueados por nossa análise de e-mails.
- Fase 2 (Isca) – Entrega com URL armada. Bloqueada pela análise web.
- Fase 3 (Redirecionamento) – Redireciona para uma página de phishing após clicar na URL armada no e-mail. Bloqueada pela análise web.
- Fase 6 (Chamada de Retorno) – Domínio potencial de C2 é bloqueado pela análise web.
Hassan Faizan
Leia mais artigos de Hassan FaizanSyed Hassan Faizan as a Security Researcher for Forcepoint X-Labs Research Team. He devotes his time in researching cyber-attacks that targets the web and email, particularly focusing on URL analysis, email security and malware campaign investigation. He is passionate about analysing cyber threats aimed at windows systems.
No Artigo
X-Labs
Get insight, analysis & news straight to your inbox
Ao Ponto
Cibersegurança
Um podcast que cobre as últimas tendências e tópicos no mundo da cibersegurança
Ouça Agora