Дрейнер кошелька (wallet drainer) — что это простыми словами | IceAI

Дрейнер кошелька (wallet drainer)

"Дрейнер: как сайты-клоны выносят токены одной подписью, чем опасны approve и Permit и как проверить сайт до подключения кошелька."

Обновлено: 2026-10-29

В феврале мне написал «саппорт» проекта, где я держала небольшую сумму в пуле: «твой адрес попал в снапшот, забери токены до пятницы». Ссылка вела на сайт с тем же логотипом и тем же шрифтом, что у настоящего. Я подключила кошелёк и остановилась на экране подписи: вместо «claim» там стояло setApprovalForAll на незнакомый контракт. Я закрыла вкладку и пошла читать, что это было. Это был дрейнер.

Дрейнер кошелька (wallet drainer) клон домен младше недели approve подпись владельца 0 ETH газ платит атакующий 100% баланс токена кошелёк не ломают — он сам подписывает разрешение

Как это работает

Дрейнер — это сайт-клон плюс набор скриптов. Задача одна: получить от кошелька подпись, которая даёт право списать токены, и вынести всё, что лежит на адресе. Приватный ключ для этого не нужен. Жертва сама нажимает «Подтвердить», поэтому кошелёк считает операцию легальной и не показывает красных предупреждений.

Дальше списание делает чужой адрес и сам платит газ — поэтому с пустого кошелька токены всё равно исчезают.

Что просят подписать

  • approve и setApprovalForAll — разрешение тратить конкретный токен или всю коллекцию NFT. Ставится на контракт, а не на сумму, поэтому лимита как такового нет.
  • Permit и Permit2 — подпись без транзакции и без газа. Внешне выглядит как безобидный вход на сайт, а по силе равна approve. Отзывать такую подпись нужно вручную.
  • personal_sign и eth_sign — слепая подпись: вы подтверждаете набор символов, не видя смысла. Именно так уводят и доступ к кошельку, а не только токены.

Наборы дрейнеров продают по подписке в закрытых чатах, оператору отдают 20–30% добычи. Клоны появляются пачками: одна страница за неделю меняет домен трижды.

Как проверить за полминуты

Смотрю на три вещи. Домен: у настоящего проекта в закладках, у клона — в личке, и whois показывает регистрацию пару дней назад. Экран подписи: если там setApprovalForAll, Permit или непонятный набор байт — отказ, без обсуждений. Кошелёк: на повседневные подписи у меня отдельный адрес с мелочью, основные суммы лежат в холодном кошельке и к браузеру не подключены. Ссылка из лички вместо закладки — уже половина фишинга.

Уже выданные разрешения видно в revoke.cash или в сканере по адресу. Отзыв стоит газа: в Ethereum от 1 до 5 $ за разрешение, в Arbitrum и Base — центы. Проверять стоит раз в пару месяцев, а не после новости о взломе.

Почему предупреждение не сработало

Кошелёк предупреждает, только если контракт есть в чёрном списке. Новый адрес туда не попал, а сайт технически чист: он просто просит подпись. Единственный барьер — читать, что подтверждаю. Маркер: дрейнер не показывает сумму и не спрашивает сеть.

Коротко

  • Дрейнер выносит токены подписью, а не взломом.
  • Опасны approve, setApprovalForAll, Permit, Permit2 и слепые подписи.
  • Пустой ETH на балансе не защищает.
  • Клон выдаёт свежий домен и ссылка из лички.
  • Разрешения отзывают через revoke.cash, проверка — раз в 2 месяца.
  • Крупные суммы держу вне браузера, отдельно от подписей.

Остались вопросы? Спросите ИИ-ассистента — объяснит другими словами.

Спросить