AMLConsensus · курс
Программа · Урок 7.8
Раздел 7 · Урок 7.8

Approval-фишинг и дрейнеры: как крадут через подпись

Самая коварная кража в крипте — та, где жертва сама разрешает вывод своих средств. Ни украденного пароля, ни взломанного кошелька: человек своими руками подписывает транзакцию, а через секунду кошелёк пуст. Это approval-фишинг и дрейнеры — индустрия, которая в 2023–2026 годах увела у пользователей сотни миллионов долларов. Чтобы защищать людей и правильно классифицировать такие адреса, аналитик обязан понимать механику разрешений approve и permit.

Что такое approve и зачем оно вообще нужно

В сетях типа Ethereum токены (USDT, USDC и др.) — это смарт-контракты. Чтобы приложение (DEX, стейкинг, игра) могло распоряжаться вашими токенами, вы даёте ему разрешение (approval): подписываете транзакцию approve, которая говорит токен-контракту «разреши вот этому адресу тратить мои токены до такой-то суммы». Это штатный и необходимый механизм — без него DeFi не работал бы.

Где спрятана ловушка. Разрешение можно выдать на неограниченную сумму (unlimited approval) — так удобнее, не переспрашивать каждый раз. И разрешение не имеет срока — оно висит, пока вы его не отзовёте. Мошенник добивается ровно одного: чтобы вы подписали неограниченный approve на его контракт. После этого он может вывести все ваши токены этого типа в любой момент — без новых подтверждений от вас.

Механика дрейнера шаг за шагом

Дрейнер (drainer) — это готовый набор скриптов, который мошенники арендуют как сервис (drainer-as-a-service) и ставят на поддельные сайты. Вот типичный сценарий.

  1. Приманка. Жертва видит «раздачу токенов», «минт редкого NFT», «клейм награды» или поддельный сайт известного проекта. Ссылка приходит из рекламы, взломанного Twitter/Discord, комментария.
  2. Подключение кошелька. Человек жмёт «Connect Wallet» — само по себе это безопасно, но создаёт доверие и показывает дрейнеру, какие токены есть на балансе.
  3. Просьба «подтвердить». Сайт предлагает подписать транзакцию под видом «получить награду», «верифицировать кошелёк», «активировать аккаунт». На деле это approve или permit на контракт мошенника.
  4. Подпись жертвы. Человек не читает, что именно подписывает (или не понимает), и жмёт «Confirm». Разрешение выдано.
  5. Вывод. Дрейнер немедленно (или отложенно, чтобы не спугнуть) вызывает transferFrom и выводит все разрешённые токены на адрес злоумышленника.
  6. Отмывание. Собранное с сотен жертв сводится на адреса-сборщики и уходит через миксеры и мосты.
Поддельный сайт
«клейм награды»
Жертва подписывает approve/permit
transferFrom → кошелёк пуст

Permit: подпись без комиссии, ещё коварнее

Обычный approve — это транзакция, за неё платят газ, она видна в истории. Стандарт permit (EIP-2612) и связанный Permit2 позволяют выдать разрешение простой подписью сообщения off-chain — без транзакции и без комиссии. Для пользователя это выглядит как безобидное «подпишите, чтобы войти». Именно поэтому permit-фишинг особенно опасен.

Опасность permit-подписи. Подпись off-chain не стоит газа, не отображается в истории транзакций до момента использования и выглядит невинно. Жертва думает, что «просто вошла на сайт», а на деле выдала мошеннику право снять токены. Всегда читайте, что именно подписываете: если в окне кошелька фигурируют слова Permit, spender, неизвестный адрес и большие суммы — это тревога.

Как это выглядит на графе и как классифицировать

Для AML-аналитика адрес дрейнера имеет узнаваемый почерк.

Чем отличается от других краж. При взломе протокола (Урок 7.7) страдает контракт; при approval-фишинге страдают тысячи обычных кошельков поодиночке. Источник грязи здесь — не баг кода, а социальная инженерия: жертва сама подписала. Но экспозиция от адреса-дрейнера так же токсична, и биржа заморозит средства, приходящие с него.

Защита: как не стать жертвой и что делать после

  1. Читайте окно подписи. Кошелёк показывает, что вы одобряете: тип действия (Approve/Permit), кому (spender) и сколько. Незнакомый адрес + «Unlimited» = не подписывать.
  2. Не выдавайте unlimited approval. По возможности ограничивайте сумму разрешения точным количеством для операции.
  3. Регулярно проверяйте и отзывайте разрешения. Сервисы-ревокеры показывают все активные approvals кошелька; лишние и старые — отзывать (revoke).
  4. Отдельный «горячий» кошелёк. Для взаимодействия с новыми сайтами держите кошелёк с малым балансом; основные средства — на отдельном/аппаратном.
  5. Проверяйте домен. Дрейнеры живут на поддельных доменах-двойниках. Заходите по закладкам, а не по ссылкам из рекламы и личных сообщений.
  6. Если уже подписали. Немедленно отзовите разрешение (revoke) — это гонка со временем. Ценные остатки — перевести на новый чистый кошелёк. Скомпрометированный адрес считать «прожжённым».
Отзыв не возвращает украденное. Revoke закрывает разрешение на будущее, но уже выведенные токены вернуть нельзя. Поэтому главная защита — не подписать. И помните: настоящая раздача никогда не требует подписать approve на ваши же токены — «клейм» безопасной награды не нуждается в доступе к вашему балансу.

Главное из урока

Материалы носят образовательный характер и не являются советом по безопасности для конкретного случая.