Что делать в первые 30 минут
Вы только что поняли, что ваш приватный ключ или seed-фраза скомпрометированы. Может быть, вы ввели их в поддельную программу «обновления Ledger». Может быть, сфотографировали для резервной копии, а фото синхронизировалось в облачный аккаунт, который потом взломали. А может, заметили небольшое списание, которого не делали.
Следующие 30 минут определяют, сколько вы спасёте и сколько потеряете. Шаги ниже расположены по приоритету.
Минуты 0–5: оценка ситуации
- Возьмите чистое устройство — телефон или ноутбук, на котором скомпрометированного кошелька никогда не было. Не то устройство, через которое произошла утечка.
- Создайте новую seed-фразу на новом аппаратном кошельке или в заведомо чистом горячем кошельке. Запишите её офлайн.
- Выпишите адреса нового кошелька — сюда вы будете переводить средства.
Минуты 5–15: сначала стейблкоины
Стейблкоины злоумышленники выводят в первую очередь: у них стабильная цена и мгновенная ликвидность. Поэтому переводите их первыми, в таком порядке:
- USDC, USDT, DAI, BUSD в той сети, где их больше всего;
- затем те же стейблкоины в других сетях (Polygon, Arbitrum, BSC), если они там есть;
- каждый перевод — на новый кошелёк; газ ставьте умеренный (не минимальный), чтобы транзакции подтвердились за один-два блока.
Минуты 15–25: основные ликвидные монеты
ETH, BTC, SOL, BNB, POL (бывший MATIC). Они ликвидны, но злоумышленник может продать их лишь с небольшим проскальзыванием, поэтому это вторая по приоритету цель.
Если на кошельке есть NFT, переведите самые ценные сейчас же — каждый NFT требует отдельной транзакции.
Минуты 25–30: всё остальное
Переведите всё, что осталось: мелкие токены, позиции с отложенной разблокировкой, застейканные активы, если их можно быстро вывести из стейкинга. У некоторых позиций есть период блокировки — от них, возможно, придётся отказаться.
Кошелёк теперь должен быть пустым или почти пустым. Не оставляйте его «для мелочей»: он навсегда в списке злоумышленника и будет опустошён, как только на него что-то придёт.
Первый час после спасения
- Отзовите все одобрения. Зайдите на
revoke.cash, подключите опустевший скомпрометированный кошелёк и отзовите все одобрения. Это стоит газа, но не даст ещё не использованным подписям Permit опустошить будущие поступления. - Проверьте связанные сервисы. Были ли у кошелька одобрения в Uniswap, Aave, Compound? Привязан ли он к депозитным адресам бирж? Каждая такая связь — возможность для повторной атаки.
- Проверьте, что ещё утекло. Если фраза утекла через фишинговый сайт, что ещё вы ему сообщили — почту, телефон, логин от биржи? Считайте, что скомпрометировано всё вместе, а не что-то одно.
Зафиксируйте следы (даже если всё спасли)
Через Etherscan или другой обозреватель блоков запишите адреса, куда злоумышленник выводил средства, и подайте заявление в полицию с полными хешами транзакций. Если похищенное когда-нибудь пройдёт через регулируемую биржу, такое заявление может помочь заморозить средства. Шансы вернуть деньги невелики, но они не нулевые.
Суровая правда
Чаще всего при компрометации теряется всё, что было на пострадавшем кошельке. Протокол спасения за 30 минут — для случаев, когда утечку заметили рано; если заметили поздно, средства уже ушли. Стройте следующую схему хранения исходя из того, что вас снова атакуют, — и так, чтобы одна компрометация не забирала всё.