Vai al contenuto principale
Torna alle notizie
INDAGINE SU PIÙ CASI

I truffatori non sono hacker: 4 backend analizzati, tutti compromessi con estrema facilità

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

Svelata l'infrastruttura di una truffa
19,000+
Frasi seed rubate (1 campagna)
4
Backend completamente accessibili
0
Autenticazione richiesta
267+
Domini associati al phishing

 Avviso: si tratta di un’analisi, non di un attacco

Tutto ciò che viene presentato in questo articolo è il risultato di analisi passiva e dati accessibili al pubblico. Nessun sistema è stato violato. Nessuna procedura di autenticazione è stata aggirata. In ogni caso, è stata proprio una configurazione errata da parte dei truffatori a rendere accessibili la loro infrastruttura, i dati delle vittime e le identità operative a chiunque volesse semplicemente dare un’occhiata. Tutte le chiavi API sono state rinvenute in bundle JavaScript pubblici. Ogni database era completamente aperto per scelta degli stessi gestori. Documentiamo tutto questo non per attaccare, ma per dimostrare che chi ruba le vostre criptovalute non riescono nemmeno a custodire i propri attrezzi.

 La tesi centrale: script kiddies con strumenti rubati

Nell'immaginario collettivo persiste il mito secondo cui i truffatori online siano "hacker", ovvero geni della tecnologia in grado di introdursi nei sistemi con abilità e sofisticatezza. Questo è sbagliato.

I truffatori del mondo delle criptovalute di oggi sono script kiddies che utilizzano toolkit acquistati. Acquistano pacchetti “Drainer-as-a-Service” al prezzo di 200–500 dollari, li installano su hosting gratuiti o a basso costo e sperano che le loro vittime non se ne accorgano. Non scrivono codice. Non capiscono nulla di reti. E di certo non capiscono nulla di sicurezza.

Lo sappiamo perché nel febbraio 2026 PhishDestroy ha analizzato 4 operazioni fraudolente indipendenti — e in ogni singolo caso avremmo potuto:

Non servono exploit. Niente vulnerabilità zero-day. Niente "hacking". Solo aprendo la porta d'ingresso che avevano lasciato aperta.

 Caso 1: L'API fantasma — server0002.mn19indexpre.xyz

 Express.js su Apache, sicurezza inesistente

NESSUNA AUTENTICAZIONENESSUNA VERIFICA DEI DATI INSERITINESSUN LIMITE DI VELOCITÀCORS: *
ParametroValore
Dominioserver0002.mn19indexpre.xyz
Indirizzo IP108.181.185.225
Stack del serverApache/2.4.58 (Ubuntu) → Express.js (Node.js)
Banner SSHSSH-2.0-OpenSSH_9.6p1 Ubuntu-3ubuntu13.11
Emittente TLSLet's Encrypt (E7), valido da gennaio ad aprile 2026
Registrar DNSGoDaddy (ns39/ns40.domaincontrol.com)
E-mail (MX)mn19indexpre-xyz.mail.protection.outlook.com
Tenant MicrosoftNETORGFT19090185.onmicrosoft.com
Porte aperte22 (SSH), 80 (HTTP→301), 443 (HTTPS)

 "Autenticazione" — Una battuta

L'API viene fornita con un token Bearer predefinito: thisisakeyforsecureserver. Ma ecco il colpo di scena — il token non è stato effettivamente verificato:

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

 Convalida senza input

Ogni payload di iniezione che abbiamo testato è stato accettato senza alcun avviso:

// SQL injection Oggetto: "' OPPURE 1=1--"→ accettato Oggetto: "'; DROP TABLE messages;--"→ accettato// SSTI (Server-Side Template Injection) Oggetto: "{{7*7}}"→ accettato Oggetto: "{{config}}"→ accettato Oggetto: "{{self.__class__}}"→ accettato// SSRF (Server-Side Request Forgery) dominio: «http://169.254.169.254/latest/meta-data/»→ accettato dominio: "file:///etc/passwd"→ accettato// XSS stored payload Oggetto: "<script>alert(1)</script>"→ accettato

 Impronta delle prestazioni

Tempo di risposta costante di circa 7,5 secondi per le richieste POST, indipendentemente dalle dimensioni del payload (si accettano valori da 10 byte a 10 MB), il che suggerisce l'utilizzo di un sistema di inoltro delle e-mail o di un webhook nel backend. Le richieste GET rispondono in 0,6 s. 10 richieste parallele vengono completate in 9,1 s — non viene applicata alcuna limitazione di frequenza.

 Potenziale di deanonimizzazione

ID tenant di Microsoft 365 NETORGFT19090185 è un link diretto all'account dell'organizzazione che ha registrato questo dominio. Considerando anche i dati di registrazione di GoDaddy e un IP dedicato (non dietro un CDN), questo operatore è facilmente identificabile attraverso i canali legali. Il record SPF (include:secureserver.net) conferma che, per il servizio di hosting e-mail di GoDaddy, tutti i metadati delle e-mail sono accessibili tramite mandato di comparizione.

 Caso 2: Firebase Wide Open — web3ledgar.com

 Firestore senza regole di sicurezza

REGOLE DI FIRESTORE: APERTOTUTTI I DATI DELLE VITTIME SONO LEGGIBILICHIAVE API IN JS PUBBLICO12 VITTIME RIVELATE
ParametroValore
Dominio di phishingweb3ledgar.com (typosquat di "Ledger")
Dominio alternativoweb3.ledgerscore.ltd
Progetto Firebaseweb3ledger-210ab
Chiave APIAIzaSyCv8e-Gl7nK1RPpfNkJt-WjSZiaoe4AsL8
ID app1:1054258933515:web:9fb193fcd0093023f7fc0e
Pacchetto JS/static/js/main.7a5ec2fa.js
Regole di FirestoreCompletamente aperto — lettura/scrittura senza autenticazione
Numero totale di vittime12 record in users collezione
Collezioni trovateusers, transactions

 Dati sulle vittime — Completamente accessibili a chiunque

Una singola richiesta GET non autenticata all'API REST di Firestore ha restituito ogni frase di seed rubata:

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

Tra i 12 record ce n’era uno particolarmente significativo: qualcuno aveva già testato il sistema con fbi@fbi.gov come nell'e-mail. Il truffatore ha testato il proprio sistema (utile ai fini dell'identificazione) oppure qualcun altro lo aveva già sondato.

 Il flusso dell'attacco

Il sito di phishing riproduce l'interfaccia del wallet di Ledger. La vittima clicca su "Connetti wallet" → inserisce la frase seed → il frontend React scrive direttamente su Firestore → il truffatore legge i dati dallo stesso database aperto. Non c'è proprio nessun server backend. L'intera operazione funziona grazie al piano gratuito di Google.

 Potenziale di deanonimizzazione

ID del progetto Firebase web3ledger-210ab e ID dell'app 1:1054258933515 sono associato a un account Google. Google conserva i registri di fatturazione, i log degli indirizzi IP e i dati relativi alla creazione degli account per tutti i progetti Firebase. È sufficiente una singola richiesta da parte delle forze dell'ordine a Google per rivelare l'identità dell'operatore. Inoltre, il fatto che le regole di Firestore siano completamente aperte significa che avremmo potuto inserire i dati nel loro database, avvisava le vittime in tempo reale oppure cancellava l'intera raccolta.

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

 Sicurezza a livello di riga disabilitata, GraphQL completamente aperto

RLS DISATTIVATOACCESSO COMPLETO ALLE FUNZIONALITÀ CRUDGRAPHQL ABILITATOFUNZIONI DI BORDO ESPOSTELOCALIZZAZIONE IN RUSSO
ParametroValore
Dominio di phishingweb3safe-pal.com (typosquat di "SafePal")
Progetto Supabasegzqsadraigchwdhblavp
Chiave Anon Pubblicato su /assets/index-b025f4a6.js (748 KB)
Tabella del databaseseeds — lettura, inserimento, aggiornamento, cancellazione
GraphQLIntrospezione completa + mutazioni abilitate
Funzioni Edge send-wallet-import-email, send-email
Servizio di posta elettronicaAPI di reinvio (RESEND_API_KEY nelle variabili d'ambiente)
Documentazione sulle vittimeID 130–131 (129 precedentemente eliminati)
Lingua dell'interfaccia utente Russo ("Portafoglio principale", "Il tuo portafoglio si sta caricando...")

 Accesso completo al database — Lettura, scrittura, cancellazione

La chiave "anon" di Supabase, presente nel bundle JavaScript minificato, garantisce accesso CRUD completo al seeds tabella:

// READ — get all stolen seed phrases GET /rest/v1/seeds?select=*ℴ=id.asc → 200 OK [ {"id":130, "frase":"████ ████ ████ ████ ████ ████ ████ ████ ████ ████ ████ ████", "nome":"Portafoglio principale"}, {"id":131, "frase":"████ ████ ████ ████ ████ ████ ████ ████ ████ ████ ████ ████", "nome":"Portafoglio principale"} ] // INSERT — we can write to the scammer's database POST /rest/v1/seeds {"phrase":"PHISHDESTROY_WAS_HERE","name":"test"} → 201 creati {"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}

Gli ID partono da 130 — il che significa che i record da 1 a 129 erano stati precedentemente cancellati dall'operatore. Almeno 131 frasi di seed sono passate attraverso questo sistema.

 Funzioni Edge: la traccia delle e-mail

Sono attive due funzioni Supabase Edge. Abbiamo effettuato il reverse engineering del send-email il formato di input previsto dalla funzione, testando i payload:

// Probing send-email endpoint {"seed":"test phrase","name":"test"} → 200 OK {"id":"f2749592-..."} {"seed_phrase":"...","wallet_name":"..."} → 400 "Dati di seed non forniti." {"phrase":"...","name":"..."} → 400 "Dati di seed non forniti."// 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}})

Reinvia la chiave API (RESEND_API_KEY) è memorizzato nelle variabili d'ambiente di Supabase. Resend conserva i registri di verifica del mittente e i dati di fatturazione — un altro percorso diretto verso l'identità dell'operatore.

 Potenziale di deanonimizzazione

La localizzazione dell'interfaccia utente in russo ("Основной кошелек", "Ваш кошелек загружается...") indica un Operatore di lingua russa. Il progetto Supabase (gzqsadraigchwdhblavp) è collegato a un account con dati di fatturazione. Il servizio "Invia nuovamente l'e-mail" dispone dell'indirizzo e-mail del destinatario. L'introspezione GraphQL rivela lo schema completo del database. Abbiamo dimostrato di disporre di pieno accesso in scrittura — avremmo potuto sostituire ogni frase di seed rubata con un messaggio di avvertimento rivolto alle vittime, oppure avrebbe cancellato l'intera tabella. L'operatore non avrebbe alcun modo di recuperare i dati.

 Caso 4: Sgocciolatoio su scala industriale — aipolypredictor.xyz

 19.000 frasi di seed in 5,8 giorni

FURTI DI OLTRE 19.000 SEMIID DI LAVORO SEQUENZIALINESSUNA RESTRIZIONE CORSDaaS KIT (defex.cc)11 DOMINI CONFERMATI
ParametroValore
Dominio front-end aipolypredictor.xyz ("PolySniper | Le scommesse degli addetti ai lavori di Frontrun")
API C2api.yfhikblkhghdyteiuyf54.run
Indirizzi IP C2 172.67.168.147, 104.21.26.231 (Cloudflare)
BackendExpress.js (Node.js) v1.0.0
Responsabile del registro (Frontend)NiceNIC International Group Co.
Responsabile dell'anagrafe (C2)PDR Ltd. (PublicDomainRegistry.com)
Tempo di attività~139 ore (inizio: ~10 febbraio 2026, ore 21:00 UTC)
Kit di scarico CDN renderer-postcard.defex.cc (601 KB di codice JS offuscato)
Bot di TelegramAttivo, integrato per le notifiche
Limite di frequenza10 richieste/60 s (unico limite rilevato)

 Scala evidenziata tramite ID sequenziali

L'errore più grave: ID sequenziali dei lavori. Ogni invio di una frase di seed restituisce un ID progressivo, consentendo a chiunque di calcolare il volume totale:

POST /api/check-seed-full { "frase di seed": "frase di prova qui", "bundleId": "88ef78f56e0837dd0339e40a882bf563", "profondità": 100, "dominio": "aipolypredictor.xyz", "sourceInfo": {"walletName":"MetaMask", "isBot":false} } → {"success":true, "message":"Controllo in coda", "jobId":"19358"}// Next request: jobId 19359, then 19360...// ~19,000 seed phrases in ~139 hours = ~137 per hour

 Architettura multi-chain

Il server C2 ricava le chiavi su tutte le principali blockchain utilizzando percorsi di derivazione di profondità 100:

⛓️
Catene prese di mira
ETH/BTC/SOL/XMR
🔑
Profondità di derivazione
100
🌐
Domini confermati
11
🕸️
defex.cc Collegato
255+

 Infrastruttura della campagna

11 domini confermati appartenenti a 2 gruppi di operatori, tracciati tramite gli ID bundle:

ID pacchettoDominiStato
88ef78f5...aipolypredictor.xyzIN DIRETTA
4446ea5d...solana.onspace.app, solxjup.onspace.appIN DIRETTA
Kit defex.cc jup-v2.com, events-charizard.fun, events-llquid.fun, events-blackswan.fun, soljup.onspace.build Misto

 Analisi del payload JavaScript

Tre payload JS offuscati alimentano il drainer:

  • wallet-connect.js (46 KB) — Gestisce l'interfaccia utente per la connessione al portafoglio, intercetta l'inserimento del seed. Offuscamento tramite rotazione di array di stringhe.
  • wallet-specific-modals.js (134 KB) — Contiene Elenco completo delle parole in inglese per BIP39 e Elenco di parole di Monero (1.626 parole). Protezione anti-debugging tramite sovrascrittura di console.log/trace. Supporto per finestre modali multi-portafoglio.
  • defex.cc/index.js (601 KB) — Codice offuscato in Unicode con nomi di variabili in cinese. Logica di drainer specifica per Solana. Codificatore Base58, primitive per la derivazione delle chiavi crittografiche. Versione 3.0.0.

 Potenziale di deanonimizzazione

Il CORS: * intestazione e mancanza di mezzi di autenticazione Chiunque può inviare richieste e osservare l'incremento degli ID dei lavori in tempo reale. L'integrazione con il bot di Telegram fa sì che l'account Telegram dell'operatore riceva notifiche — e i metadati di Telegram possono essere richiesti tramite mandato. NiceNIC (registrar per il frontend) è un registrar "bulletproof" ben noto che abbiamo già oggetto di indagine, ma PDR Ltd. (registrar del dominio C2) risponde alle richieste delle forze dell'ordine. Il defex.cc Il kit "drainer" serve oltre 255 domini: una violazione di defex.cc metterebbe a rischio l'intera operazione DaaS e tutti i suoi clienti.

 A confronto: 4 operazioni, stesso schema

Metrico mn19indexpre
Express.js
web3ledgar
Firebase
web3safe-pal
Supabase
aipolypredictor
Sgocciolatoio C2
AutenticazioneNessuno (token ignorato)NessunoChiave "Anon" in JSNessuno (CORS: *)
Dati leggibiliMessaggi/inoltroTutte le frasi di seedTutte le frasi di seedID lavoro / scala
Dati scrivibiliSì (illimitato)Sì (CRUD completo)Sì (invia)
Convalida dei dati inseritiZeroZeroZeroMinimale
Limitazione della frequenzaNessunoNessunoNessuno10 richieste/60 s
Non anonimizzabiletenant di MS365Account GoogleReinvio + Fatturazione SupabasePDR + Telegram
Numero stimato delle vittimeSconosciuto12131+19,000+
Lingua dell'operatoreSconosciutoIngleseRussoSconosciuto

 Perché i truffatori non sono hacker

Le prove sono schiaccianti. In tutte e quattro le operazioni si osserva lo stesso schema:

 Cosa fanno i truffatori
  • Acquista kit di scolapiatti già pronti (da 200 a 500 dollari)
  • Implementazione su piani gratuiti (Firebase, Supabase)
  • Lasciare invariate le configurazioni predefinite
  • Utilizza token hardcoded che non vengono verificati
  • Non abilitare mai RLS, non limitare mai CORS
  • Rivelare la propria identità nei metadati
  • Utilizza ID sequenziali che ne rivelino la scala
 Cosa farebbero gli hacker
  • Scrivere strumenti personalizzati per l'esfiltrazione
  • Utilizzare canali crittografati e autenticati
  • Generare identificatori in modo casuale, alternare l'infrastruttura
  • Attuare un adeguato controllo degli accessi
  • Utilizzare Tor/catene di proxy, pagamenti anonimi
  • Distinguere l'identità operativa dall'hosting
  • Implementare tecniche anti-forensi

Il cliente tipo di Drainer-as-a-Service è un ingegnere sociale con una carta di credito, non sono tecnici. Sanno come registrare un dominio e incollare del codice nel pannello di controllo di un hosting. Non sanno però come:

Non si tratta di avversari sofisticati. Si tratta di persone che non sono in grado di configurare un database.

 Indicatori di compromissione (IOC)

Domini

# 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

Indirizzi 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)

Chiavi API e ID progetto

# Firebase (Case 2) Progetto: web3ledger-210ab Chiave API: AIzaSyCv8e-Gl7nK1RPpfNkJt-WjSZiaoe4AsL8 ID app: 1:1054258933515:web:9fb193fcd0093023f7fc0e # Supabase (Case 3) Progetto: gzqsadraigchwdhblavp Chiave anonima: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... # Campaign Tracking (Case 4) Pacchetto 1: 88ef78f56e0837dd0339e40a882bf563 Pacchetto 2: 4446ea5ddb308b2494db8ad4b12196c3 # Microsoft Tenant (Case 1) NETORGFT19090185.onmicrosoft.com

 Conclusione: L’imperatore è nudo

 Il punto chiave

Ogni operazione fraudolenta che abbiamo analizzato potrebbe essere completamente compromesso, deanonimizzato e messo fuori uso utilizzando nient’altro che un browser web, curl e la documentazione disponibile pubblicamente. In ogni caso, gli autori degli attacchi hanno lasciato i propri database completamente esposti, le chiavi API nei file JavaScript pubblici, le proprie identità nei metadati e i dati delle vittime accessibili a chiunque si prendesse la briga di cercarli.

La lezione è semplice: I truffatori non sono hacker. Sono taccheggiatori che hanno acquistato un set di grimaldelli su AliExpress e si sono dimenticati di chiudere a chiave la porta di casa. Gli strumenti che utilizzano sono sofisticati — perché li ha realizzati qualcun altro. Gli stessi operatori sono dilettanti che espongono sistematicamente la propria infrastruttura, i dati delle loro vittime e la propria identità a chiunque possieda competenze tecniche di base.

Se hai inserito la tua frase di recupero su uno qualsiasi di questi siti, considera che il tuo portafoglio sia stato compromesso e trasferisci immediatamente i fondi.

Tutti i risultati sono stati comunicati ai fornitori di servizi interessati (Google/Firebase, Supabase, Cloudflare, registrar di domini) e documentati a fini di applicazione della legge. Gli IOC sopra indicati sono stati aggiunti al PhishDestroy elenco da eliminare.

Condividi questa indagine

X / Twitter Telegram Reddit LinkedIn

Indagini correlate

BUYTRX smascherato: 55 domini e lo "Approval Drainer" di TRON
INDAGINE
BUYTRX smascherato: 55 domini e lo "Approval Drainer" di TRON
Crypto Drainer Toolkit: smascherati i rivenditori di Angel Drainer
INDAGINE APPROFONDITA
Crypto Drainer Toolkit: smascherati i rivenditori di Angel Drainer
Keitaro TDS: 1.500 pannelli esposti, zero utilizzi legittimi
INDAGINE
Keitaro TDS: 1.500 pannelli esposti, zero utilizzi legittimi
Avviso sulla trasparenza. PhishDestroy è un progetto indipendente e senza fini di lucro. La nostra ricerca potrebbe riflettere un pregiudizio intrinseco nei confronti delle infrastrutture utilizzate per le truffe e dei servizi che le rendono possibili. Invitiamo i lettori a valutare tutto il materiale in modo critico e autonomo. Leggi la nostra dichiarazione completa sulla trasparenza →