
Firebase · Supabase · Express.js · Drainer-as-a-Service · Февраль 2026 года
Предупреждение: это анализ, а не нападка
Всё, что изложено в этой статье, является результатом пассивный анализ и общедоступные данные. Ни одна система не была взломана. Ни одна система аутентификации не была обойдена. В каждом случае именно собственные ошибки настройки мошенников привели к тому, что их инфраструктура, данные жертв и рабочие учетные записи стали доступны любому, кто просто захотел их увидеть. Все ключи API были обнаружены в общедоступных пакетах JavaScript. Каждая база данных была широко открыта по замыслу самих операторов. Мы документируем это не для того, чтобы нападать, а чтобы продемонстрировать, что люди, крадущие вашу криптовалюту, не могут даже пристегнуть свои инструменты.
Основная идея: «скрипт-кидди» с украденными инструментами
В общественном сознании укоренился миф о том, что интернет-мошенники — это «хакеры», то есть технические гении, которые с помощью сложных и изощрённых методов взламывают системы. Это неверно.
Современные криптовалютные мошенники — это «скрипт-кидди», использующие приобретенные наборы инструментов. Они покупают пакеты «Drainer-as-a-Service» за 200–500 долларов, развертывают их на бесплатном или недорогом хостинге и молятся, чтобы их жертвы ничего не заметили. Они не пишут код. Они не разбираются в сетях. И уж точно не разбираются в безопасности.
Мы знаем об этом, потому что в феврале 2026 года компания THE ENABLERS REGISTRY проанализировала 4 независимые мошеннические схемы — и в каждом отдельном случае мы могли бы:
- Прочитать все данные о потерпевших от краж (семенные фразы, адреса электронной почты, IP-адреса, типы кошельков)
- Изменено или удалено база данных мошенников
- Определен оператор через утечку ключей API, адресов электронной почты и отпечатков инфраструктуры
- Воспроизвели атаку на мошенника — используя те же уязвимости, которые они оставили незакрытыми
Никаких эксплойтов. Никаких уязвимостей «нулевого дня». Никакого «взлома». Просто открыв входную дверь, которую они оставили незапертой.
Пример 1: «Призрачный» API — [REDACTED]
Express.js на Apache: полное отсутствие реальной безопасности
| Параметр | Значение |
|---|---|
| Домен | [REDACTED] |
| IP-адрес | 108.181.185.225 |
| Серверный стек | Apache/2.4.58 (Ubuntu) → Express.js (Node.js) |
| Баннер SSH | SSH-2.0-OpenSSH_9.6p1 Ubuntu-3ubuntu13.11 |
| Эмитент TLS | Let's Encrypt (E7), срок действия — январь–апрель 2026 года |
| Регистратор DNS | IANA #146 (ns39/ns40.[REDACTED]) |
| Электронная почта (MX) | [REDACTED] |
| Арендатор Microsoft | [REDACTED] |
| Открытые порты | 22 (SSH), 80 (HTTP→301), 443 (HTTPS) |
«Аутентификация» — шутка
API поставляется с жестко запрограммированным токеном Bearer: thisisakeyforsecureserver. Но вот в чём суть — токен на самом деле не проверяется:
Отсутствие проверки входных данных
Каждая тестируемая нами полезные нагрузки инъекции принималась без каких-либо предупреждений:
Характеристики работы
Время отклика на запросы POST стабильно составляет около 7,5 секунд независимо от размера данных (принимаются данные от 10 байт до 10 МБ), что указывает на пересылку электронной почты или ретрансляцию веб-хуков на серверной стороне. Ответ на запрос GET поступает за 0,6 с. 10 параллельных запросов обрабатываются за 9,1 с — ограничение скорости не применяется.
Возможность деанонимизации
Идентификатор арендатора Microsoft 365 NETORGFT19090185 является прямая ссылка на аккаунт организации который зарегистрировал этот домен. Учитывая записи о регистрации в IANA #146 и наличие выделенного IP-адреса (не за CDN), этот оператор является легко идентифицируемый по законным каналам. Запись SPF (include:[REDACTED]) подтверждает, что в случае хостинга электронной почты IANA #146 — все метаданные электронных писем могут быть предоставлены по судебному запросу.
Пример 2: Firebase Wide Open — [REDACTED]
Firestore без правил безопасности
| Параметр | Значение |
|---|---|
| Фишинговый домен | [REDACTED] (ошибочное написание слова «[REDACTED]») |
| Альтернативный домен | [REDACTED] |
| Проект Firebase | web3ledger-210ab |
| Ключ API | AIzaSyCv8e-Gl7nK1RPpfNkJt-WjSZiaoe4AsL8 |
| Идентификатор приложения | 1:1054258933515:web:9fb193fcd0093023f7fc0e |
| Пакет JS | /static/js/main.7a5ec2fa.js |
| Правила Firestore | Полный доступ — чтение/запись без аутентификации |
| Общее число пострадавших | 12 записей в users коллекция |
| Найденные коллекции | users, transactions |
Данные о жертвах — полностью доступны для всех
Один неавторизованный запрос GET к REST-API Firestore вернул каждая украденная фраза-секрет:
Среди 12 записей была одна, которая многое объясняла — кто-то уже протестировал систему с помощью fbi@fbi.gov как и в электронном письме. Мошенник либо тестировал свою собственную систему (что полезно для идентификации), либо кто-то другой уже проверил её.
Ход атаки
Фишинговый сайт имитирует интерфейс кошелька [REDACTED]. Жертва нажимает «Подключить кошелек» → вводит сед-фразу → фронтенд на React записывает данные напрямую в Firestore → мошенник считывает информацию из той же открытой базы данных. Сервера на стороне серверной инфраструктуры нет вообще. Вся система работает в рамках бесплатного тарифа Google.
Возможность деанонимизации
Идентификатор проекта Firebase web3ledger-210ab и идентификатор приложения 1:1054258933515 являются привязанный к аккаунту Google. Google хранит данные о выставлении счетов, журналы IP-адресов и информацию о создании учетных записей для всех проектов Firebase. Достаточно одного запроса со стороны правоохранительных органов, направленного в Google, чтобы раскрыть личность оператора. Кроме того, тот факт, что правила Firestore полностью открыты, означает, что мы могли бы внести записи в их базу данных, уведомлял пострадавших в режиме реального времени или удалял всю коллекцию.
Пример 3: Полный набор операций CRUD в Supabase — [REDACTED]
Безопасность на уровне строк отключена, GraphQL полностью открыт
| Параметр | Значение |
|---|---|
| Фишинговый домен | [REDACTED] (типосквот от «[REDACTED]») |
| Проект Supabase | gzqsadraigchwdhblavp |
| Ключ 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 таблица:
Идентификаторы начинаются с 130 — то есть записи с 1 по 129 были ранее удалены оператором. Через эту систему прошло не менее 131 семенной фразы.
Функции Edge: цепочка электронных писем
Активны две функции Supabase Edge. Мы провели обратную разработку send-email определить ожидаемый формат входных данных функции путем тестирования различных вариантов данных:
Повторно отправить ключ API (RESEND_API_KEY) хранится в переменных среды Supabase. Сервис Resend ведёт учет данных проверки отправителей и данных для выставления счетов — еще один прямой путь к установлению личности оператора.
Возможность деанонимизации
Русская локализация пользовательского интерфейса («Основной кошелек», «Ваш кошелек загружается...») указывает на Русскоговорящий оператор. Проект Supabase (gzqsadraigchwdhblavp) привязан к учетной записи с данными о счетах. Сервис «Повторная отправка письма» содержит адрес электронной почты получателя. С помощью интроспекции GraphQL можно увидеть полную схему базы данных. Мы продемонстрировали полный доступ на запись — мы могли бы заменить каждую украденную семенную фразу предупреждением для пострадавших, либо удалил всю таблицу. Оператор не смог бы восстановить эти данные.
Пример 4: Дренажная система промышленного масштаба — [REDACTED]
19 000 фраз-семян за 5,8 дня
| Параметр | Значение |
|---|---|
| Домен интерфейса | [REDACTED] («PolySniper | Ставки инсайдеров от Frontrun») |
| API C2 | api.yfhikblkhghdyteiuyf54.run |
| IP-адреса C2 | 172.67.168.147, 104.21.26.231 (IANA #1910) |
| Бэкенд | Express.js (Node.js) v1.0.0 |
| Регистратор (интерфейс) | IANA #3765 Co. |
| Регистратор (C2) | [REDACTED] (IANA #303) |
| Время безотказной работы | ~139 часов (начало ~10 февраля 2026 г., 21:00 UTC) |
| Комплект сливных трубок CDN | [REDACTED] (601 КБ зашифрованного JS) |
| Бот в [REDACTED] | Активный, с поддержкой уведомлений |
| Ограничение частоты запросов | 10 запросов за 60 секунд (единственное обнаруженное ограничение) |
Масштаб, определяемый последовательными идентификаторами
Самая роковая ошибка: последовательные идентификаторы заданий. При каждой отправке фразы-семенного кода выдается увеличивающийся идентификатор, что позволяет любому пользователю рассчитать общий объем:
Многоцепочечная архитектура
Сервер C2 выводит ключи по всем основным цепочкам, используя пути вывода глубиной 100:
Инфраструктура кампании
11 подтвержденных доменов, принадлежащих двум группам операторов, отслеживаемых по идентификаторам пакетов:
| Идентификатор пакета | Домены | Статус |
|---|---|---|
88ef78f5... | [REDACTED] | В РЕЖИМЕ РЕАЛЬНОГО ВРЕМЕНИ |
4446ea5d... | [REDACTED], [REDACTED] | В РЕЖИМЕ РЕАЛЬНОГО ВРЕМЕНИ |
| Комплект [REDACTED] | [REDACTED], [REDACTED], [REDACTED], [REDACTED], soljup.onspace.build | Смешанный |
Анализ полезной нагрузки JavaScript
Три зашифрованных JS-кода служат для сбора данных:
- wallet-connect.js (46 КБ) — Обеспечивает работу интерфейса подключения кошелька, перехватывает вводимые семенные фразы. Обфускация с помощью ротации массива строк.
- wallet-specific-modals.js (134 КБ) — Содержит Полный список английских слов по стандарту BIP39 и Список слов для Monero (1 626 слов). Защита от отладки посредством переопределения console.log/trace. Поддержка модальных окон для нескольких кошельков.
- [REDACTED]/index.js (601 КБ) — Код, зашифрованный с использованием Unicode и именами переменных на китайском языке. Логика drainer, специфичная для Solana. Кодировщик Base58, примитивы вывода криптографических ключей. Версия 3.0.0.
Возможность деанонимизации
Этот CORS: * заголовок и отсутствие средств аутентификации любой пользователь может отправлять запросы и отслеживать изменение идентификатора задания в режиме реального времени. Благодаря интеграции с ботом [REDACTED] оператор получает уведомления на свой аккаунт в [REDACTED] — при этом метаданные [REDACTED] могут быть запрошены по судебному предписанию. IANA #3765 (регистратор для фронтенда) — это известный «непробиваемый» регистратор, с которым мы ранее исследованный, но компания [REDACTED] (регистратор доменов C2) действительно удовлетворяет запросы правоохранительных органов. The [REDACTED] Комплект инструментов для сбора данных обслуживает более 255 доменов — взлом сайта [REDACTED] привёл бы к раскрытию всей операции DaaS и всех её клиентов.
Сравнение: 4 операции, один и тот же шаблон
| Метрическая система | mn19indexpre Express.js | web3ledgar Firebase | web3safe-pal Supabase | aipolypredictor Сливной клапан C2 |
|---|---|---|---|---|
| Аутентификация | Нет (токен игнорируется) | Нет | Анонимный ключ в JS | Нет (CORS: *) |
| Данные доступны для чтения | Сообщения/ретрансляция | Все семенные фразы | Все семенные фразы | Идентификаторы заданий / масштаб |
| Данные, доступные для записи | Да (без ограничений) | Да | Да (полный набор операций CRUD) | Да (отправить) |
| Проверка входных данных | Ноль | Ноль | Ноль | Минимальный |
| Ограничение частоты запросов | Нет | Нет | Нет | 10 запросов за 60 секунд |
| Поддающийся деанонимизации | арендатор MS365 | Аккаунт Google | Повторная отправка + Биллинг Supabase | PDR + [REDACTED] |
| Предполагаемое число пострадавших | Неизвестно | 12 | 131+ | 19,000+ |
| Язык оператора | Неизвестно | Английский | Русский | Неизвестно |
Почему мошенники — это не хакеры
Доказательства более чем убедительны. Во всех четырёх операциях мы наблюдаем одну и ту же закономерность:
- Купить готовые комплекты для сушки посуды (200–500 долларов)
- Развертывание на бесплатных тарифных планах (Firebase, Supabase)
- Оставить настройки по умолчанию без изменений
- Используйте жестко запрограммированные токены, которые не проверяются
- Никогда не включайте RLS, никогда не ограничивайте CORS
- Указать свои идентификаторы в метаданных
- Используйте последовательные идентификаторы, которые отражают масштаб
- Написать собственные инструменты для вывода данных
- Используйте зашифрованные каналы связи с аутентификацией
- Генерация случайных идентификаторов, ротация инфраструктуры
- Обеспечить надлежащий контроль доступа
- Используйте Tor и цепочки прокси-серверов, анонимные платежи
- Разделить операционную идентичность и хостинг
- Применять методы противодействия криминалистической экспертизе
Типичный клиент сервиса «Drainer-as-a-Service» — это специалист по социальной инженерии с кредитной картой, а не технический специалист. Они умеют зарегистрировать домен и вставить код в панель управления хостингом. Но они не умеют:
- Настройте правила безопасности Firestore (это займет 2 минуты)
- Включить защиту на уровне строк в Supabase (займет 5 минут)
- Проверить и очистить входные данные (займет 30 минут)
- Используйте UUID вместо последовательных целых чисел (на это уйдет всего 1 строка кода)
- Ограничить CORS собственными доменами (для этого потребуется всего одна строка в конфигурации)
Это не особо искушенные противники. Это люди, которые не умеют настраивать базу данных.
Индикаторы компрометации (IOC)
Домены
IP-адреса
Ключи API и идентификаторы проектов
Вывод: «Король голый»
Вывод
Каждая из проанализированных нами мошеннических схем могла бы быть полностью взломаны, лишены анонимности и выведены из строя используя лишь веб-браузер, утилиту curl и общедоступную документацию. В каждом случае злоумышленники оставляли свои базы данных полностью открытыми, ключи API — в общедоступных файлах JavaScript, свои идентификационные данные — в метаданных, а данные своих жертв — доступными для любого, кто удосужился их поискать.
Вывод прост: мошенники — это не хакеры. Это магазинные воришки, которые купили набор отмычек на AliExpress и забыли запереть собственную входную дверь. Инструменты, которыми они пользуются, сложны — потому что их создал кто-то другой. Сами операторы — дилетанты, которые без труда раскрывают свою инфраструктуру, данные своих жертв и собственные личности любому, кто обладает элементарными техническими знаниями.
Если вы вводили свою семенную фразу на любом из этих сайтов — считайте, что ваш кошелек взломан, и немедленно переведите средства.
Обо всех выявленных фактах было сообщено соответствующим поставщикам услуг (Google/Firebase, Supabase, IANA #1910, регистраторам доменов), а также зафиксировано для правоохранительных органов. Указанные выше индикаторы угрозы (IOC) были добавлены в THE ENABLERS REGISTRY — список уничтожения.