Ончейн-расследование: хакер украл у Binance $6,28 млрд — полный разбор пути атаки
PanewslabАвтор: TechFlowАвтор: Dickson (@DicksonWuML)
Перевод: Shenchao TechFlow
**Введение Shenchao:** Кража из горячего кошелька Binance — крупнейшее событие на крипторынке сегодня. Инженер CertiK и участник SEAL Dickson проследил каждую ончейн-запись и восстановил весь путь атакующего: от вывода средств из Tornado Cash для подготовки, использования авторизации EIP-7702 для захвата горячего кошелька Binance в Ethereum, до гонки со временем с эмитентами Tether, Circle и другими по заморозке средств. Суммы и время в тексте — это ончейн-статистика автора на момент публикации (примерно 8:00 по пекинскому времени 30 октября), время указано в UTC (+8 часов для пекинского времени), официального подтверждения от Binance пока не поступало.
Сегодня горячий кошелек Binance потерял около $6,28 млрд на 8 блокчейнах. Из них $6,07 млрд были выведены в первые 55 минут, после чего атакующий еще более двух часов многократно опустошал один из кошельков Ethereum.
После этого Tether, Circle, Ripple, Paxos, World Liberty и Binance заморозили около $2,80 млрд. Еще около $3,27 млрд остаются свободными для перемещения, в основном BTC и ETH.
Я полностью проследил всю цепочку событий в блокчейне, включая то, как атакующий перемещал средства до заморозки 🧵
Источники $6,28 млрд (по ценам на 20:24 UTC):
• Ethereum — $3,74 млрд
• Bitcoin — 18 270,2 BTC, $1,47 млрд
• Tron — 612,7 млн USDT + 46,4 млн TRX, $627,5 млн
• XRP — 233,5 млн XRP, $296,5 млн
• Solana — 970 522 SOL, $96,1 млн
• Arbitrum — 8 426 ETH + 74,6 млн ARB, $31,8 млн
• Avalanche — 1,81 млн AVAX + 8,41 млн USDt, $24,3 млн
• Optimism — 44,2 млн OP, $4,8 млн
$3,74 млрд в Ethereum были выведены пятью партиями:
• 20:24:23 — один вызов sweep() для Binance 14: 167 464,25 ETH, 1,615 млрд USDT и еще 61 токен, всего $2,53 млрд
• 20:41 и 20:59 — из смарт-кошелька Binance, доверяющего Binance 14, выведено 780 млн + 43 млн USDC, всего $822,6 млн
• 20:24:47 — Binance 16 подписал 9 транзакций напрямую атакующему: 28 005,6 ETH, 55,7 млн USDT, 25,9 млн RLUSD, 84,5 WBTC, 820 тыс. UNI, 1 199 XAUt, 18,8 млн ENA, 304,6 тыс. LINK, 583,6 млрд PEPE, всего $174,2 млн
• 21:04 и 21:44 — два дополнительных вызова sweep() для Binance 14: 2 070 ETH и 204,3 млн USDT, всего $209,6 млн
• 22:39 — последняя зачистка на новый кошелек: 128,5 ETH и 122 мелких токена, около $500 тыс.
По активам: USDT — $1,87 млрд, USDC — $823 млн, ETH — $457 млн (197 668 ETH), RLUSD — $88,5 млн, wBETH — $76,8 млн, XAUt — $50,5 млн, UNI — $49,6 млн, ENA — $44,7 млн, PEPE — $40,1 млн, LINK — $29,6 млн, USD1 — $27,8 млн, а также около 50 более мелких токенов.
Подготовка началась за день до атаки. 28 октября в 07:39 UTC основной кошелек атакующего 0x7c8601d4645b93cea45f71e118a729332e6b5ca0 впервые вывел 0,1 ETH из Tornado Cash, затем вывел еще дважды. После этого второй кошелек вывел 1 ETH из Tornado и 29 октября в 18:20 перевел его на основной кошелек.
29 октября в 02:28 они развернули контракт-свипер. С 13:51 до 16:47 они провели репетицию на своих кошельках: использовали делегирование EIP-7702, очистили тестовые USDT и USDC, затем вывели их. В 15:59 они запустили версию v2 с универсальной функцией вызова — именно эта функция позже вывела 823 млн USDC.
В 20:04:52 UTC первый шаг провалился. XRP-кошелек Binance отправил атакующему 42 750 000,1 RLUSD, но аккаунт атакующего в XRP на тот момент не существовал, и транзакция была отклонена.
Через 8 секунд перевод 185 017 485,5 XRP прошел успешно, и аккаунт был создан. К 20:09 еще четыре XRP-кошелька Binance были опустошены.
Далее события разворачивались цепочкой:
20:10 — Solana, одной транзакцией выведено 965 455,1 SOL
20:18 — Optimism, 44,2 млн OP
20:20 — Bitcoin, 11 транзакций на 18 270,2 BTC, в том же блоке разбиты на части по 1 000 BTC
20:20–20:22 — Tron, 612,7 млн USDT + 46,4 млн TRX
20:30–20:35 — Arbitrum и Avalanche
Ethereum раскрыл метод атаки. В 20:20:59 атакующий отправил транзакцию с 50 авторизациями EIP-7702, все подписаны приватным ключом Binance 14, соответствующие nonce с 18 914 775 по 18 914 824.
Сам Binance 14 использовал nonce 18 914 775 в 20:17:47, что означает, что авторизации были подписаны всего за несколько минут до использования.
Авторизация с nonce 18 914 809 совпала. Собственная транзакция Binance 14 в том же блоке использовала nonce 18 914 808 — с этого момента Binance 14 выполнял код атакующего.
В 20:24:23 один вызов sweep() вывел 167 464 ETH и 1,615 млрд USDT. Через 24 секунды Binance 16 подписал 9 транзакций напрямую атакующему. В 20:41 и 20:59 атакующий, используя Binance 14, вывел 823 млн USDC из смарт-кошелька Binance, который доверял Binance 14.
Далее началась гонка с заморозкой. Атакующий быстро разделил USDT:
• 20:30 — 500 млн USDT переведены на 0x9749…c762. К 20:59 из них 325 млн были обменены на ETH через RFQ-маркетмейкеров, оставшиеся 175 млн выведены дальше
• 20:33 — 200 млн USDT переведены на 0x0ddf…697e. Около 10 млн проданы на DEX, 190 млн переведены на 0x8d53…639a, который разместил 60 млн в Aave и под них занял ETH
Первый черный список Tether вступил в силу в 21:01:35: 0x5227, где оставался 971 млн USDT; и 0x9749, который к тому времени был опустошен. Circle заморозил 823 млн USDC в 21:04:59.
Часть средств успела уйти в последние секунды:
• 21:01:59 — 0x8d53 перевел 130 млн USDT на 0x77ed…c3eb. Через 48 секунд, в 21:02:47, Tether заморозил 0x8d53
• 21:04–21:06 — 0x77ed продал около 50 млн USDT на DEX и перевел 80 млн на 0x7aa4…bfd1
• 21:08–21:11 — 0x7aa4 продал еще около 50 млн и вывел последние 30 млн. Когда Tether заморозил 0x7aa4 в 21:12:35, он уже был пуст
• 21:16:11 — 0xccbe…a263 вывел эти 30 млн. Через 36 секунд Tether заморозил 0xccbe и в 21:18:59 перехватил эти 30 млн на 0xb171…c8c3
• 175 млн, выведенные с 0x9749, оставались на 0xaa24…54a0, пока Tether не заморозил их в 21:14:59
В общей сложности из 1,875 млрд USDT в Ethereum около 435 млн были проданы до того, как их настиг черный список. 1,38 млрд заморожены, 60 млн застряли в качестве залога в Aave.
Действия других эмитентов в хронологическом порядке:
• 20:57:47 — World Liberty внес 48,5 млн WLFI с 0x5227 в черный список
• 21:07:55 — Tether заморозил 8,41 млн USDt в Avalanche. Атакующий попытался перевести их в 21:40:47, транзакция была отменена
• 21:09–21:21 — Tether заморозил 378,7 млн USDT в трех кошельках Tron. До этого 234 млн были обменены на TRX через SunSwap
• 21:11:23 — Tether заморозил 12 574 XAUt (около $50 млн)
• 22:00:59 — Ripple заморозил RLUSD. Атакующий уже перевел их на 0xe702…958d в 21:33 и продал 48 млн за ETH, последний ордер на продажу попал в тот же блок, что и заморозка. Перехвачено 40,5 млн
• 22:10:35 — World Liberty заморозил 27,8 млн USD1
• 22:30:47 — Paxos заморозил 1 907 PAXG
• 22:48:35 — Binance внес 29 934 wBETH (около $75 млн) в черный список; атакующий ранее перевел их на 0x7f9d…15e3 в 21:52
3,45 млн FDUSD от First Digital пока остаются доступными для перемещения.
Binance 14 оставался делегированным контракту атакующего, что превратилось в перетягивание каната:
• 21:04 и 21:44 — атакующий снова провел зачистку: сначала 1 700 ETH, затем 370 ETH и 200,4 млн USDT. Эти USDT попали на 0x5227, который уже был заморожен Tether
• 22:06:23 — Tether внес сам Binance 14 в черный список. Переводы USDT, отправленные Binance с этого адреса, не прошли в 22:15 и 23:01
• 22:39 — атакующий снова провел зачистку, на этот раз на новый кошелек: 128,5 ETH и 122 мелких токена
• 22:55–23:07 — Binance сам опустошил Binance 14: 46 переводов токенов на Binance 8, примерно каждые 12 секунд
• 23:36–23:38 — атакующий еще четыре раза вызвал sweep(), все четыре раза безуспешно
За пределами Ethereum:
• Arbitrum, 21:35–21:38: все 8 426 ETH и 74,6 млн ARB переведены на новый кошелек 7702 0x3e2b…32d5, который в 21:41 авторизовал ARB для торговли. По состоянию на 23:50 средства оставались на месте
• Avalanche, 21:45:34: 1 813 999 AVAX переведены на 0x8035…c397. Затем 200 005 AVAX выведены с 0xc39e…9824, в 23:27:35 тот же адрес получил 1 563 812,78 USDC в Ethereum через кроссчейн-мост CCTP от Circle. Через 4 минуты, в 23:31:59, Circle внес их в черный список
• Средства в Bitcoin, XRP, Solana и Optimism пока не перемещались. BTC распределены по 19 кошелькам, 17 из которых содержат ровно по 1 000 BTC
Ситуация на примерно 23:50 UTC:
Заморожено, около $2,80 млрд
• 1,38 млрд USDT в Ethereum, 378,7 млн в Tron, 8,41 млн в Avalanche (Tether)
• 824,6 млн USDC (Circle)
• 40,5 млн RLUSD (Ripple), 27,8 млн USD1 (World Liberty), 12 574 XAUt (Tether), 29 934 wBETH (Binance), 1 907 PAXG (Paxos), 48,5 млн WLFI
Не заморожено, около $3,27 млрд
• 18 270 BTC, $1,42 млрд
• 458 770 ETH в 9 кошельках, $1,03 млрд
• 233,5 млн XRP, $289 млн
• 684,6 млн TRX, $243 млн
• Другие токены в Ethereum примерно на $136 млн
• 970,5 тыс. SOL, $93 млн, плюс ARB, AVAX и OP примерно на $48 млн
Еще 60 млн USDT застряли в качестве залога в Aave.
Примечание: переводы в BTC, XRP и Tron были связаны по времени и отпечаткам транзакций: один и тот же период, новые адреса получателей, а также комиссии и формат транзакций, отличные от собственных выводов Binance. Украденные суммы рассчитаны по ценам на 20:24 UTC; текущие остатки — по ценам примерно на 23:50 UTC.
Ончейн-доказательства каждой транзакции и заморозки приложены в постах ниже. Если вы заметили, что я что-то упустил, сообщите мне!
Данный контент предназначен исключительно для информационных и образовательных целей и не является инвестиционным советом, связанным с BTCC. BTCC прилагает все усилия, но не может гарантировать правдивость, точность или оригинальность вышеприведенного контента.