바이낸스 핫월렛이 62억 8천만 달러 규모로 해킹당했으며, 온체인 추적을 통해 공격자가 EIP-7702 권한 부여를 이용해 월렛을 탈취하고 테더 및 기타 발행사가 자금을 동결하기 전에 자금을 이동한 방법이 드러나, 이 최대 규모 보안 사고에 대한 전체 재구성이 제공되었다.
Author: Dickson (@DicksonWuML)
편집: Shenchao TechFlow
Shenchao 소개: 바이낸스 핫월렛 도난 사건은 오늘 암호화폐 시장에서 가장 큰 사건입니다. CertiK 엔지니어이자 SEAL 멤버인 Dickson은 온체인 기록을 트랜잭션 단위로 추적하여 공격자가 Tornado Cash에서 자금을 인출해 준비하고, EIP-7702 권한 부여를 이용해 바이낸스의 이더리움 핫월렛을 탈취한 후 Tether, Circle 및 기타 발행사와 자금 동결을 두고 경쟁한 전체 과정을 재구성했습니다. 본문의 금액과 시간은 작성자가 게시한 시점(베이징 시간 10월 30일 오전 8시경) 기준 온체인 통계이며, 시간은 UTC(+8시간이 베이징 시간)이고 아직 바이낸스의 공식 확인을 받지 않았습니다.
바이낸스의 핫월렛은 오늘 8개 체인에 걸쳐 약 62억 8천만 달러를 손실했습니다. 그중 60억 7천만 달러는 첫 55분 이내에 이체되었으며, 이후 공격자는 2시간 이상 동안 이더리움 지갑 중 하나를 반복적으로 쓸어담았습니다.
이후 Tether, Circle, Ripple, Paxos, World Liberty 및 바이낸스가 약 28억 달러를 동결했습니다. 약 32억 7천만 달러는 여전히 자유롭게 이동할 수 있으며, 주로 BTC와 ETH입니다.
저는 동결 전 공격자의 자금 이동 방식을 포함해 전체 사건을 온체인에서 추적했습니다 🧵
62억 8천만 달러의 내역(UTC 20:24 기준 가격):
• 이더리움 37억 4천만 달러
• 비트코인 18,270.2 BTC, 14억 7천만 달러
• 트론 6억 1,270만 USDT + 4,640만 TRX, 6억 2,750만 달러
• XRP 2억 3,350만 XRP, 2억 9,650만 달러
• 솔라나 970,522 SOL, 9,610만 달러
• Arbitrum 8,426 ETH + 7,460만 ARB, 3,180만 달러
• Avalanche 181만 AVAX + 841만 USDt, 2,430만 달러
• Optimism 4,420만 OP, 480만 달러
이더리움의 37억 4천만 달러는 다섯 차례에 걸쳐 유출되었습니다:
• 20:24:23, Binance 14에서 단일 sweep() 실행: 167,464.25 ETH, 16억 1,500만 USDT 및 기타 61개 토큰, 총 25억 3천만 달러
• 20:41 및 20:59, Binance 14를 신뢰하는 바이낸스 스마트 월렛에서 7억 8천만 + 4,300만 USDC 이체, 총 8억 2,260만 달러
• 20:24:47, Binance 16이 공격자에게 직접 전송한 9건의 이체에 서명: 28,005.6 ETH, 5,570만 USDT, 2,590만 RLUSD, 84.5 WBTC, 820,000 UNI, 1,199 XAUt, 1,880만 ENA, 304,600 LINK, 5,836억 PEPE, 총 1억 7,420만 달러
• 21:04 및 21:44, Binance 14에 대한 추가 두 차례 sweep: 2,070 ETH 및 2억 430만 USDT, 총 2억 960만 달러
• 22:39, 새 월렛으로 최종 sweep: 128.5 ETH 및 122개 소형 토큰, 약 50만 달러
자산별: 18억 7천만 USDT, 8억 2,300만 USDC, 4억 5,700만 ETH(197,668 ETH), 8,850만 RLUSD, 7,680만 wBETH, 5,050만 XAUt, 4,960만 UNI, 4,470만 ENA, 4,010만 PEPE, 2,960만 LINK, 2,780만 USD1, 그리고 약 50개의 소형 토큰.준비는 전날부터 시작되었다. 10월 28일 UTC 07:39에 공격자의 메인 지갑 0x7c8601d4645b93cea45f71e118a729332e6b5ca0이 먼저 Tornado Cash에서 0.1 ETH를 인출한 후 두 번 더 인출했다. 이어 두 번째 지갑이 Tornado에서 1 ETH를 인출하여 10월 29일 18:20에 메인 지갑으로 전송했다.
10월 29일 02:28에 그들은 스위퍼 컨트랙트를 배포했다. 13:51부터 16:47까지 그들은 자신들의 지갑에서 리허설을 진행했다: EIP-7702 위임을 사용하여 테스트용 USDT와 USDC를 스위핑한 후 인출했다. 15:59에는 범용 호출 기능이 포함된 v2 버전을 배포했으며, 나중에 8억 2,300만 달러의 USDC를 이동시킨 것이 바로 이 기능이었다.
UTC 20:04:52에 첫 번째 단계가 실패했다. 바이낸스의 XRP 지갑이 42,750,000.1 RLUSD를 공격자에게 전송했지만, 공격자의 XRP 계정이 아직 존재하지 않아 전송이 반환되었다.
8초 후, 185,017,485.5 XRP가 성공적으로 전송되어 계정이 생성되었다. 20:09까지 다른 네 개의 바이낸스 XRP 지갑도 모두 비워졌다.
연쇄 반응이 이어졌다:
20:10 솔라나, 965,455.1 SOL이 단일 트랜잭션으로 이동
20:18 옵티미즘, 4,420만 OP
20:20 비트코인, 18,270.2 BTC가 11개의 트랜잭션으로 이동하여 동일 블록 내에서 1,000 BTC 단위로 분할
20:20 ~ 20:22 트론, 6억 1,270만 달러 USDT + 4,640만 TRX
20:30 ~ 20:35 아비트럼 및 아발란체
이더리움이 공격 방법을 드러냈다. 20:20:59에 공격자는 50개의 EIP-7702 인가를 담은 트랜잭션을 전송했으며, 모두 바이낸스 14의 개인 키로 서명되었고 논스 18,914,775부터 18,914,824에 해당했다.
바이낸스 14 자체는 20:17:47에 방금 18,914,775를 사용했으며, 이는 이러한 인가가 사용되기 불과 몇 분 전에 서명되었음을 나타낸다.
논스 18,914,809의 인가가 일치했다. 동일 블록에서 바이낸스 14의 자체 트랜잭션은 18,914,808을 사용했으며, 그 순간부터 바이낸스 14는 공격자의 코드를 실행하고 있었다.
20:24:23에 단일 sweep()이 167,464 ETH와 16억 1,500만 달러 USDT를 그곳에서 이동시켰다. 24초 후, 바이낸스 16은 공격자에게 직접 전송된 9건의 전송에 서명했다. 20:41과 20:59에 공격자는 바이낸스 14를 이용하여 이를 신뢰하는 바이낸스 스마트 지갑에서 8억 2,300만 달러 USDC를 이동시켰다.
다음은 동결과의 경쟁이었다. 공격자는 USDT를 빠르게 분할했다:
• 20:30에 5억 달러 USDT가 0x9749…c762로 전송되었다. 20:59까지 그중 3억 2,500만 달러가 RFQ 마켓 메이커를 통해 ETH로 스왑되었고, 나머지 1억 7,500만 달러는 추가로 전송되었다
• 20:33에 2억 달러 USDT가 0x0ddf…697e로 전송되었다. 약 1,000만 달러가 DEX에서 판매되었고, 1억 9,000만 달러가 0x8d53…639a로 전송되어 6,000만 달러를 Aave에 예치하고 그에 대한 담보로 ETH를 차입했다
테더의 첫 번째 블랙리스트 조치는 21:01:35에 발효되었다: 여전히 9억 7,100만 달러 USDT를 보유한 0x5227; 그리고 이미 비워진 0x9749. 서클은 21:04:59에 8억 2,300만 달러 USDC를 동결했다.
일부 자금은 마지막 순간에 탈출했다:• 21:01:59에 0x8d53이 0x77ed…c3eb로 1억 3천만 USDT를 전송했습니다. 48초 후인 21:02:47에 Tether가 0x8d53을 동결했습니다. • 21:04부터 21:06까지 0x77ed는 DEX에서 약 5천만 USDT를 매도하고 8천만을 0x7aa4…bfd1로 전송했습니다.
• 21:08부터 21:11까지 0x7aa4는 추가로 약 5천만을 매도하고 마지막 3천만을 빼냈습니다. Tether가 21:12:35에 0x7aa4를 동결했을 때에는 이미 비워진 상태였습니다.
• 21:16:11에 0xccbe…a263이 3천만을 전송했습니다. 36초 후 Tether가 0xccbe를 동결했고, 21:18:59에 0xb171…c8c3에서 3천만을 차단했습니다.
• 0x9749가 전송한 1억 7천 5백만은 Tether가 21:14:59에 동결할 때까지 0xaa24…54a0에 남아 있었습니다.
총계로, 이더리움상의 18억 7천 5백만 USDT 중 약 4억 3천 5백만이 블랙리스트가 따라잡기 전에 매도되었습니다. 13억 8천만이 동결되었고, 6천만이 Aave 담보로 묶여 있습니다.
다른 발행사들의 조치를 시간순으로 정리하면:
• 20:57:47 World Liberty가 0x5227의 4천 8백 5십만 WLFI를 블랙리스트에 올렸습니다.
• 21:07:55 Tether가 Avalanche에서 841만 USDt를 동결했습니다. 공격자는 21:40:47에 이를 이동시키려 했으나 트랜잭션이 revert되었습니다.
• 21:09부터 21:21까지 Tether가 Tron의 세 지갑에서 3억 7천 8백 7십만 USDT를 동결했습니다. 이전에 2억 3천 4백만은 이미 SunSwap을 통해 TRX로 스왑된 상태였습니다.
• 21:11:23 Tether가 12,574 XAUt(약 5천만 USD)를 동결했습니다.
• 22:00:59 Ripple이 RLUSD를 동결했습니다. 공격자는 이미 21:33에 이를 0xe702…958d로 옮기고 4천 8백만을 ETH로 매도했으며, 마지막 매도 주문과 동결이 같은 블록에 들어갔습니다. 4천 5십만이 차단되었습니다.
• 22:10:35 World Liberty가 2천 7백 8십만 USD1을 동결했습니다.
• 22:30:47 Paxos가 1,907 PAXG를 동결했습니다.
• 22:48:35 Binance가 29,934 wBETH(약 7천 5백만 USD)를 블랙리스트에 올렸습니다. 공격자는 이미 21:52에 이를 0x7f9d…15e3로 옮긴 상태였습니다.
First Digital의 3백 4십 5만 FDUSD는 여전히 전송 가능합니다.
Binance 14는 공격자의 컨트랙트에 계속 위임되어 있었고, 이는 줄다리기로 이어졌습니다:
• 21:04와 21:44에 공격자가 다시 스윕했습니다. 처음에는 1,700 ETH, 그다음에는 370 ETH와 2억 4백만 USDT였습니다. 이 USDT는 이미 Tether가 동결한 0x5227에 도착했습니다.
• 22:06:23에 Tether가 Binance 14 자체를 블랙리스트에 올렸습니다. 해당 주소에서 Binance 자체의 USDT 전송은 22:15와 23:01에 실패했습니다.
• 22:39에 공격자가 다시 스윕했고, 이번에는 새 지갑으로 128.5 ETH와 122개의 소형 토큰을 보냈습니다.
• 22:55부터 23:07까지 Binance가 직접 Binance 14를 비웠습니다. Binance 8로의 46건 토큰 전송이 이루어졌으며, 약 12초마다 한 건꼴이었습니다.
• 23:36부터 23:38까지 공격자가 sweep()을 네 번 더 호출했으나 네 번 모두 빈손이었습니다.
이더리움 외부:
• Arbitrum, 21:35부터 21:38까지: 8,426 ETH 전액과 7천 4백 6십만 ARB가 새 7702 지갑 0x3e2b…32d5로 이동되었고, 해당 지갑은 21:41에 ARB 거래를 승인했습니다. 23:50 기준으로 여전히 그곳에 있었습니다.
• Avalanche, 21:45:34: 1,813,999 AVAX가 0x8035…c397로 이동되었습니다. 이후 0xc39e…9824에서 200,005 AVAX가 전송되었고, 23:27:35에 같은 주소가 Circle의 CCTP 크로스체인 브리지를 통해 이더리움에서 1,563,812.78 USDC를 수령했습니다. 4분 후인 23:31:59에 Circle이 이를 블랙리스트에 올렸습니다.• 비트코인, XRP, 솔라나, 옵티미즘 관련 펀드는 아직 이동하지 않았습니다. BTC는 19개의 지갑에 분산되어 있으며, 그중 17개 지갑은 각각 정확히 1,000 BTC를 보유하고 있습니다
약 23:50 UTC 기준 현황:
동결됨, 약 28억 달러
• 이더리움상 13억 8천만 USDT, 트론상 3억 7,870만, 아발란체상 841만 (테더)
• 8억 2,460만 USDC (서클)
• 4,050만 RLUSD (리플), 2,780만 USD1 (월드 리버티), 12,574 XAUt (테더), 29,934 wBETH (바이낸스), 1,907 PAXG (팍소스), 4,850만 WLFI
동결되지 않음, 약 32억 7천만 달러
• 18,270 BTC, 14억 2천만 달러
• 9개 지갑에 분산된 458,770 ETH, 10억 3천만 달러
• 2억 3,350만 XRP, 2억 8,900만 달러
• 6억 8,460만 TRX, 2억 4,300만 달러
• 이더리움상 기타 토큰 약 1억 3,600만 달러
• 970,500 SOL, 9,300만 달러, plus ARB, AVAX, OP 약 4,800만 달러
추가로 6,000만 USDT가 Aave 담보로 묶여 있습니다.
참고: BTC, XRP, 트론상의 전송은 타이밍과 거래 지문을 통해 연결되었습니다: 동일한 시간대, 완전히 새로운 수신 주소, 바이낸스 자체 출금과 다른 수수료 및 거래 형식. 도난 금액은 UTC 20:24 가격으로 계산되었으며, 현재 보유량은 UTC 23:50 전후 가격으로 계산되었습니다.
모든 거래 및 동결에 대한 온체인 증거는 아래 게시물에 첨부되어 있습니다. 제가 놓친 부분이 있다면 알려주세요!