Перейти к основному содержанию
Вернуться к новостям
РАССЛЕДОВАНИЕ ПО НЕСКОЛЬКИМ ДЕЛАМ

Мошенники — это не хакеры: анализ 4 бэкендов, все из которых были взломаны без особых усилий

Слушать статью
0:00 / --:--

Firebase · Supabase · Express.js · Drainer-as-a-Service · Февраль 2026 года

Разоблачена инфраструктура мошенничества
19,000+
Кража семенных фраз (1 кампания)
4
Полный доступ к бэкендам
0
Требуется аутентификация
267+
Связанные фишинговые домены

 Предупреждение: это анализ, а не нападка

Всё, что изложено в этой статье, является результатом пассивный анализ и общедоступные данные. Ни одна система не была взломана. Ни одна система аутентификации не была обойдена. В каждом случае именно собственные ошибки настройки мошенников привели к тому, что их инфраструктура, данные жертв и рабочие учетные записи стали доступны любому, кто просто захотел их увидеть. Все ключи API были обнаружены в общедоступных пакетах JavaScript. Каждая база данных была широко открыта по замыслу самих операторов. Мы документируем это не для того, чтобы нападать, а чтобы продемонстрировать, что люди, крадущие вашу криптовалюту, не могут даже пристегнуть свои инструменты.

 Основная идея: «скрипт-кидди» с украденными инструментами

В общественном сознании укоренился миф о том, что интернет-мошенники — это «хакеры», то есть технические гении, которые с помощью сложных и изощрённых методов взламывают системы. Это неверно.

Современные криптовалютные мошенники — это «скрипт-кидди», использующие приобретенные наборы инструментов. Они покупают пакеты «Drainer-as-a-Service» за 200–500 долларов, развертывают их на бесплатном или недорогом хостинге и молятся, чтобы их жертвы ничего не заметили. Они не пишут код. Они не разбираются в сетях. И уж точно не разбираются в безопасности.

Мы знаем об этом, потому что в феврале 2026 года компания PhishDestroy проанализировала 4 независимые мошеннические схемы — и в каждом отдельном случае мы могли бы:

Никаких эксплойтов. Никаких уязвимостей «нулевого дня». Никакого «взлома». Просто открыв входную дверь, которую они оставили незапертой.

 Пример 1: «Призрачный» API — server0002.mn19indexpre.xyz

 Express.js на Apache: полное отсутствие реальной безопасности

АУТЕНТИФИКАЦИЯ ОТСУТСТВУЕТОТСУТСТВИЕ ПРОВЕРКИ ВХОДНЫХ ДАННЫХОТСУТСТВИЕ ОГРАНИЧЕНИЙ ПО СКОРОСТИCORS: *
ПараметрЗначение
Доменserver0002.mn19indexpre.xyz
IP-адрес108.181.185.225
Серверный стекApache/2.4.58 (Ubuntu) → Express.js (Node.js)
Баннер SSHSSH-2.0-OpenSSH_9.6p1 Ubuntu-3ubuntu13.11
Эмитент TLSLet's Encrypt (E7), срок действия — январь–апрель 2026 года
Регистратор DNSGoDaddy (ns39/ns40.domaincontrol.com)
Электронная почта (MX)mn19indexpre-xyz.mail.protection.outlook.com
Арендатор MicrosoftNETORGFT19090185.onmicrosoft.com
Открытые порты22 (SSH), 80 (HTTP→301), 443 (HTTPS)

 «Аутентификация» — шутка

API поставляется с жестко запрограммированным токеном Bearer: thisisakeyforsecureserver. Но вот в чём суть — токен на самом деле не проверяется:

// No auth header → accepted POST / HTTP/1.1 Content-Type: application/json {"subject":"test","domain":"test","messages":["ping"]} → {"success":true}// Wrong token → also accepted Авторизация: Bearer wrong_token_completely → {"success":true}// Any content type → also accepted Content-Type: text/xml, text/plain, multipart/form-data → {"success":true}

 Отсутствие проверки входных данных

Каждая тестируемая нами полезные нагрузки инъекции принималась без каких-либо предупреждений:

// SQL injection тема: "' ИЛИ 1=1--"→ принято тема: "'; DROP TABLE messages;--"→ принято// SSTI (Server-Side Template Injection) тема: "{{7*7}}"→ принято тема: "{{config}}"→ принято тема: "{{self.__class__}}"→ принято// SSRF (Server-Side Request Forgery) домен: «http://169.254.169.254/latest/meta-data/»→ принято домен: "file:///etc/passwd"→ принято// XSS stored payload тема: "<script>alert(1)</script>"→ принято

 Характеристики работы

Время отклика на запросы POST стабильно составляет около 7,5 секунд независимо от размера данных (принимаются данные от 10 байт до 10 МБ), что указывает на пересылку электронной почты или ретрансляцию веб-хуков на серверной стороне. Ответ на запрос GET поступает за 0,6 с. 10 параллельных запросов обрабатываются за 9,1 с — ограничение скорости не применяется.

 Возможность деанонимизации

Идентификатор арендатора Microsoft 365 NETORGFT19090185 является прямая ссылка на аккаунт организации который зарегистрировал этот домен. Учитывая записи о регистрации в GoDaddy и наличие выделенного IP-адреса (не за CDN), этот оператор является легко идентифицируемый по законным каналам. Запись SPF (include:secureserver.net) подтверждает, что в случае хостинга электронной почты GoDaddy — все метаданные электронных писем могут быть предоставлены по судебному запросу.

 Пример 2: Firebase Wide Open — web3ledgar.com

 Firestore без правил безопасности

ПРАВИЛА FIRESTORE: ОТКРЫТЫЕВСЕ ДАННЫЕ О ЖЕРТВАХ ДОСТУПНЫ ДЛЯ ПРОСМОТРАКлюч API в публичном коде JavaScript12 ПОСТРАДАВШИХ ОБНАРУЖЕНЫ
ПараметрЗначение
Фишинговый доменweb3ledgar.com (ошибочное написание слова «Ledger»)
Альтернативный доменweb3.ledgerscore.ltd
Проект Firebaseweb3ledger-210ab
Ключ APIAIzaSyCv8e-Gl7nK1RPpfNkJt-WjSZiaoe4AsL8
Идентификатор приложения1:1054258933515:web:9fb193fcd0093023f7fc0e
Пакет JS/static/js/main.7a5ec2fa.js
Правила FirestoreПолный доступ — чтение/запись без аутентификации
Общее число пострадавших12 записей в users коллекция
Найденные коллекцииusers, transactions

 Данные о жертвах — полностью доступны для всех

Один неавторизованный запрос GET к REST-API Firestore вернул каждая украденная фраза-секрет:

GET /v1/projects/web3ledger-210ab/databases/(default)/documents/users?pageSize=300 → 200 OK→ Всего документов: 12// Sample victim record (seed phrase redacted for safety) { «walletId»: «W3L-65285520», «walletType»: «WalletConnect», «электронная почта»: «[УДАЛЕНО]@gmail.com», «seedPhrase»: "████ ████ ████ ████ ████ ████ ████ ████ ████ ████ ████ ████", «createdAt»: «2026-02-15T00:14:52.804Z», «статус»: «активный» }

Среди 12 записей была одна, которая многое объясняла — кто-то уже протестировал систему с помощью fbi@fbi.gov как и в электронном письме. Мошенник либо тестировал свою собственную систему (что полезно для идентификации), либо кто-то другой уже проверил её.

 Ход атаки

Фишинговый сайт имитирует интерфейс кошелька Ledger. Жертва нажимает «Подключить кошелек» → вводит сед-фразу → фронтенд на React записывает данные напрямую в Firestore → мошенник считывает информацию из той же открытой базы данных. Сервера на стороне серверной инфраструктуры нет вообще. Вся система работает в рамках бесплатного тарифа Google.

 Возможность деанонимизации

Идентификатор проекта Firebase web3ledger-210ab и идентификатор приложения 1:1054258933515 являются привязанный к аккаунту Google. Google хранит данные о выставлении счетов, журналы IP-адресов и информацию о создании учетных записей для всех проектов Firebase. Достаточно одного запроса со стороны правоохранительных органов, направленного в Google, чтобы раскрыть личность оператора. Кроме того, тот факт, что правила Firestore полностью открыты, означает, что мы могли бы внести записи в их базу данных, уведомлял пострадавших в режиме реального времени или удалял всю коллекцию.

 Пример 3: Полный набор операций CRUD в Supabase — web3safe-pal.com

 Безопасность на уровне строк отключена, GraphQL полностью открыт

RLS ОТКЛЮЧЕНОПОЛНЫЙ ДОСТУП К ОПЕРАЦИЯМ CRUDПОДДЕРЖКА GRAPHQLОБЗОР ФУНКЦИЙ EDGEЛОКАЛИЗАЦИЯ НА РУССКИЙ ЯЗЫК
ПараметрЗначение
Фишинговый доменweb3safe-pal.com (типосквот от «SafePal»)
Проект Supabasegzqsadraigchwdhblavp
Ключ Anon Опубликовано в /assets/index-b025f4a6.js (748 КБ)
Таблица базы данныхseeds — открыть для чтения, вставки, обновления, удаления
GraphQLВключена полная интроспекция + мутации
Функции на границе send-wallet-import-email, send-email
Почтовый сервисAPI повторной отправки (RESEND_API_KEY в переменных среды)
Учетные записи о жертвахИдентификаторы 130–131 (129 ранее удален)
Язык интерфейса Русский («Основной кошелек», «Ваш кошелек загружается...»)

 Полный доступ к базе данных — чтение, запись, удаление

Анонимный ключ Supabase, содержащийся в минимизированном пакете JavaScript, предоставляет полный доступ CRUD к seeds таблица:

// READ — get all stolen seed phrases GET /rest/v1/seeds?select=*ℴ=id.asc → 200 OK [ {«id»:130, "фраза":"████ ████ ████ ████ ████ ████ ████ ████ ████ ████ ████ ████", «имя»:«Основной кошелек»}, {«id»:131, "фраза":"████ ████ ████ ████ ████ ████ ████ ████ ████ ████ ████ ████", «имя»:«Основной кошелек»} ] // INSERT — we can write to the scammer's database POST /rest/v1/seeds {"phrase":"PHISHDESTROY_WAS_HERE","name":"test"} → 201 Создано {«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}

Идентификаторы начинаются с 130 — то есть записи с 1 по 129 были ранее удалены оператором. Через эту систему прошло не менее 131 семенной фразы.

 Функции Edge: цепочка электронных писем

Активны две функции Supabase Edge. Мы провели обратную разработку send-email определить ожидаемый формат входных данных функции путем тестирования различных вариантов данных:

// Probing send-email endpoint {"seed":"test phrase","name":"test"} → 200 OK {"id":"f2749592-..."} {"seed_phrase":"...","wallet_name":"..."} → 400 «Данные о семенах не предоставлены». {"phrase":"...","name":"..."} → 400 «Данные о семенах не предоставлены».// 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}})

Повторно отправить ключ API (RESEND_API_KEY) хранится в переменных среды Supabase. Сервис Resend ведёт учет данных проверки отправителей и данных для выставления счетов — еще один прямой путь к установлению личности оператора.

 Возможность деанонимизации

Русская локализация пользовательского интерфейса («Основной кошелек», «Ваш кошелек загружается...») указывает на Русскоговорящий оператор. Проект Supabase (gzqsadraigchwdhblavp) привязан к учетной записи с данными о счетах. Сервис «Повторная отправка письма» содержит адрес электронной почты получателя. С помощью интроспекции GraphQL можно увидеть полную схему базы данных. Мы продемонстрировали полный доступ на запись — мы могли бы заменить каждую украденную семенную фразу предупреждением для пострадавших, либо удалил всю таблицу. Оператор не смог бы восстановить эти данные.

 Пример 4: Дренажная система промышленного масштаба — aipolypredictor.xyz

 19 000 фраз-семян за 5,8 дня

УКРАДЕНО БОЛЕЕ 19 ТЫСЯЧ СЕМЯНПОСЛЕДОВАТЕЛЬНЫЕ ИДЕНТИФИКАТОРЫ ЗАДАЧОТСУТСТВИЕ ОГРАНИЧЕНИЙ CORSDaaS KIT (defex.cc)ПОДТВЕРЖДЕНО 11 ДОМЕНОВ
ПараметрЗначение
Домен интерфейса aipolypredictor.xyz («PolySniper | Ставки инсайдеров от Frontrun»)
API C2api.yfhikblkhghdyteiuyf54.run
IP-адреса C2 172.67.168.147, 104.21.26.231 (Cloudflare)
БэкендExpress.js (Node.js) v1.0.0
Регистратор (интерфейс)NiceNIC International Group Co.
Регистратор (C2)PDR Ltd. (PublicDomainRegistry.com)
Время безотказной работы~139 часов (начало ~10 февраля 2026 г., 21:00 UTC)
Комплект сливных трубок CDN renderer-postcard.defex.cc (601 КБ зашифрованного JS)
Бот в TelegramАктивный, с поддержкой уведомлений
Ограничение частоты запросов10 запросов за 60 секунд (единственное обнаруженное ограничение)

 Масштаб, определяемый последовательными идентификаторами

Самая роковая ошибка: последовательные идентификаторы заданий. При каждой отправке фразы-семенного кода выдается увеличивающийся идентификатор, что позволяет любому пользователю рассчитать общий объем:

POST /api/check-seed-full { «seedPhrase»: «тестовая фраза», «bundleId»: "88ef78f56e0837dd0339e40a882bf563", «глубина»: 100, «домен»: «aipolypredictor.xyz», «sourceInfo»: {«walletName»:«MetaMask», «isBot»:false} } → {"success": true, "message": "Запрос помещен в очередь", "jobId": "19358"}// Next request: jobId 19359, then 19360...// ~19,000 seed phrases in ~139 hours = ~137 per hour

 Многоцепочечная архитектура

Сервер C2 выводит ключи по всем основным цепочкам, используя пути вывода глубиной 100:

⛓️
Целевые сети
ETH/BTC/SOL/XMR
🔑
Глубина производной
100
🌐
Подтвержденные домены
11
🕸️
defex.cc — ссылка
255+

 Инфраструктура кампании

11 подтвержденных доменов, принадлежащих двум группам операторов, отслеживаемых по идентификаторам пакетов:

Идентификатор пакетаДоменыСтатус
88ef78f5...aipolypredictor.xyzВ РЕЖИМЕ РЕАЛЬНОГО ВРЕМЕНИ
4446ea5d...solana.onspace.app, solxjup.onspace.appВ РЕЖИМЕ РЕАЛЬНОГО ВРЕМЕНИ
Комплект defex.cc jup-v2.com, events-charizard.fun, events-llquid.fun, events-blackswan.fun, soljup.onspace.build Смешанный

 Анализ полезной нагрузки JavaScript

Три зашифрованных JS-кода служат для сбора данных:

  • wallet-connect.js (46 КБ) — Обеспечивает работу интерфейса подключения кошелька, перехватывает вводимые семенные фразы. Обфускация с помощью ротации массива строк.
  • wallet-specific-modals.js (134 КБ) — Содержит Полный список английских слов по стандарту BIP39 и Список слов для Monero (1 626 слов). Защита от отладки посредством переопределения console.log/trace. Поддержка модальных окон для нескольких кошельков.
  • defex.cc/index.js (601 КБ) — Код, зашифрованный с использованием Unicode и именами переменных на китайском языке. Логика drainer, специфичная для Solana. Кодировщик Base58, примитивы вывода криптографических ключей. Версия 3.0.0.

 Возможность деанонимизации

Этот CORS: * заголовок и отсутствие средств аутентификации любой пользователь может отправлять запросы и отслеживать изменение идентификатора задания в режиме реального времени. Благодаря интеграции с ботом Telegram оператор получает уведомления на свой аккаунт в Telegram — при этом метаданные Telegram могут быть запрошены по судебному предписанию. NiceNIC (регистратор для фронтенда) — это известный «непробиваемый» регистратор, с которым мы ранее исследованный, но компания PDR Ltd. (регистратор доменов C2) действительно удовлетворяет запросы правоохранительных органов. The defex.cc Комплект инструментов для сбора данных обслуживает более 255 доменов — взлом сайта defex.cc привёл бы к раскрытию всей операции DaaS и всех её клиентов.

 Сравнение: 4 операции, один и тот же шаблон

Метрическая система mn19indexpre
Express.js
web3ledgar
Firebase
web3safe-pal
Supabase
aipolypredictor
Сливной клапан C2
АутентификацияНет (токен игнорируется)НетАнонимный ключ в JSНет (CORS: *)
Данные доступны для чтенияСообщения/ретрансляцияВсе семенные фразыВсе семенные фразыИдентификаторы заданий / масштаб
Данные, доступные для записиДа (без ограничений)ДаДа (полный набор операций CRUD)Да (отправить)
Проверка входных данныхНольНольНольМинимальный
Ограничение частоты запросовНетНетНет10 запросов за 60 секунд
Поддающийся деанонимизацииарендатор MS365Аккаунт GoogleПовторная отправка + Биллинг SupabasePDR + Telegram
Предполагаемое число пострадавшихНеизвестно12131+19,000+
Язык оператораНеизвестноАнглийскийРусскийНеизвестно

 Почему мошенники — это не хакеры

Доказательства более чем убедительны. Во всех четырёх операциях мы наблюдаем одну и ту же закономерность:

 Как действуют мошенники
  • Купить готовые комплекты для сушки посуды (200–500 долларов)
  • Развертывание на бесплатных тарифных планах (Firebase, Supabase)
  • Оставить настройки по умолчанию без изменений
  • Используйте жестко запрограммированные токены, которые не проверяются
  • Никогда не включайте RLS, никогда не ограничивайте CORS
  • Указать свои идентификаторы в метаданных
  • Используйте последовательные идентификаторы, которые отражают масштаб
 Что бы сделали хакеры
  • Написать собственные инструменты для вывода данных
  • Используйте зашифрованные каналы связи с аутентификацией
  • Генерация случайных идентификаторов, ротация инфраструктуры
  • Обеспечить надлежащий контроль доступа
  • Используйте Tor и цепочки прокси-серверов, анонимные платежи
  • Разделить операционную идентичность и хостинг
  • Применять методы противодействия криминалистической экспертизе

Типичный клиент сервиса «Drainer-as-a-Service» — это специалист по социальной инженерии с кредитной картой, а не технический специалист. Они умеют зарегистрировать домен и вставить код в панель управления хостингом. Но они не умеют:

Это не особо искушенные противники. Это люди, которые не умеют настраивать базу данных.

 Индикаторы компрометации (IOC)

Домены

# 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

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)

Ключи API и идентификаторы проектов

# Firebase (Case 2) Проект: web3ledger-210ab Ключ API: AIzaSyCv8e-Gl7nK1RPpfNkJt-WjSZiaoe4AsL8 Идентификатор приложения: 1:1054258933515:web:9fb193fcd0093023f7fc0e # Supabase (Case 3) Проект: gzqsadraigchwdhblavp Анонимный ключ: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... # Campaign Tracking (Case 4) Пакет 1: 88ef78f56e0837dd0339e40a882bf563 Пакет 2: 4446ea5ddb308b2494db8ad4b12196c3 # Microsoft Tenant (Case 1) NETORGFT19090185.onmicrosoft.com

 Вывод: «Король голый»

 Вывод

Каждая из проанализированных нами мошеннических схем могла бы быть полностью взломаны, лишены анонимности и выведены из строя используя лишь веб-браузер, утилиту curl и общедоступную документацию. В каждом случае злоумышленники оставляли свои базы данных полностью открытыми, ключи API — в общедоступных файлах JavaScript, свои идентификационные данные — в метаданных, а данные своих жертв — доступными для любого, кто удосужился их поискать.

Вывод прост: мошенники — это не хакеры. Это магазинные воришки, которые купили набор отмычек на AliExpress и забыли запереть собственную входную дверь. Инструменты, которыми они пользуются, сложны — потому что их создал кто-то другой. Сами операторы — дилетанты, которые без труда раскрывают свою инфраструктуру, данные своих жертв и собственные личности любому, кто обладает элементарными техническими знаниями.

Если вы вводили свою семенную фразу на любом из этих сайтов — считайте, что ваш кошелек взломан, и немедленно переведите средства.

Обо всех выявленных фактах было сообщено соответствующим поставщикам услуг (Google/Firebase, Supabase, Cloudflare, регистраторам доменов), а также зафиксировано для правоохранительных органов. Указанные выше индикаторы угрозы (IOC) были добавлены в PhishDestroy — список уничтожения.

Поделиться этим расследованием

X / Twitter Telegram Reddit LinkedIn

Связанные расследования

Разоблачение BUYTRX: 55 доменов и схема похищения средств через TRON Approval
РАССЛЕДОВАНИЕ
Разоблачение BUYTRX: 55 доменов и схема похищения средств через TRON Approval
Набор инструментов «Crypto Drainer»: раскрыты имена реселлеров «Angel Drainer»
ТЩАТЕЛЬНОЕ РАССЛЕДОВАНИЕ
Набор инструментов «Crypto Drainer»: раскрыты имена реселлеров «Angel Drainer»
Keitaro TDS: 1 500 панелей подверглись утечке, легитимных способов использования нет
РАССЛЕДОВАНИЕ
Keitaro TDS: 1 500 панелей подверглись утечке, легитимных способов использования нет
Уведомление о прозрачности. PhishDestroy — это некоммерческий независимый проект. Наши исследования могут отражать некоторую предвзятость в отношении инфраструктуры мошенничества и сервисов, способствующих её функционированию. Мы призываем читателей критически и независимо оценивать все материалы. Ознакомьтесь с полным текстом нашего заявления о прозрачности →