Ir direto para o conteúdo principal
Voltar às notícias
INVESTIGAÇÃO DE VÁRIOS CASOS

Golpistas não são hackers: análise de quatro back-ends, todos facilmente comprometidos

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

Infraestrutura de golpes é desmascarada
19,000+
Roubo de frases-semente (1 campanha)
4
Back-ends totalmente acessíveis
0
É necessária autenticação
267+
Domínios de phishing associados

 Aviso: Análise, não ataque

Tudo o que é apresentado neste artigo é resultado de análise passiva e dados acessíveis ao público. Nenhum sistema foi invadido. Nenhuma autenticação foi contornada. Em cada caso, a própria configuração incorreta dos golpistas expôs sua infraestrutura, os dados das vítimas e as identidades operacionais a qualquer pessoa que simplesmente olhasse. Todas as chaves de API foram encontradas em pacotes públicos de JavaScript. Todos os bancos de dados estavam totalmente abertos devido ao próprio projeto dos operadores. Documentamos isso não para atacar — mas para demonstrar que as pessoas que estão roubando suas criptomoedas nem sequer conseguem guardar suas próprias ferramentas.

 A tese central: “script kiddies” com ferramentas roubadas

Existe um mito persistente na imaginação do público de que os golpistas online são “hackers” — gênios da tecnologia que invadem sistemas com habilidade e sofisticação. Isso está errado.

Os golpistas de criptomoedas da atualidade são “script kiddies” que utilizam kits de ferramentas comprados. Eles compram pacotes do tipo “Drainer-as-a-Service” por US$ 200 a US$ 500, os instalam em servidores de hospedagem gratuitos ou baratos e rezam para que suas vítimas não percebam. Eles não escrevem código. Não entendem de redes. E certamente não entendem de segurança.

Sabemos disso porque, em fevereiro de 2026, o PhishDestroy analisou 4 operações fraudulentas independentes — e, em todos os casos, poderíamos ter:

Não são necessárias vulnerabilidades. Não há falhas de dia zero. Não há “hacking”. Apenas abrindo a porta da frente que eles deixaram destrancada.

 Caso 1: A API Fantasma — server0002.mn19indexpre.xyz

 Express.js no Apache: segurança praticamente inexistente

SEM AUTENTICAÇÃOSEM VALIDAÇÃO DE ENTRADASEM LIMITAÇÃO DE TAXACORS: *
ParâmetroValor
Domínioserver0002.mn19indexpre.xyz
Endereço IP108.181.185.225
Pilha de servidoresApache/2.4.58 (Ubuntu) → Express.js (Node.js)
Banner do SSHSSH-2.0-OpenSSH_9.6p1 Ubuntu-3ubuntu13.11
Emissor TLSLet's Encrypt (E7), válido de janeiro a abril de 2026
Registrador de DNSGoDaddy (ns39/ns40.domaincontrol.com)
E-mail (MX)mn19indexpre-xyz.mail.protection.outlook.com
Locatário da MicrosoftNETORGFT19090185.onmicrosoft.com
Portas abertas22 (SSH), 80 (HTTP→301), 443 (HTTPS)

 "Autenticação" — Uma piada

A API vem com um token Bearer predefinido: thisisakeyforsecureserver. Mas eis o ponto principal — o token não é, na verdade, verificado:

// No auth header → accepted POST / HTTP/1.1 Content-Type: application/json {"subject":"test","domain":"test","messages":["ping"]} → {"success":true}// Wrong token → also accepted Autorização: Portador wrong_token_completely → {"success":true}// Any content type → also accepted Content-Type: text/xml, text/plain, multipart/form-data → {"success":true}

 Validação sem entrada

Todas as cargas de injeção que testamos foram aceitas sem aviso prévio:

// SQL injection assunto: "' OU 1=1--"→ aceito assunto: "'; DROP TABLE messages;--"→ aceito// SSTI (Server-Side Template Injection) assunto: "{{7*7}}"→ aceito assunto: "{{config}}"→ aceito assunto: "{{self.__class__}}"→ aceito// SSRF (Server-Side Request Forgery) domínio: “http://169.254.169.254/latest/meta-data/”→ aceito domínio: "file:///etc/passwd"→ aceito// XSS stored payload assunto: "<script>alert(1)</script>"→ aceito

 Impressão digital de desempenho

Tempo de resposta consistente de aproximadamente 7,5 segundos para a solicitação POST, independentemente do tamanho da carga (aceita-se de 10 bytes a 10 MB), o que sugere o encaminhamento de e-mails ou o retransmissão de webhooks no back-end. A solicitação GET responde em 0,6 s. Dez solicitações paralelas são concluídas em 9,1 s — sem limitação de taxa aplicada.

 Potencial de desanonimização

ID do locatário do Microsoft 365 NETORGFT19090185 é um link direto para a conta da organização que registrou este domínio. Combinando os registros de registro da GoDaddy e um IP dedicado (que não está atrás de uma CDN), esse operador é facilmente identificável por meios legais. O registro SPF (include:secureserver.net) confirma que, no serviço de hospedagem de e-mail da GoDaddy, todos os metadados de e-mail podem ser acessados mediante intimação judicial.

 Caso 2: Firebase totalmente aberto — web3ledgar.com

 Firestore sem regras de segurança

REGRAS DO FIRESTORE: ABERTOTODOS OS DADOS DAS VÍTIMAS ESTÃO DISPONÍVEIS PARA CONSULTACHAVE DE API NO JS PÚBLICO12 VÍTIMAS IDENTIFICADAS
ParâmetroValor
Domínio de phishingweb3ledgar.com (typosquat de “Ledger”)
Domínio alternativoweb3.ledgerscore.ltd
Projeto do Firebaseweb3ledger-210ab
Chave de APIAIzaSyCv8e-Gl7nK1RPpfNkJt-WjSZiaoe4AsL8
ID do aplicativo1:1054258933515:web:9fb193fcd0093023f7fc0e
Pacote JS/static/js/main.7a5ec2fa.js
Regras do FirestoreTotalmente aberto — leitura/gravação sem autenticação
Total de vítimas12 registros em users coleção
Coleções encontradasusers, transactions

 Dados das vítimas — totalmente acessíveis a qualquer pessoa

Uma única solicitação GET não autenticada à API REST do Firestore retornou cada frase-semente roubada:

GET /v1/projects/web3ledger-210ab/databases/(default)/documents/users?pageSize=300 → 200 OK→ Total de documentos: 12// Sample victim record (seed phrase redacted for safety) { "walletId": "W3L-65285520", "walletType": "WalletConnect", "e-mail": "[REDACTED]@gmail.com", "frase-semente": "████ ████ ████ ████ ████ ████ ████ ████ ████ ████ ████ ████", "createdAt": "2026-02-15T00:14:52.804Z", "status": "ativo" }

Entre os 12 registros, havia uma anotação reveladora — alguém já havia testado o sistema com fbi@fbi.gov conforme consta no e-mail. O golpista ou testou seu próprio sistema (o que é útil para identificação) ou alguém já havia feito um teste nele.

 O fluxo do ataque

O site de phishing imita a interface da carteira da Ledger. A vítima clica em “Conectar carteira” → digita a frase-semente → o front-end do React grava diretamente no Firestore → o golpista acessa os dados desse mesmo banco de dados aberto. Não há nenhum servidor de back-end. Toda a operação funciona com o plano gratuito do Google.

 Potencial de desanonimização

ID do projeto do Firebase web3ledger-210ab e ID do aplicativo 1:1054258933515 são vinculado a uma conta do Google. O Google mantém registros de cobrança, logs de IP e dados de criação de contas para todos os projetos do Firebase. Basta uma única solicitação das autoridades ao Google para que a identidade do operador seja revelada. Além disso, o fato de as regras do Firestore estarem totalmente abertas significa que poderíamos ter inserido registros no banco de dados deles, notificava as vítimas em tempo real ou apagava toda a coleção.

 Caso 3: CRUD completo no Supabase — web3safe-pal.com

 Segurança no nível da linha desativada, GraphQL totalmente aberto

RLS DESATIVADOACESSO COMPLETO A CRUDGRAPHQL ATIVADOFUNÇÕES DE BORDA EXPOSASLOCALIZAÇÃO EM RUSSO
ParâmetroValor
Domínio de phishingweb3safe-pal.com (typosquat de “SafePal”)
Projeto Supabasegzqsadraigchwdhblavp
Chave Anon Divulgado em /assets/index-b025f4a6.js (748 KB)
Tabela do banco de dadosseeds — abrir, ler, inserir, atualizar, excluir
GraphQLIntrospecção completa + mutações ativadas
Funções de borda send-wallet-import-email, send-email
Serviço de e-mailAPI de reenvio (RESEND_API_KEY na variável de ambiente)
Registros das vítimasIDs 130–131 (129 excluídos anteriormente)
Idioma da interface do usuário Russo (“Carteira principal”, “Sua carteira está sendo carregada...”)

 Acesso total ao banco de dados — leitura, gravação e exclusão

A chave “anon” do Supabase, encontrada no pacote de JavaScript minificado, concede acesso CRUD completo para o seeds tabela:

// READ — get all stolen seed phrases GET /rest/v1/seeds?select=*ℴ=id.asc → 200 OK [ {"id":130, "frase":"████ ████ ████ ████ ████ ████ ████ ████ ████ ████ ████ ████", "nome":"Carteira principal"}, {"id":131, "frase":"████ ████ ████ ████ ████ ████ ████ ████ ████ ████ ████ ████", "nome":"Carteira principal"} ] // INSERT — we can write to the scammer's database POST /rest/v1/seeds {"phrase":"PHISHDESTROY_WAS_HERE","name":"test"} → 201 Criado {"id":132} // UPDATE via GraphQL mutation { updateseedsCollection(filter:{id:{eq:131}}, set:{name:"PhishDestroy was here"}) { affectedCount } } → {"affectedCount": 1}// DELETE via GraphQL mutation { deleteFromseedsCollection(filter:{id:{eq:131}}, atMost:1) { affectedCount } } → {"affectedCount": 1}

Os IDs começam em 130 — o que significa que os registros de 1 a 129 foram excluídos anteriormente pelo operador. Pelo menos 131 frases-semente já passaram por este sistema.

 Funções de ponta: o rastro de e-mails

Duas funções do Supabase Edge estão ativas. Fizemos a engenharia reversa do send-email o formato de entrada esperado da função, testando cargas de teste:

// Probing send-email endpoint {"seed":"test phrase","name":"test"} → 200 OK {"id":"f2749592-..."} {"seed_phrase":"...","wallet_name":"..."} → 400 “Não foram fornecidos dados de semente.” {"phrase":"...","name":"..."} → 400 “Não foram fornecidos dados de semente.”// The function accepts {seed, name} and sends to attacker via Resend API// Edge Function source (reconstructed from JS bundle):// NB.functions.invoke("send-wallet-import-email",// {body: {wallet_name, secret_phrase, ip_address}})

A chave da API de reenvio (RESEND_API_KEY) é armazenado nas variáveis de ambiente do Supabase. O Resend mantém registros de verificação do remetente e dados de cobrança — outro caminho direto para a identidade do operador.

 Potencial de desanonimização

A localização da interface do usuário em russo (“Основной кошелек”, “Ваш кошелек загружается...”) indica um Operador que fala russo. O projeto Supabase (gzqsadraigchwdhblavp) está vinculado a uma conta com registros de cobrança. O serviço de reenvio de e-mail possui o endereço de e-mail do destinatário. A introspecção do GraphQL revela o esquema completo do banco de dados. Demonstramos acesso total de gravação — poderíamos ter substituído cada frase-semente roubada por uma mensagem de alerta às vítimas, ou apagasse a tabela inteira. O operador não teria como recuperar os dados.

 Caso 4: Drenador em escala industrial — aipolypredictor.xyz

 19.000 frases-semente em 5,8 dias

Mais de 19 mil sementes roubadasIDs SEQUENCIAIS DE TAREFASSEM RESTRIÇÕES DE CORSDaaS KIT (defex.cc)11 DOMÍNIOS CONFIRMADOS
ParâmetroValor
Domínio do front-end aipolypredictor.xyz ("PolySniper | Apostas privilegiadas da Frontrun")
API C2api.yfhikblkhghdyteiuyf54.run
IPs C2 172.67.168.147, 104.21.26.231 (Cloudflare)
Back-endExpress.js (Node.js) v1.0.0
Registrador (Front-end)NiceNIC International Group Co.
Secretário (C2)PDR Ltd. (PublicDomainRegistry.com)
Tempo de atividade~139 horas (início em ~10 de fevereiro de 2026, às 21h00 UTC)
Kit de drenagem CDN renderer-postcard.defex.cc (601 KB de JS ofuscado)
Bot do TelegramAtivo, integrado para notificações
Limite de taxas10 solicitações/60s (único limite encontrado)

 Escala revelada por IDs sequenciais

O erro mais grave: IDs sequenciais de tarefas. Cada envio de frase-semente gera um ID incremental, permitindo que qualquer pessoa calcule o volume total:

POST /api/check-seed-full { "frase-semente": "frase de teste aqui", "bundleId": "88ef78f56e0837dd0339e40a882bf563", "profundidade": 100, "domínio": "aipolypredictor.xyz", "sourceInfo": {"walletName":"MetaMask", "isBot":false} } → {"success":true, "message":"Verificado na fila", "jobId":"19358"}// Next request: jobId 19359, then 19360...// ~19,000 seed phrases in ~139 hours = ~137 per hour

 Arquitetura multicadeia

O servidor C2 gera chaves em todas as principais cadeias utilizando caminhos de geração de profundidade 100:

⛓️
Redes visadas
ETH/BTC/SOL/XMR
🔑
Profundidade de derivação
100
🌐
Domínios confirmados
11
🕸️
defex.cc Vinculado
255+

 Infraestrutura da campanha

11 domínios confirmados em 2 grupos de operadoras, rastreados por IDs de pacote:

ID do pacoteDomíniosStatus
88ef78f5...aipolypredictor.xyzAO VIVO
4446ea5d...solana.onspace.app, solxjup.onspace.appAO VIVO
kit defex.cc jup-v2.com, events-charizard.fun, events-llquid.fun, events-blackswan.fun, soljup.onspace.build Misto

 Análise de carga útil em JavaScript

Três cargas úteis em JS ofuscadas alimentam o drainer:

  • wallet-connect.js (46 KB) — Gerencia a interface de usuário para conexão com a carteira e intercepta a entrada da semente. Ofuscação por rotação de matriz de strings.
  • wallet-specific-modals.js (134 KB) — Contém Lista completa de palavras em inglês do BIP39 e Lista de palavras do Monero (1.626 palavras). Proteção contra depuração por meio de substituições de console.log/trace. Suporte a modais para múltiplas carteiras.
  • defex.cc/index.js (601 KB) — Ofuscado com Unicode e nomes de variáveis em chinês. Lógica de drainer específica para Solana. Codificador Base58, primitivas de derivação de chaves criptográficas. Versão 3.0.0.

 Potencial de desanonimização

O CORS: * o cabeçalho e a ausência de meios de autenticação qualquer pessoa pode enviar solicitações e acompanhar a progressão dos IDs de tarefa em tempo real. A integração com o bot do Telegram significa que a conta do operador no Telegram recebe notificações — e os metadados do Telegram podem ser intimados. A NiceNIC (registradora do front-end) é uma registradora conhecida por ser à prova de intimações, que nós já investigado, mas a PDR Ltd. (registradora de domínios C2) atende às solicitações das autoridades policiais. O defex.cc O kit de drainer atende a mais de 255 domínios — uma invasão do defex.cc exporia toda a operação do DaaS e todos os seus clientes.

 Comparativo: 4 operações, mesmo padrão

Métrico mn19indexpre
Express.js
web3ledgar
Firebase
web3safe-pal
Supabase
aipolypredictor
Escorredor C2
AutenticaçãoNenhum (token ignorado)NenhumChave “anon” em JSNenhum (CORS: *)
Dados legíveisMensagens/retransmissãoTodas as frases-sementeTodas as frases-sementeIDs de tarefa / escala
Dados graváveisSim (ilimitado)SimSim (CRUD completo)Sim (enviar)
Validação de entradasZeroZeroZeroMínimo
Limitação de taxaNenhumNenhumNenhum10 solicitações/60 s
Que pode ser desanonimizadoLocatário do MS365Conta do GoogleReenviar + Faturamento do SupabasePDR + Telegram
Número estimado de vítimasDesconhecido12131+19,000+
Idioma do operadorDesconhecidoInglêsRussoDesconhecido

 Por que os golpistas não são hackers

As evidências são contundentes. Nas quatro operações, observamos o mesmo padrão:

 O que os golpistas fazem
  • Compre kits de escorredores já prontos (US$ 200–US$ 500)
  • Implantar em planos gratuitos (Firebase, Supabase)
  • Não altere as configurações padrão
  • Use tokens pré-definidos, pois eles não são verificados
  • Nunca habilite o RLS, nunca restrinja o CORS
  • Revelar suas próprias identidades nos metadados
  • Use IDs sequenciais que indiquem sua escala
 O que os hackers fariam
  • Criar ferramentas personalizadas de exfiltração
  • Utilize canais criptografados e autenticados
  • Randomizar identificadores, alternar a infraestrutura
  • Implementar um controle de acesso adequado
  • Use o Tor/cadeias de proxy, pagamentos anônimos
  • Separar a identidade operacional da hospedagem
  • Implementar técnicas antiforenses

O cliente típico do serviço “Drainer-as-a-Service” é um engenheiro social com um cartão de crédito, não são operadores técnicos. Sabem como registrar um domínio e inserir código em um painel de hospedagem. Não sabem como:

Esses adversários não são sofisticados. São pessoas que não sabem configurar um banco de dados.

 Indicadores de Compromisso (IOCs)

Domínios

# 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

Endereços IP

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

Chaves de API e IDs de projeto

# Firebase (Case 2) Projeto: web3ledger-210ab Chave da API: AIzaSyCv8e-Gl7nK1RPpfNkJt-WjSZiaoe4AsL8 ID do aplicativo: 1:1054258933515:web:9fb193fcd0093023f7fc0e # Supabase (Case 3) Projeto: gzqsadraigchwdhblavp Chave anônima: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... # Campaign Tracking (Case 4) Pacote 1: 88ef78f56e0837dd0339e40a882bf563 Pacote 2: 4446ea5ddb308b2494db8ad4b12196c3 # Microsoft Tenant (Case 1) NETORGFT19090185.onmicrosoft.com

 Conclusão: O Imperador Está Nu

 Conclusão

Todas as operações fraudulentas que analisamos poderiam ser totalmente comprometido, desanonimizado e desativado usando nada mais do que um navegador da web, o curl e documentação disponível publicamente. Em todos os casos, os invasores deixaram seus bancos de dados totalmente expostos, suas chaves de API em arquivos JavaScript públicos, suas identidades nos metadados e os dados de suas vítimas acessíveis a qualquer pessoa que se desse ao trabalho de procurar.

A lição é simples: Os golpistas não são hackers. São ladrões de loja que compraram um conjunto de chaves mestre no AliExpress e se esqueceram de trancar a própria porta da frente. As ferramentas que utilizam são sofisticadas — porque foram criadas por outra pessoa. Os próprios operadores são amadores que expõem, de forma previsível, sua própria infraestrutura, os dados de suas vítimas e suas próprias identidades a qualquer pessoa com conhecimentos técnicos básicos.

Se você digitou sua frase-semente em algum desses sites — considere que sua carteira foi comprometida e transfira os fundos imediatamente.

Todas as constatações foram comunicadas aos prestadores de serviços envolvidos (Google/Firebase, Supabase, Cloudflare, registradores de domínios) e documentadas para fins de aplicação da lei. Os IOCs acima foram adicionados ao PhishDestroy lista de destruição.

Compartilhe esta investigação

X / Twitter Telegram Reddit LinkedIn

Investigações relacionadas

BUYTRX ao descoberto: 55 domínios e um drainer de aprovações da TRON
INVESTIGAÇÃO
BUYTRX ao descoberto: 55 domínios e um drainer de aprovações da TRON
Kit de ferramentas Crypto Drainer: revendedores do Angel Drainer são desmascarados
INVESTIGAÇÃO APROFUNDADA
Kit de ferramentas Crypto Drainer: revendedores do Angel Drainer são desmascarados
Keitaro TDS: 1.500 painéis expostos, zero uso legítimo
INVESTIGAÇÃO
Keitaro TDS: 1.500 painéis expostos, zero uso legítimo
Aviso de transparência. O PhishDestroy é um projeto independente e sem fins lucrativos. Nossa pesquisa pode refletir um viés inerente contra a infraestrutura de golpes e os serviços que a possibilitam. Incentivamos os leitores a avaliarem todo o material de forma crítica e independente. Leia nossa declaração de transparência completa →