Раздел 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) и ставят на поддельные сайты. Вот типичный сценарий.
- Приманка. Жертва видит «раздачу токенов», «минт редкого NFT», «клейм награды» или поддельный сайт известного проекта. Ссылка приходит из рекламы, взломанного Twitter/Discord, комментария.
- Подключение кошелька. Человек жмёт «Connect Wallet» — само по себе это безопасно, но создаёт доверие и показывает дрейнеру, какие токены есть на балансе.
- Просьба «подтвердить». Сайт предлагает подписать транзакцию под видом «получить награду», «верифицировать кошелёк», «активировать аккаунт». На деле это
approve или permit на контракт мошенника.
- Подпись жертвы. Человек не читает, что именно подписывает (или не понимает), и жмёт «Confirm». Разрешение выдано.
- Вывод. Дрейнер немедленно (или отложенно, чтобы не спугнуть) вызывает
transferFrom и выводит все разрешённые токены на адрес злоумышленника.
- Отмывание. Собранное с сотен жертв сводится на адреса-сборщики и уходит через миксеры и мосты.
Поддельный сайт
«клейм награды»
→
Жертва подписывает approve/permit
→
transferFrom → кошелёк пуст
Permit: подпись без комиссии, ещё коварнее
Обычный approve — это транзакция, за неё платят газ, она видна в истории. Стандарт permit (EIP-2612) и связанный Permit2 позволяют выдать разрешение простой подписью сообщения off-chain — без транзакции и без комиссии. Для пользователя это выглядит как безобидное «подпишите, чтобы войти». Именно поэтому permit-фишинг особенно опасен.
Опасность permit-подписи. Подпись off-chain не стоит газа, не отображается в истории транзакций до момента использования и выглядит невинно. Жертва думает, что «просто вошла на сайт», а на деле выдала мошеннику право снять токены. Всегда читайте, что именно подписываете: если в окне кошелька фигурируют слова Permit, spender, неизвестный адрес и большие суммы — это тревога.
Как это выглядит на графе и как классифицировать
Для AML-аналитика адрес дрейнера имеет узнаваемый почерк.
- Много жертв — один сборщикДесятки и сотни адресов отдают токены на один адрес по вызову
transferFrom. Веерная сходимость (fan-in) к адресу-дрейнеру.
- Только вывод, без встречных операцийЖертвы не получали ничего взамен — это односторонний отток, характерный для кражи, а не торговли.
- Разнородные токеныС одного адреса выметается всё ценное — стейблы, гав-токены, иногда NFT. Дрейнер берёт что разрешили.
- Быстрый вывод к отмываниюСо сборщика средства уходят в миксер/мост в течение минут-часов. Категория экспозиции —
scam/phishing/theft высокого веса.
Чем отличается от других краж. При взломе протокола (Урок 7.7) страдает контракт; при approval-фишинге страдают тысячи обычных кошельков поодиночке. Источник грязи здесь — не баг кода, а социальная инженерия: жертва сама подписала. Но экспозиция от адреса-дрейнера так же токсична, и биржа заморозит средства, приходящие с него.
Защита: как не стать жертвой и что делать после
- Читайте окно подписи. Кошелёк показывает, что вы одобряете: тип действия (Approve/Permit), кому (spender) и сколько. Незнакомый адрес + «Unlimited» = не подписывать.
- Не выдавайте unlimited approval. По возможности ограничивайте сумму разрешения точным количеством для операции.
- Регулярно проверяйте и отзывайте разрешения. Сервисы-ревокеры показывают все активные approvals кошелька; лишние и старые — отзывать (revoke).
- Отдельный «горячий» кошелёк. Для взаимодействия с новыми сайтами держите кошелёк с малым балансом; основные средства — на отдельном/аппаратном.
- Проверяйте домен. Дрейнеры живут на поддельных доменах-двойниках. Заходите по закладкам, а не по ссылкам из рекламы и личных сообщений.
- Если уже подписали. Немедленно отзовите разрешение (revoke) — это гонка со временем. Ценные остатки — перевести на новый чистый кошелёк. Скомпрометированный адрес считать «прожжённым».
Отзыв не возвращает украденное. Revoke закрывает разрешение на будущее, но уже выведенные токены вернуть нельзя. Поэтому главная защита — не подписать. И помните: настоящая раздача никогда не требует подписать approve на ваши же токены — «клейм» безопасной награды не нуждается в доступе к вашему балансу.
Главное из урока
- approve/permit — штатный механизм разрешений; ловушка в неограниченном и бессрочном доступе на контракт мошенника.
- Дрейнер обманом заставляет жертву подписать разрешение, затем вызывает transferFrom и выметает токены.
- permit-подпись off-chain особенно опасна: без газа, не видна в истории, выглядит как «вход на сайт».
- На графе — веерная сходимость от многих жертв к одному сборщику, односторонний отток, категория scam/phishing.
- Защита: читать окно подписи, не давать unlimited, отзывать разрешения, отдельный кошелёк, проверять домен.
Материалы носят образовательный характер и не являются советом по безопасности для конкретного случая.