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
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:
- 📖 Leer todos los datos de las víctimas del robo (frases de recuperación, direcciones de correo electrónico, direcciones IP, tipos de monederos)
- ✏️ Modificado o eliminado la base de datos del estafador
- 🔍 Se ha identificado al operador a través de claves API expuestas, direcciones de correo electrónico y huellas de infraestructura
- 🔄 Se ha reproducido el ataque contra el estafador — aprovechando las mismas vulnerabilidades que dejaron sin corregir
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
| Parámetros | Valor |
|---|---|
| Dominio | server0002.mn19indexpre.xyz |
| Dirección IP | 108.181.185.225 |
| Pila de servidores | Apache/2.4.58 (Ubuntu) → Express.js (Node.js) |
| Banner de SSH | SSH-2.0-OpenSSH_9.6p1 Ubuntu-3ubuntu13.11 |
| Emisor de TLS | Let's Encrypt (E7), válido de enero a abril de 2026 |
| Registrador de DNS | GoDaddy (ns39/ns40.domaincontrol.com) |
| Correo electrónico (MX) | mn19indexpre-xyz.mail.protection.outlook.com |
| Entidad de Microsoft | NETORGFT19090185.onmicrosoft.com |
| Puertos abiertos | 22 (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:
Validación sin datos de entrada
Todas las cargas útiles de inyección que probamos fueron aceptadas sin ningún problema:
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
| Parámetros | Valor |
|---|---|
| Dominio de phishing | web3ledgar.com (typosquat de «Ledger») |
| Dominio alternativo | web3.ledgerscore.ltd |
| Proyecto de Firebase | web3ledger-210ab |
| Clave API | AIzaSyCv8e-Gl7nK1RPpfNkJt-WjSZiaoe4AsL8 |
| ID de la aplicación | 1:1054258933515:web:9fb193fcd0093023f7fc0e |
| Paquete JS | /static/js/main.7a5ec2fa.js |
| Reglas de Firestore | Acceso total — lectura/escritura sin autenticación |
| Número total de víctimas | 12 registros en users colección |
| Colecciones encontradas | users, 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:
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
| Parámetros | Valor |
|---|---|
| Dominio de phishing | web3safe-pal.com (typosquat de «SafePal») |
| Proyecto Supabase | gzqsadraigchwdhblavp |
| ¿Cuál es la clave? | Publicado en /assets/index-b025f4a6.js (748 KB) |
| Tabla de la base de datos | seeds — abrir, leer, insertar, actualizar, eliminar |
| GraphQL | Inspección completa + mutaciones habilitadas |
| Funciones periféricas | send-wallet-import-email, send-email |
| Servicio de correo electrónico | Reenviar API (RESEND_API_KEY en el entorno) |
| Expedientes de las víctimas | N.º de identificación 130-131 (el 129 se había eliminado anteriormente) |
| Idioma de la interfaz de usuario | Ruso («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:
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:
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
| Parámetros | Valor |
|---|---|
| Dominio de front-end | aipolypredictor.xyz («PolySniper | Las apuestas de los expertos de Frontrun») |
| API C2 | api.yfhikblkhghdyteiuyf54.run |
| Direcciones IP de clase C2 | 172.67.168.147, 104.21.26.231 (Cloudflare) |
| Backend | Express.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 CDN | renderer-postcard.defex.cc (601 KB de código JavaScript ofuscado) |
| Bot de Telegram | Activo, integrado para notificaciones |
| Límite de solicitudes | 10 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:
Arquitectura multicadena
El servidor C2 deriva claves en todas las cadenas principales utilizando rutas de derivación de profundidad 100:
Infraestructura de la campaña
11 dominios confirmados en 2 grupos de operadores, identificados mediante los ID de paquete:
| ID del paquete | Dominios | Estado |
|---|---|---|
88ef78f5... | Aipolypredictor.xyz | EN DIRECTO |
4446ea5d... | solana.onspace.app, solxjup.onspace.app | EN DIRECTO |
| Kit de defex.cc | jup-v2.com, events-charizard.fun, events-llquid.fun, events-blackswan.fun, soljup.onspace.build | Misto |
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ón | Ninguno (símbolo ignorado) | Ninguno | Clave «anon» en JavaScript | Ninguno (CORS: *) |
| Datos legibles | Mensajes/retransmisión | Todas las frases de semilla | Todas las frases de semilla | Números de referencia de los trabajos / escala |
| Datos grabables | Sí (ilimitado) | Sí | Sí (CRUD completo) | Sí (enviar) |
| Validación de datos | Cero | Cero | Cero | Mínimo |
| Limitación de la velocidad | Ninguno | Ninguno | Ninguno | 10 repeticiones/60 segundos |
| Identificable | Entidad de MS365 | Cuenta de Google | Reenviar + Facturación de Supabase | PDR + Telegram |
| Número estimado de víctimas | Desconocido | 12 | 131+ | Más de 19 000 |
| Idioma del operador | Desconocido | Español | Ruso | Desconocido |
Por qué los estafadores no son hackers
Las pruebas son abrumadoras. En las cuatro operaciones observamos el mismo patrón:
- 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
- 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:
- Configura las reglas de seguridad de Firestore (te llevará unos 2 minutos)
- Activar la seguridad a nivel de fila de Supabase (tardaría unos 5 minutos)
- Validar y depurar los datos introducidos (tardaría unos 30 minutos)
- Utiliza UUID en lugar de números enteros secuenciales (solo requeriría una línea de código)
- Restringir CORS a sus propios dominios (solo requeriría una línea de configuración)
No se trata de adversarios sofisticados. Se trata de personas que no saben configurar una base de datos.
Indicadores de compromiso (IOC)
Dominios
Direcciones IP
Claves API e ID de proyecto
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.


