Шахраї — це не хакери: розібрано 4 серверні частини, усі з яких були з легкістю зламані
Firebase · Supabase · Express.js · Drainer-as-a-Service · лютий 2026 року

Застереження: це аналіз, а не напад
Усе, про що йдеться в цій статті, є результатом пасивний аналіз та загальнодоступні дані. Жодна система не була зламана. Жодна система автентифікації не була обійдена. У кожному випадку саме неправильна конфігурація з боку самих шахраїв зробила їхню інфраструктуру, дані жертв та операційні ідентифікатори доступними для будь-кого, хто просто заглянув. Кожен ключ API був знайдений у загальнодоступних пакетах JavaScript. Кожна база даних була широко відкрита через власні проектні рішення операторів. Ми документуємо це не для того, щоб атакувати, а щоб продемонструвати, що люди, які крадуть вашу криптовалюту не можуть навіть зберегти свої власні інструменти.
Основна теза: «скрипт-кідді» з викраденими інструментами
У суспільній уяві існує стійкий міф про те, що інтернет-шахраї — це «хакери», тобто технічні генії, які вміло та витончено проникають у системи. Це неправильно.
Сучасні криптошахраї — це «скрипт-кідді», які використовують придбані набори інструментів. Вони купують пакети «Drainer-as-a-Service» за 200–500 доларів, розміщують їх на безкоштовному або дешевому хостингу й сподіваються, що їхні жертви цього не помітять. Вони не пишуть код. Вони не розуміються на мережах. І, звісно, вони не розуміються на безпеці.
Ми знаємо це, оскільки в лютому 2026 року компанія PhishDestroy проаналізувала 4 незалежні шахрайські схеми — і в кожному окремому випадку ми могли б:
- Прочитати всі дані про потерпілих від крадіжки (початкові фрази, адреси електронної пошти, IP-адреси, типи гаманців)
- Змінено або видалено база даних шахраїв
- Визначено оператора через викрадені ключі API, адреси електронної пошти та ідентифікаційні ознаки інфраструктури
- Відтворили атаку на шахрая — використовуючи ті самі вразливості, які вони залишили відкритими
Не потрібні експлойти. Немає уразливостей «нульового дня». Немає «хакерства». Просто відкривши вхідні двері, які вони залишили незамкненими.
Приклад 1: «Примарний» API — server0002.mn19indexpre.xyz
Express.js на Apache: нульовий рівень реальної безпеки
| Параметр | Значення |
|---|---|
| Домен | server0002.mn19indexpre.xyz |
| 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 Registrar | GoDaddy (ns39/ns40.domaincontrol.com) |
| Електронна пошта (MX) | mn19indexpre-xyz.mail.protection.outlook.com |
| Орендар Microsoft | NETORGFT19090185.onmicrosoft.com |
| Відкриті порти | 22 (SSH), 80 (HTTP→301), 443 (HTTPS) |
«Аутентифікація» — жарт
API постачається з жорстко заданим токеном Bearer: thisisakeyforsecureserver. Але ось у чому суть — токен насправді не перевірено:
Відсутність перевірки вхідних даних
Усі тестовані нами корисні навантаження для ін'єкцій приймалися без будь-яких повідомлень:
Характеристики роботи
Час відгуку на запит 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 без правил безпеки
| Параметр | Значення |
|---|---|
| Фішинговий домен | web3ledgar.com (типосквот слова «Ledger») |
| Альтернативний домен | web3.ledgerscore.ltd |
| Проєкт 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 як і в електронному листі. Шахрай або перевіряв власну систему (що корисно для ідентифікації), або хтось інший вже її перевірив.
Хід атаки
Фішинговий сайт імітує інтерфейс гаманця Ledger. Жертва натискає «Підключити гаманець» → вводить фразу-насіння → фронтенд на React записує дані безпосередньо в Firestore → шахрай зчитує інформацію з тієї самої відкритої бази даних. Сервера на стороні серверної інфраструктури взагалі немає. Уся система працює в рамках безкоштовного тарифного плану Google.
Можливість деанонімізації
Ідентифікатор проєкту Firebase web3ledger-210ab та ідентифікатор додатка 1:1054258933515 є прив’язаний до облікового запису Google. Google зберігає дані про оплату, журнали IP-адрес та інформацію про створення облікових записів для всіх проєктів Firebase. Один-єдиний запит правоохоронних органів до Google дозволяє встановити особу оператора. Крім того, те, що правила Firestore є повністю відкритими, означає, що ми могли б внести записи до їхньої бази даних, повідомляв жертв у режимі реального часу або повністю видаляв всю колекцію.
Приклад 3: Supabase Full CRUD — web3safe-pal.com
Безпека на рівні рядків вимкнена, GraphQL повністю відкритий
| Параметр | Значення |
|---|---|
| Фішинговий домен | web3safe-pal.com (типосквот від «SafePal») |
| Проєкт Supabase | gzqsadraigchwdhblavp |
| Ключ «Анон» | Опубліковано в /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» (RESEND_API_KEY) зберігається у змінних середовища Supabase. Сервіс Resend веде облік даних про перевірку відправників та даних для виставлення рахунків — ще один прямий шлях до ідентифікації оператора.
Можливість деанонімізації
Російська локалізація інтерфейсу користувача («Основной кошелек», «Ваш кошелек загружается...») вказує на Російськомовний оператор. Проєкт Supabase (gzqsadraigchwdhblavp) пов’язаний з обліковим записом, що містить дані про оплату. Служба «Повторно надіслати електронний лист» має адресу електронної пошти одержувача. Інтроспекція GraphQL розкриває повну схему бази даних. Ми продемонстрували повний доступ на запис — ми могли б замінити кожну вкрадену фразу-насіння на попереджувальне повідомлення для жертв, або видалив усю таблицю. Оператор не мав би жодної можливості відновити дані.
Приклад 4: Зливний пристрій промислового масштабу — aipolypredictor.xyz
19 000 фраз-насіння за 5,8 днів
| Параметр | Значення |
|---|---|
| Домен інтерфейсу користувача | aipolypredictor.xyz («PolySniper | Інсайдерські ставки від Frontrun») |
| API C2 | api.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 секунд (єдине виявлене обмеження) |
Масштаб, визначений послідовними ідентифікаторами
Найбільш фатальна помилка: послідовні ідентифікатори завдань. При кожному надсиланні фрази-посіву видається ідентифікатор, що збільшується, що дозволяє будь-кому обчислити загальний обсяг:
Багатоланцюгова архітектура
Сервер C2 генерує ключі для всіх основних ланцюгів, використовуючи шляхи генерування глибиною 100:
Інфраструктура кампанії
11 підтверджених доменів у 2 групах операторів, відстежуваних за ідентифікаторами Bundle ID:
| Ідентифікатор пакета | Домени | Статус |
|---|---|---|
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 з використанням китайських імен змінних. Логіка виведення коштів, специфічна для Solana. Кодер Base58, примітиви для виведення криптографічних ключів. Версія 3.0.0.
Можливість деанонімізації
Цей CORS: * заголовок та відсутність засобів автентифікації будь-хто може надсилати запити та відстежувати зміну ідентифікатора завдання у режимі реального часу. Інтеграція з ботом Telegram означає, що на обліковий запис оператора в Telegram надходять сповіщення — а метадані Telegram можуть бути витребувані за судовим наказом. NiceNIC (реєстратор для інтерфейсу) — це відомий «куленепробивний» реєстратор, якого ми раніше досліджуваний, але компанія PDR Ltd. (реєстратор доменів C2) відповідає на запити правоохоронних органів. Цей defex.cc Комплект «drainer» обслуговує понад 255 доменів — злом сайту defex.cc може призвести до викриття всієї операції DaaS та всіх її клієнтів.
Порівняння: 4 операції, одна й та сама схема
| Метрична система | mn19indexpre Express.js | web3ledgar Firebase | web3safe-pal Supabase | aipolypredictor Зливний пристрій C2 |
|---|---|---|---|---|
| Аутентифікація | Немає (токен проігноровано) | Немає | Анонімний ключ у JS | Немає (CORS: *) |
| Дані, що підлягають зчитуванню | Повідомлення/ретрансляція | Усі фрази-насіння | Усі фрази-насіння | Ідентифікатори вакансій / шкала |
| Дані, що підлягають запису | Так (без обмежень) | Так | Так (повний набір операцій CRUD) | Так (відправити) |
| Перевірка введених даних | Нуль | Нуль | Нуль | Мінімальний |
| Обмеження частоти запитів | Немає | Немає | Немає | 10 запитів за 60 секунд |
| Можливість зняття анонімності | Орендар MS365 | Обліковий запис Google | Повторне надсилання + білінг Supabase | PDR + Telegram |
| Орієнтовна кількість жертв | Невідомо | 12 | 131+ | 19,000+ |
| Мова оператора | Невідомо | Англійська | Російська | Невідомо |
Чому шахраї — це не хакери
Докази є незаперечними. У всіх 4 операціях ми спостерігаємо одну й ту саму закономірність:
- Придбайте готові комплекти для сушіння посуду (200–500 доларів)
- Розгортання на безкоштовних тарифних планах (Firebase, Supabase)
- Залишити стандартні налаштування без змін
- Використовуйте жорстко задані токени, які вони не перевіряють
- Ніколи не вмикайте RLS, ніколи не обмежуйте CORS
- Вказати власні ідентифікаційні дані в метаданих
- Використовуйте послідовні ідентифікатори, які відображають їхній масштаб
- Створити власні інструменти для виведення даних
- Використовуйте зашифровані канали з аутентифікацією
- Використовувати випадкові ідентифікатори, чергувати інфраструктуру
- Забезпечити належний контроль доступу
- Використовуйте Tor/ланцюжки проксі-серверів, анонімні платежі
- Відокремити операційну ідентичність від хостингу
- Застосовувати методи протидії криміналістичній експертизі
Типовий клієнт сервісу «Drainer-as-a-Service» — це соціальний інженер із кредитною карткою, а не технічний фахівець. Вони знають, як зареєструвати домен і вставити код у панель управління хостингом. Вони не знають, як:
- Налаштуйте правила безпеки Firestore (це займе 2 хвилини)
- Увімкніть захист на рівні рядків у Supabase (це займе 5 хвилин)
- Перевірка та очищення вхідних даних (займе 30 хвилин)
- Використовуйте UUID замість послідовних цілих чисел (на це знадобиться 1 рядок коду)
- Обмежити CORS лише власними доменами (для цього знадобиться лише 1 рядок у конфігурації)
Це не надто досвідчені супротивники. Це люди, які не вміють налаштовувати базу даних.
Індикатори компрометації (IOC)
Домени
IP-адреси
Ключі API та ідентифікатори проєктів
Висновок: «Король голий»
Висновок
Кожна шахрайська операція, яку ми проаналізували, могла бути повністю скомпрометовані, деанонімізовані та виведені з ладу використовуючи лише веб-браузер, утиліту curl та загальнодоступну документацію. У кожному випадку зловмисники залишали свої бази даних повністю відкритими, ключі API — у загальнодоступних файлах JavaScript, інформацію про себе — у метаданих, а дані своїх жертв — доступними для будь-кого, хто лише захотів їх переглянути.
Висновок простий: шахраї — це не хакери. Це крадії, які придбали набір відмичок на AliExpress і забули зачинити власні вхідні двері. Інструменти, якими вони користуються, є високотехнологічними — адже їх створив хтось інший. Самі оператори — аматори, які безперечно наражають на небезпеку власну інфраструктуру, дані своїх жертв та власні особисті дані перед будь-ким, хто має хоча б базові технічні знання.
Якщо ви вводили свою фразу-посів на будь-якому з цих сайтів — вважайте, що ваш гаманець зламано, і негайно перекажіть кошти.
Про всі виявлені факти було повідомлено відповідним постачальникам послуг (Google/Firebase, Supabase, Cloudflare, реєстраторам доменів) та задокументовано для правоохоронних органів. Зазначені вище IOC було додано до PhishDestroy — список для знищення.


