Дрейнер - это смарт-контракт, который выводит все токены с кошелька в момент, когда вы подписываете вредоносный approve. Сид-фразу красть не нужно. Малварь скачивать не нужно. Один клик на фишинговом сайте - и баланс обнулён.

Как работает дрейнер

Атака укладывается в три шага:

  1. Вы попадаете на фишинговый сайт - клон легитимного NFT-минта, DeFi-протокола или страницы с раздачей токенов.
  2. Сайт просит подключить кошелёк и подписать транзакцию или сообщение.
  3. Вы подписываете. Дрейнер-контракт исполняется и переводит токены на адрес атакующего.

Кража происходит за один блок - меньше 15 секунд на EVM-чейнах. К тому моменту, когда вы понимаете что произошло, средства уже уходят через миксер.

Типы подписей, которые опасны

Не каждая подпись одинаково рискованна. Понимать разницу - значит уметь защититься.

permit-подписи - самые опасные. ERC-2612 добавил функцию permit() в популярные токены (USDC, DAI, WETH и другие). Подпись permit даёт контракту разрешение тратить ваши токены без on-chain транзакции с вашей стороны. Внешне это выглядит как бесплатное “подписать сообщение” - без газа, без видимой транзакции в кошельке. Но permit атакующий отправляет в сеть сам - после вашей подписи - и выводит весь баланс.

setApprovalForAll - NFT-эквивалент. Подпись даёт контракту право передавать любой NFT в кошельке, а не один конкретный. Легитимные NFT-маркетплейсы используют именно это - дрейнеры тоже.

approve на неограниченную сумму - стандартный ERC-20 approve на type(uint256).max. Один контракт получает бессрочный доступ к конкретному токену в полном объёме. Если этот контракт окажется вредоносным или будет взломан позже - токен уязвим.

Вредоносный multicall - несколько операций в одной транзакции. Вы видите один запрос подписи; внутри - одновременно permit, перевод ETH и setApprovalForAll.

Откуда приходят дрейнеры

Фишинговые сайты

Typosquat-домен или скомпрометированный домен - самый распространённый вектор. Атакующие регистрируют домен с одним отличающимся символом от легитимного проекта и точно копируют дизайн.

Трафик гонят через:

  • Платные поисковые объявления по названию протокола.
  • Скомпрометированные Twitter-аккаунты с большой аудиторией, постящие “эксклюзивный минт”.
  • Discord DM от аккаунтов, притворяющихся сотрудниками проекта.
  • Telegram-боты с сообщением “вы выбраны для airdrop”.

Скомпрометированные легитимные сайты

В 2024-2025 у нескольких крупных DeFi-фронтендов атакующие угнали DNS или подменили JavaScript на CDN. Пользователи заходили по правильному URL - и получали дрейнер. Обнаружить сложнее, потому что адрес настоящий.

Вредоносные dApp через WalletConnect

WalletConnect URI можно передать через QR или ссылку. Поддельный “connect wallet” с вредоносным URI направляет сессию на relay атакующего, который затем предлагает транзакции.

Как распознать дрейнер до подписи

Читайте запрос подписи. MetaMask, Rabby и современные кошельки декодируют запросы и показывают что именно вы подписываете. Для permit виден: токен, адрес spender, сумма, срок действия. Если spender - незнакомый контракт, а сумма “unlimited” - не подписывайте.

Проверяйте адрес контракта. Перед любой подписью на незнакомом сайте найдите целевой контракт на Etherscan. Известные контракты помечены. Неизвестный, задеплоенный недавно, без верифицированного кода, обращающийся к вашему кошельку - стоп.

Сверяйте URL. Смотрите на фактический домен в браузере, не на заголовок страницы. Атакующие используют Unicode-символы-двойники и субдомены (app.uniswap-io.com вместо app.uniswap.org).

Симуляция в Rabby. Rabby симулирует транзакцию до подписи и показывает итоговое изменение баланса. Если “бесплатный клейм” приводит к потере токенов - симуляция это вскроет.

Практики, которые снижают риск

Отдельный кошелёк для новых взаимодействий. Горячий кошелёк - только то, что нужно для конкретной сессии. Основные средства хранятся в холодном кошельке, который никогда не подключается к веб-приложениям.

Регулярный аудит approve. Используйте сканер апрувов Web3defender, чтобы проверить, каким контрактам открыт доступ к вашим токенам. Всё, что вы не узнаёте или больше не используете, - отзывайте. Старый approve на протокол, который потом взломали, - это открытая дверь. Инструмент снижает риск; он не проверяет, не появился ли новый вредоносный контракт с тех пор как вы последний раз смотрели.

Не подписывайте permit на сайтах, на которые перешли по ссылке. Discord, Telegram, поисковое объявление - закройте вкладку и зайдите по прямому URL.

Проверяйте approve перед каждой новой транзакцией. “Approve + swap” в одной транзакции - норма. “Approve all”, “setApprovalForAll” или неожиданный permit - нет.

Аппаратный кошелёк снижает риск, но не устраняет его. Ledger или Trezor всё равно подпишет то, что вы скажете. Подтверждённый на аппаратном кошельке вредоносный permit сработает так же, как на программном. Железо защищает сид-фразу, а не суждение.

Что делать сразу после атаки

  1. Не отправляйте новые средства на скомпрометированный кошелёк. Атакующие иногда оставляют sweep-бот, который забирает любое пополнение.
  2. Немедленно отзовите все оставшиеся approve - через Revoke.cash или инструмент апрувов Web3defender.
  3. Переведите оставшиеся активы на чистый кошелёк, пока sweep-бот их не перехватил.
  4. Зафиксируйте адрес атакующего и адрес вредоносного контракта - подайте репорт на Etherscan, в explorer нужного чейна и в проект, под который маскировался фишинг.
  5. Направьте заявление в подразделение по киберпреступлениям вашей страны. Возврат средств маловероятен, но данные помогают отслеживать паттерны.

Деньги, ушедшие через миксер, практически не возвращаются.


FAQ

Дрейнер может обнулить аппаратный кошелёк? Да. Аппаратный кошелёк защищает приватный ключ, а не от подписи вредоносной транзакции. Подтвердили permit на Ledger - средства уйдут так же, как с программного кошелька. Читайте каждый запрос подписи до подтверждения.

Как безопаснее участвовать в новых NFT-минтах? Отдельный кошелёк для минтов, пополненный только нужным количеством ETH. Никогда не минтите с кошелька, где хранятся основные активы. После минта - переводите NFT в холодное хранение перед следующим подключением куда-либо.

Permit-подписи истекают? Могут. Поле deadline задаёт срок. Но атакующие ставят очень длинные сроки - часто годы. Если вы подписали permit и не заметили - атакующий успеет его применить когда угодно до истечения срока.