html Estafadores al descubierto: análisis de cuatro plataformas de…
Volver a las noticias
INVESTIGACIÓN DE VARIOS CASOS

Los estafadores no son hackers: análisis de cuatro sistemas backend, todos ellos vulnerables

Firebase · Supabase · Express.js · Drainer-as-a-Service · Febrero de 2026

Scam Infrastructure Exposed
Más de 19 000
Robo de frases de semilla (1 campaña)
4
Acceso completo a los backends
0
Se requiere autenticación
267+
Dominios de phishing vinculados

 Aviso legal: Se trata de un análisis, no de un ataque

Todo lo que se expone en este artículo es el resultado de análisis pasivo y datos de acceso público. No se produjo ninguna intrusión en los sistemas. No se eludió ningún proceso de autenticación. En todos los casos, fueron los propios errores de configuración de los estafadores los que dejaron al descubierto su infraestructura, los datos de las víctimas y sus identidades operativas ante cualquiera que simplemente echara un vistazo. Todas las claves API se encontraron en paquetes JavaScript públicos. Todas las bases de datos estaban totalmente expuestas por el propio diseño de los operadores. Documentamos esto no para atacar, sino para demostrar que las personas que te roban tus criptomonedas ni siquiera son capaces de cuidar sus propias herramientas.

 La tesis central: «script kiddies» con herramientas robadas

Existe un mito muy arraigado en la opinión pública según el cual los estafadores en línea son «hackers», es decir, genios de la tecnología capaces de infiltrarse en los sistemas con habilidad y sofisticación. Esto está mal.

Los estafadores de criptomonedas de hoy en día son «script kiddies» que utilizan kits de herramientas comprados. Compran paquetes de «Drainer-as-a-Service» por entre 200 y 500 dólares, los instalan en servidores de alojamiento gratuitos o baratos y rezan para que sus víctimas no se den cuenta. No escriben código. No entienden de redes. Y, desde luego, no entienden de seguridad.

Lo sabemos porque, en febrero de 2026, PhishDestroy analizó 4 operaciones fraudulentas independientes — y en todos y cada uno de los casos, podríamos haber:

No se necesitan vulnerabilidades. Ni exploits de día cero. Ni «hacking». Solo al abrir la puerta principal que habían dejado sin cerrar.

 Caso 1: La API fantasma — server0002.mn19indexpre.xyz

 Express.js en Apache: seguridad nula

SIN AUTENTIFICACIÓN NO SE HA REALIZADO LA VALIDACIÓN DE LOS DATOS INTRODUCIDOS SIN LIMITACIÓN DE VELOCIDAD Cursos: *
ParámetrosValor
Dominioserver0002.mn19indexpre.xyz
Dirección IP108.181.185.225
Pila de servidoresApache/2.4.58 (Ubuntu) → Express.js (Node.js)
Banner de SSHSSH-2.0-OpenSSH_9.6p1 Ubuntu-3ubuntu13.11
Emisor de TLSLet's Encrypt (E7), válido de enero a abril de 2026
Registrador de DNSGoDaddy (ns39/ns40.domaincontrol.com)
Correo electrónico (MX)mn19indexpre-xyz.mail.protection.outlook.com
Entidad de MicrosoftNETORGFT19090185.onmicrosoft.com
Puertos abiertos22 (SSH), 80 (HTTP→301), 443 (HTTPS)

 «Autenticación»: una broma

La API incluye un token «Bearer» predefinido: thisisakeyforsecureserver. Pero aquí viene lo mejor: — el token no se ha verificado realmente:

// Sin encabezado de autenticación → aceptado POST / HTTP/1.1 Content-Type: application/json {"subject":"test","domain":"test","messages":["ping"]} → {"success":true} // Token incorrecto → también se acepta Autorización: Portador «wrong_token_completely» → {"success":true} // Cualquier tipo de contenido → también se acepta Tipo de contenido: text/xml, text/plain, multipart/form-data → {"success":true}

 Validación sin datos de entrada

Todas las cargas útiles de inyección que probamos fueron aceptadas sin ningún problema:

// Inyección SQL Asunto: "' O 1=1--" → aceptado Asunto: "'; BORRAR TABLA messages;--" → aceptado // SSTI (Inyección de plantillas del lado del servidor) Asunto: "{{7*7}}" → aceptado Asunto: "{{config}}" → aceptado Asunto: "{{self.__class__}}" → aceptado // SSRF (Falsificación de solicitudes del lado del servidor) dominio: «http://169.254.169.254/latest/meta-data/» → aceptado dominio: "file:///etc/passwd" → aceptado // Carga útil de XSS almacenada Asunto: "<script>alert(1)</script>" → aceptado

 Huella de rendimiento

Tiempo de respuesta constante de unos 7,5 segundos en la solicitud POST, independientemente del tamaño de la carga útil (se aceptan desde 10 bytes hasta 10 MB), lo que sugiere un reenvío de correo electrónico o un relé de webhooks en el backend. La solicitud GET responde en 0,6 s. Se completan 10 solicitudes en paralelo en 9,1 s; no se aplica ninguna limitación de velocidad.

 Posibilidad de desanonimización

ID de inquilino de Microsoft 365 NETORGFT19090185 es un enlace directo a la cuenta de la organización que registró este dominio. Si a esto le sumamos los registros de GoDaddy y una IP dedicada (sin estar detrás de una CDN), este operador es fácilmente identificable por la vía legal. El registro SPF (include:secureserver.net) confirma que, en el caso del servicio de alojamiento de correo electrónico de GoDaddy, se puede acceder a todos los metadatos del correo electrónico mediante una citación judicial.

 Caso 2: Firebase a las puertas — web3ledgar.com

 Firestore sin reglas de seguridad

REGLAS DE FIRESTORE: ABIERTO TODOS LOS DATOS DE LAS VÍCTIMAS SON LEGIBLES Llave API en JavaScript público 12 VÍCTIMAS ABIERTAS
ParámetrosValor
Dominio de phishingweb3ledgar.com (typosquat de «Ledger»)
Dominio alternativoweb3.ledgerscore.ltd
Proyecto de Firebaseweb3ledger-210ab
Clave APIAIzaSyCv8e-Gl7nK1RPpfNkJt-WjSZiaoe4AsL8
ID de la aplicación1:1054258933515:web:9fb193fcd0093023f7fc0e
Paquete JS/static/js/main.7a5ec2fa.js
Reglas de FirestoreAcceso total — lectura/escritura sin autenticación
Número total de víctimas12 registros en users colección
Colecciones encontradasusers, transactions

 Datos de las víctimas: totalmente accesibles para todo el mundo

Una única solicitud GET sin autenticar a la API REST de Firestore devolvió cada frase de semillas robada:

GET /v1/projects/web3ledger-210ab/databases/(default)/documents/users?pageSize=300 → 200 OK → Total de documentos: 12 // Ejemplo de registro de víctima (frase de inicialización ocultada por motivos de seguridad) { «walletId»: W3L-65285520, «walletType»: «WalletConnect», «correo electrónico»: «[OCULTADO]@gmail.com», «frase de semillas»: "████ ████ ████ ████ ████ ████ ████ ████ ████ ████ ████ ████», «createdAt»: 15 de febrero de 2026 a las 00:14:52.804Z, «estado»: «activo» }

Entre los 12 registros había una entrada reveladora: alguien ya había puesto a prueba el sistema con fbi@fbi.gov tal y como indica el correo electrónico. O bien el estafador probó su propio sistema (algo útil para la identificación), o bien alguien más ya lo había sondeado.

 El flujo del ataque

El sitio de phishing imita la interfaz del monedero de Ledger. La víctima hace clic en «Conectar monedero» → introduce la frase de recuperación → la interfaz de React escribe directamente en Firestore → el estafador lee los datos de la misma base de datos abierta. No hay ningún servidor de fondo. Todo el sistema funciona con el plan gratuito de Google.

 Posibilidad de desanonimización

ID del proyecto de Firebase web3ledger-210ab y el ID de la aplicación 1:1054258933515 son vinculado a una cuenta de Google. Google conserva registros de facturación, registros de IP y datos de creación de cuentas de todos los proyectos de Firebase. Una sola solicitud de las fuerzas del orden a Google basta para revelar la identidad del operador. Además, el hecho de que las reglas de Firestore estén totalmente abiertas significa que podríamos haber introducido los registros en su base de datos, notificó a las víctimas en tiempo real o borró toda la colección.

 Caso 3: Supabase Full CRUD — web3safe-pal.com

 Seguridad a nivel de fila desactivada, GraphQL totalmente abierto

RLS desactivado ACCESO COMPLETO A CRUD COMPATIBLE CON GRAPHQL FUNCIONES DE EDGE: UNA VISIÓN GENERAL LOCALIZACIÓN AL RUSO
ParámetrosValor
Dominio de phishingweb3safe-pal.com (typosquat de «SafePal»)
Proyecto Supabasegzqsadraigchwdhblavp
¿Cuál es la clave?Publicado en /assets/index-b025f4a6.js (748 KB)
Tabla de la base de datosseeds — abrir, leer, insertar, actualizar, eliminar
GraphQLInspección completa + mutaciones habilitadas
Funciones periféricassend-wallet-import-email, send-email
Servicio de correo electrónicoReenviar API (RESEND_API_KEY en el entorno)
Expedientes de las víctimasN.º de identificación 130-131 (el 129 se había eliminado anteriormente)
Idioma de la interfaz de usuarioRuso («Monedero principal», «Se está cargando tu monedero...»)

 Acceso completo a la base de datos: lectura, escritura y eliminación

La clave «anon» de Supabase, que se encuentra en el paquete de JavaScript minificado, permite Acceso completo a CRUD a la seeds tabla:

// LEER: recuperar todas las frases de semillas robadas GET /rest/v1/seeds?select=*ℴ=id.asc → 200 OK [ {identidad:130, "frase":"████ ████ ████ ████ ████ ████ ████ ████ ████ ████ ████ ████», «nombre»:«Monedero principal»}, {identidad:131, "frase":"████ ████ ████ ████ ████ ████ ████ ████ ████ ████ ████ ████», «nombre»:«Monedero principal»} ] // INSERT: podemos escribir en la base de datos del estafador POST /rest/v1/seeds {"phrase":"PHISHDESTROY_WAS_HERE","name":"test"} → 201 Creado {identidad:132} Actualización mediante GraphQL mutación { updateseedsCollection(filtro:{id:{eq:131}}, conjunto:{nombre:«PhishDestroy estuvo aquí»}) { recuentoAfectados } } → {"número de afectados": 1} Eliminar mediante GraphQL mutación { deleteFromseedsCollection(filtro:{id:{eq:131}}, máximo:1) { número de afectados } } → {"número de afectados": 1}

Los ID comienzan en 130 — lo que significa que el operador había eliminado previamente los registros del 1 al 129. Al menos 131 frases de inicialización han pasado por este sistema.

 Funciones de Edge: el historial de correos electrónicos

Hay dos funciones de Supabase Edge activas. Hemos realizado ingeniería inversa en el send-email el formato de entrada esperado de la función mediante la comprobación de cargas de prueba:

// Comprobación del punto final de envío de correo electrónico {"seed":"frase de prueba","name":"prueba"} → 200 OK {"id":"f2749592-..."} {"frase_de_recuperación":"...","nombre_del_monedero":"..."} → 400 «No se han proporcionado datos de semilla». {"frase":"...","nombre":"..."} → 400 «No se han proporcionado datos de semilla». // La función acepta {semilla, nombre} y los envía al atacante a través de la API Resend // Código fuente de la función Edge (reconstruido a partir del paquete JS): // NB.functions.invoke("send-wallet-import-email", // {body: {nombre_del_monedero, frase_secreta, dirección_IP}})

La clave de la API de reenvío (RESEND_API_KEY) se almacena en las variables de entorno de Supabase. Resend conserva los registros de verificación del remitente y los datos de facturación — otra forma directa de averiguar la identidad del operador.

 Posibilidad de desanonimización

La localización de la interfaz de usuario al ruso («Monedero principal», «Se está cargando su monedero...») indica un Operador que habla ruso. El proyecto Supabase (gzqsadraigchwdhblavp) está vinculado a una cuenta con registros de facturación. El servicio de reenvío de correos electrónicos dispone de la dirección de correo electrónico del destinatario. La introspección de GraphQL revela el esquema completo de la base de datos. Hemos demostrado que existe acceso completo de escritura — Podríamos haber sustituido cada frase de semillas robada por un mensaje de advertencia dirigido a las víctimas, o habría borrado toda la tabla. El operador no tendría forma alguna de recuperar los datos.

 Caso 4: Escurridor a escala industrial — aipolypredictor.xyz

 19 000 frases de semilla en 5,8 días

ROBADAS MÁS DE 19 000 SEMILLAS NÚMEROS DE TRABAJO SECUENCIALES SIN RESTRICCIONES DE CORS DaaS KIT (defex.cc) 11 DOMINIOS CONFIRMADOS
ParámetrosValor
Dominio de front-endaipolypredictor.xyz («PolySniper | Las apuestas de los expertos de Frontrun»)
API C2api.yfhikblkhghdyteiuyf54.run
Direcciones IP de clase C2172.67.168.147, 104.21.26.231 (Cloudflare)
BackendExpress.js (Node.js) v1.0.0
Registrar (Frontend)NiceNIC International Group Co.
Registrar (C2)PDR Ltd. (PublicDomainRegistry.com)
Tiempo de actividad~139 horas (comenzó el 10 de febrero de 2026 a las 21:00 UTC)
Kit de drenaje CDNrenderer-postcard.defex.cc (601 KB de código JavaScript ofuscado)
Bot de TelegramActivo, integrado para notificaciones
Límite de solicitudes10 solicitudes/60 s (único límite detectado)

 Escala revelada mediante identificadores secuenciales

El error más grave: ID de trabajo secuenciales. Cada vez que se envía una frase de semillas, se devuelve un identificador (ID) incremental, lo que permite a cualquiera calcular el volumen total:

POST /api/check-seed-full { «frase de semillas»: «frase de prueba aquí», «bundleId»: 88ef78f56e0837dd0339e40a882bf563, «profundidad»: 100, «dominio»: Aipolypredictor.xyz, "sourceInfo": {«walletName»:MetaMask, isBot:falso} } → {"success":true, "message":"Comprobado en cola", "jobId":"19358"} // Siguiente solicitud: jobId 19359, luego 19360... // ~19 000 frases de semillas en ~139 horas = ~137 por hora

 Arquitectura multicadena

El servidor C2 deriva claves en todas las cadenas principales utilizando rutas de derivación de profundidad 100:

⛓️
Cadenas afectadas
Ethereum / Bitcoin / Solana / Monero
🔑
Profundidad de derivación
100
🌐
Dominios confirmados
11
🕸️
defex.cc Enlazado
Más de 255

 Infraestructura de la campaña

11 dominios confirmados en 2 grupos de operadores, identificados mediante los ID de paquete:

ID del paqueteDominiosEstado
88ef78f5...Aipolypredictor.xyzEN DIRECTO
4446ea5d...solana.onspace.app, solxjup.onspace.appEN DIRECTO
Kit de defex.ccjup-v2.com, events-charizard.fun, events-llquid.fun, events-blackswan.fun, soljup.onspace.buildMisto

 Análisis de la carga útil de JavaScript

Tres cargas útiles de JavaScript ofuscadas alimentan el drainer:

  • wallet-connect.js (46 KB) — Gestiona la interfaz de usuario de conexión con el monedero e intercepta la introducción de la semilla. Ofuscación mediante rotación de matrices de cadenas.
  • wallet-specific-modals.js (134 KB) — Contiene Lista completa de palabras en inglés de BIP39 y Lista de palabras de Monero (1.626 palabras). Prevención de la depuración mediante la anulación de console.log/trace. Compatibilidad con ventanas modales para múltiples carteras.
  • defex.cc/index.js (601 KB) — Código ofuscado con Unicode y nombres de variables en chino. Lógica de drenaje específica de Solana. Codificador Base58, primitivas de derivación de claves criptográficas. Versión 3.0.0.

 Posibilidad de desanonimización

El CORS: * el encabezado y la falta de medios de autenticación Cualquiera puede enviar solicitudes y ver cómo aumentan los números de referencia de los trabajos en tiempo real. La integración del bot de Telegram implica que la cuenta de Telegram del operador recibe notificaciones, y los metadatos de Telegram pueden ser objeto de una orden judicial. NiceNIC (registrador del frontend) es un registrador «a prueba de balas» de confianza con el que hemos ya investigado, pero PDR Ltd. (registrador de dominios C2) responde a las solicitudes de las fuerzas del orden. El defex.cc El kit de drenaje da servicio a más de 255 dominios; si se comprometiera defex.cc, quedaría al descubierto toda la operación de DaaS y todos sus clientes.

 Comparativa: 4 operaciones, mismo patrón

Sistema métrico mn19indexpre
Express.js
web3ledgar
Firebase
Web3SafePal
Supabase
aipolypredictor
Drenar C2
AutenticaciónNinguno (símbolo ignorado)NingunoClave «anon» en JavaScriptNinguno (CORS: *)
Datos legiblesMensajes/retransmisiónTodas las frases de semillaTodas las frases de semillaNúmeros de referencia de los trabajos / escala
Datos grabablesSí (ilimitado)Sí (CRUD completo)Sí (enviar)
Validación de datosCeroCeroCeroMínimo
Limitación de la velocidadNingunoNingunoNinguno10 repeticiones/60 segundos
IdentificableEntidad de MS365Cuenta de GoogleReenviar + Facturación de SupabasePDR + Telegram
Número estimado de víctimasDesconocido12131+Más de 19 000
Idioma del operadorDesconocidoEspañolRusoDesconocido

 Por qué los estafadores no son hackers

Las pruebas son abrumadoras. En las cuatro operaciones observamos el mismo patrón:

 Qué hacen los estafadores
  • Comprar kits de escurridores ya montados (entre 200 y 500 dólares)
  • Implementar en planes gratuitos (Firebase, Supabase)
  • No modifique las configuraciones predeterminadas
  • Utiliza tokens fijos que no se verifiquen
  • Nunca actives RLS, nunca restrinjas CORS
  • Revelar su propia identidad en los metadatos
  • Utiliza identificadores secuenciales que reflejen su escala
 Lo que harían los hackers
  • Crear herramientas de exfiltración personalizadas
  • Utiliza canales cifrados y autenticados
  • Aleatorizar los identificadores, rotar la infraestructura
  • Implantar un control de acceso adecuado
  • Utiliza Tor o cadenas de proxy, pagos anónimos
  • Separar la identidad operativa del alojamiento
  • Aplicar técnicas antiforenses

El cliente típico de «Drainer-as-a-Service» es un un estafador que se hace pasar por otra persona con una tarjeta de crédito, no son técnicos. Saben cómo registrar un dominio y pegar código en el panel de un alojamiento web. No saben cómo:

No se trata de adversarios sofisticados. Se trata de personas que no saben configurar una base de datos.

 Indicadores de compromiso (IOC)

Dominios

# Case 1: Express.js API server0002.mn19indexpre.xyz # Case 2: Firebase Stealer web3ledgar.com web3.ledgerscore.ltd # Case 3: Supabase Stealer web3safe-pal.com # Case 4: Drainer Campaign aipolypredictor.xyz api.yfhikblkhghdyteiuyf54.run yfhikblkhghdyteiuyf54.run renderer-postcard.defex.cc solana.onspace.app solxjup.onspace.app jupag.onspace.app jupiverse.onspace.app stakepayment.icu jup-v2.com events-charizard.fun events-llquid.fun events-blackswan.fun soljup.onspace.build

Direcciones IP

108.181.185.225 # Caso 1 — Express.js (dedicado) 172.67.168.147 / 104.21.26.231 # Caso 4 — API C2 (Cloudflare) 172.67.178.251 / 104.21.67.171 # Caso 4 — Frontend (Cloudflare) 172.67.209.39 / 104.21.37.139 # Caso 4 — defex.cc (Cloudflare) 43.130.171.152 / 43.130.171.225 # Caso 4 — Dominios onspace (Tencent)

Claves API e ID de proyecto

# Firebase (Case 2) Proyecto: web3ledger-210ab Clave API: AIzaSyCv8e-Gl7nK1RPpfNkJt-WjSZiaoe4AsL8 ID de la aplicación: 1:1054258933515:web:9fb193fcd0093023f7fc0e # Supabase (Case 3) Proyecto: gzqsadraigchwdhblavp Clave anónima: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... # Campaign Tracking (Case 4) Paquete 1: 88ef78f56e0837dd0339e40a882bf563 Paquete 2: 4446ea5ddb308b2494db8ad4b12196c3 # Microsoft Tenant (Case 1) NETORGFT19090185.onmicrosoft.com

 Conclusión: El emperador va desnudo

 Conclusión

Todas las estafas que analizamos podrían ser totalmente comprometida, desanonimizada y desarticulada utilizando únicamente un navegador web, curl y documentación de acceso público. En todos los casos, los atacantes dejaron sus bases de datos totalmente expuestas, sus claves API en archivos JavaScript públicos, sus identidades en los metadatos y los datos de sus víctimas al alcance de cualquiera que se tomara la molestia de buscarlos.

La lección es sencilla: Los estafadores no son hackers. Son unos ladrones de tiendas que compraron un juego de ganzúas en AliExpress y se olvidaron de cerrar con llave la puerta de su propia casa. Las herramientas que utilizan son sofisticadas… porque las ha fabricado otra persona. Los propios operadores son aficionados que exponen sin reparos su propia infraestructura, los datos de sus víctimas y sus propias identidades a cualquiera que tenga unos conocimientos técnicos básicos.

Si has introducido tu frase de recuperación en cualquiera de estos sitios web, da por hecho que tu monedero ha sido comprometido y transfiere los fondos inmediatamente.

Todos los hallazgos se han comunicado a los proveedores de servicios correspondientes (Google/Firebase, Supabase, Cloudflare, registradores de dominios) y se han documentado para las fuerzas del orden. Los IOC mencionados anteriormente se han añadido a la PhishDestroy: lista de eliminación.

Comparte esta investigación

X / Twitter Telegram Reddit LinkedIn

Investigaciones relacionadas

BUYTRX Exposed: 55 Domains & TRON Approval Drainer
INVESTIGACIÓN
BUYTRX al descubierto: 55 dominios y un drainer de aprobaciones de TRON
Crypto Drainer Toolkit: Angel Drainer Resellers Exposed
INVESTIGACIÓN EN PROFUNDIDAD
Kit de herramientas Crypto Drainer: se desenmascara a los distribuidores de Angel Drainer
Keitaro TDS: 1,500 Panels Exposed, Zero Legit Uses
INVESTIGACIÓN
Keitaro TDS: 1.500 paneles expuestos, ningún uso legítimo
Aviso sobre transparencia. PhishDestroy es un proyecto sin ánimo de lucro impulsado por voluntarios. Nuestra investigación puede reflejar un sesgo inherente contra las infraestructuras fraudulentas y los servicios que las facilitan. Animamos a los lectores a que evalúen todo el material de forma crítica e independiente. Lee nuestra declaración de transparencia completa →