Penguin logoPenguin TradingFind value beyond consensus
← Crypto News

Binance Hot Wallets on 8 Chains Hacked for $6.28 Billion: Full Breakdown of the Hacker Attack Timeline and Breach Sequence

Author: Dickson (@DicksonWuML)

Compiled by: TechFlow

TechFlow Summary: The hacking of Binance's hot wallet is the biggest event in the crypto market today. CertiK engineer and SEAL member Dickson tracked on-chain records transaction by transaction, reconstructing the attacker's entire process from preparing funds by withdrawing from Tornado Cash, authorizing control over Binance's Ethereum hot wallet via EIP-7702, to racing against issuers like Tether and Circle to freeze the assets. All amounts and times in the article are on-chain statistics made by the author at the time of posting (approx. 8 AM Beijing Time on Oct 30), in UTC (+8 hours is Beijing Time), and have not yet been officially confirmed by Binance.

Binance's hot wallet lost approximately $6.28 billion across 8 chains today. Of this, $6.07 billion was transferred within the first 55 minutes, after which the attacker repeatedly swept one of the Ethereum wallets for over two hours.

Since then, Tether, Circle, Ripple, Paxos, World Liberty, and Binance have frozen approximately $2.80 billion. Approximately $3.27 billion remains freely transferable, primarily in BTC and ETH.

I have fully traced the entire incident on-chain, including how the attacker managed to move the funds before they could be frozen 🧵

Breakdown of the $6.28 billion (at UTC 20:24 prices):

• Ethereum: $3.74 billion

• Bitcoin: 18,270.2 BTC, $1.47 billion

• Tron: 612.7 million USDT + 46.4 million TRX, $627.5 million

• XRP: 233.5 million XRP, $296.5 million

• Solana: 970,522 SOL, $96.1 million

• Arbitrum: 8,426 ETH + 74.6 million ARB, $31.8 million

• Avalanche: 1.81 million AVAX + 8.41 million USDT, $24.3 million

• Optimism: 44.2 million OP, $4.8 million

The $3.74 billion on Ethereum flowed out in five batches:

• At 20:24:23, a single sweep() was executed on Binance 14: 167,464.25 ETH, 1.615 billion USDT, and 61 other tokens, totaling $2.53 billion

• At 20:41 and 20:59, 780 million + 43 million USDC were transferred out from a Binance smart wallet trusted by Binance 14, totaling $822.6 million

• At 20:24:47, Binance 16 signed 9 transfers directly to the attacker: 28,005.6 ETH, 55.7 million USDT, 25.9 million RLUSD, 84.5 WBTC, 820,000 UNI, 1,199 XAUt, 18.8 million ENA, 304,600 LINK, and 583.6 billion PEPE, totaling $174.2 million

• At 21:04 and 21:44, two supplementary sweeps on Binance 14: 2,070 ETH and 204.3 million USDT, totaling $209.6 million

• At 22:39, the final sweep to a new wallet: 128.5 ETH and 122 small-cap tokens, approximately $500,000

By asset: USDT $1.87 billion, USDC $823 million, ETH $457 million (197,668 ETH), RLUSD $88.5 million, wBETH $76.8 million, XAUt $50.5 million, UNI $49.6 million, ENA $44.7 million, PEPE $40.1 million, LINK $29.6 million, USD1 $27.8 million, plus approximately 50 smaller tokens.

Preparations began the day before. On October 28 at 07:39 UTC, the attacker's main wallet 0x7c8601d4645b93cea45f71e118a729332e6b5ca0 withdrew 0.1 ETH from Tornado Cash for the first time, followed by two more withdrawals. Subsequently, a second wallet withdrew 1 ETH from Tornado and transferred it to the main wallet at 18:20 on October 29.

At 02:28 on October 29, they deployed a sweeper contract. Between 13:51 and 16:47, they rehearsed on their own wallets: using EIP-7702 delegation to sweep test USDT and USDC, then withdraw them. At 15:59, they launched a v2 version with a universal call function, which was later used to transfer out 823 million USDC.

At 20:04:52 UTC, the first step failed. Binance's XRP wallet sent 42,750,000.1 RLUSD to the attacker, but since the attacker's XRP account did not exist yet, the transfer was returned.

Eight seconds later, a transfer of 185,017,485.5 XRP succeeded, creating the account in the process. By 20:09, four other Binance XRP wallets were also drained.

The chain reaction then unfolded:

• At 20:10, Solana: a single transaction moved 965,455.1 SOL

• At 20:18, Optimism: 44.2 million OP

• At 20:20, Bitcoin: 11 transactions moved 18,270.2 BTC, split into chunks of exactly 1,000 BTC within the same block

• Between 20:20 and 20:22, Tron: 612.7 million USDT + 46.4 million TRX

• Between 20:30 and 20:35, Arbitrum and Avalanche

Ethereum revealed the attack vector. At 20:20:59, the attacker broadcasted a transaction carrying 50 EIP-7702 authorizations, all signed with Binance 14's private key, corresponding to nonces 18,914,775 to 18,914,824.

Binance 14 itself had just used 18,914,775 at 20:17:47, indicating these authorizations were signed just minutes before use.

The authorization with nonce 18,914,809 matched perfectly. Binance 14's own transaction in the same block used 18,914,808, meaning from this moment onward, Binance 14 was executing the attacker's code.

At 20:24:23, a single sweep() immediately extracted 167,464 ETH and 1.615 billion USDT. Twenty-four seconds later, Binance 16 signed 9 transfers directly to the attacker. At 20:41 and 20:59, the attacker leveraged Binance 14 to drain 823 million USDC from a Binance smart wallet that trusted it.

Next came the race against freezing. The attacker rapidly broke up the USDT:

• At 20:30, 500 million USDT was transferred to 0x9749…c762. By 20:59, 325 million had already been swapped for ETH via an RFQ market maker, with the remaining 175 million continuing to be transferred out

• At 20:33, 200 million USDT was transferred to 0x0ddf…697e. Approximately 10 million was sold on a DEX, while 190 million was moved to 0x8d53…639a, which deposited 60 million into Aave and borrowed ETH against it

Tether's first batch of blacklists took effect at 21:01:35: 0x5227, which still held 971 million USDT; and 0x9749, which had already been drained by then. Circle froze that 823 million USDC at 21:04:59.

Some funds escaped in the final seconds:

• At 21:01:59, 0x8d53 transferred 130 million USDT to 0x77ed…c3eb. 48 seconds later at 21:02:47, Tether froze 0x8d53

• Between 21:04 and 21:06, 0x77ed sold approximately 50 million USDT on a DEX and transferred 80 million to 0x7aa4…bfd1

• Between 21:08 and 21:11, 0x7aa4 sold another ~50 million and moved the final 30 million away. By the time Tether froze 0x7aa4 at 21:12:35, it was already empty

• At 21:16:11, 0xccbe…a263 moved out those 30 million. Thirty-six seconds later Tether froze 0xccbe, and intercepted the 30 million at 0xb171…c8c3 at 21:18:59

• The 175 million transferred out of 0x9749 remained parked at 0xaa24…54a0 until Tether froze it at 21:14:59

In total, out of the 1.875 billion USDT on Ethereum, approximately 435 million was sold before the blacklist caught up. 1.38 billion has been frozen, while 60 million is trapped as Aave collateral.

Actions by other issuers, in chronological order:

• At 20:57:47, World Liberty blacklisted 48.5 million WLFI in 0x5227

• At 21:07:55, Tether froze 8.41 million USDT on Avalanche. The attacker attempted to move them at 21:40:47, but the transaction reverted

• Between 21:09 and 21:21, Tether froze 378.7 million USDT across three wallets on Tron. Prior to this, 234 million had already been swapped for TRX via SunSwap

• At 21:11:23, Tether froze 12,574 units of XAUt (approx. $50 million)

• At 22:00:59, Ripple froze RLUSD. The attacker had already moved it to 0xe702…958d at 21:33 and sold 48 million for ETH; the last sell order fell in the same block as the freeze. 40.5 million was intercepted

• At 22:10:35, World Liberty froze 27.8 million USD1

• At 22:30:47, Paxos froze 1,907 units of PAXG

• At 22:48:35, Binance blacklisted 29,934 units of wBETH (approx. $75 million), which the attacker had previously moved to 0x7f9d…15e3 at 21:52

3.45 million FDUSD from First Digital remains freely transferable as of now.

Binance 14 remained delegated to the attacker's contract, leading to a tug-of-war:

• At 21:04 and 21:44, the attacker swept again: first 1,700 ETH, then 370 ETH and 200.4 million USDT. This USDT landed in 0x5227, which had already been frozen by Tether

• At 22:06:23, Tether blacklisted Binance 14 itself. Binance's own USDT transfers from this address failed both at 22:15 and 23:01

• At 22:39, the attacker swept once more, this time to a new wallet: 128.5 ETH and 122 small-cap tokens

• Between 22:55 and 23:07, Binance itself drained Binance 14: sending 46 token transfers to Binance 8, roughly one every 12 seconds

• Between 23:36 and 23:38, the attacker called sweep() four more times, all resulting in zero balances

Off-Ethereum:

• Arbitrum, between 21:35 and 21:38: all 8,426 ETH and 74.6 million ARB were transferred to a new 7702 wallet 0x3e2b…32d5, which authorized ARB for trading at 21:41. As of 23:50, they remain in place

• Avalanche, at 21:45:34: 1,813,999 AVAX was transferred to 0x8035…c397. Subsequently, 200,005 AVAX was moved out from 0xc39e…9824, and at 23:27:35 the same address received 1,563,812.78 USDC on Ethereum via Circle's CCTP cross-chain bridge. Four minutes later at 23:31:59, Circle blacklisted it

• Funds on Bitcoin, XRP, Solana, and Optimism remain untouched. BTC is distributed across 19 wallets, 17 of each holding exactly 1,000 BTC

Current status as of approx. UTC 23:50:

Frozen, approx. $2.80 billion

• 1.38 billion USDT on Ethereum, 378.7 million on Tron, 8.41 million on Avalanche (Tether)

• 824.6 million USDC (Circle)

• 40.5 million RLUSD (Ripple), 27.8 million USD1 (World Liberty), 12,574 XAUt (Tether), 29,934 wBETH (Binance), 1,907 PAXG (Paxos), 48.5 million WLFI

Unfrozen, approx. $3.27 billion

• 18,270 BTC, $1.42 billion

• 458,770 ETH distributed across 9 wallets, $1.03 billion

• 233.5 million XRP, $289 million

• 684.6 million TRX, $243 million

• Approximately $136 million in other tokens on Ethereum

• 970,500 SOL, $93 million, plus ARB, AVAX, and OP, approx. $48 million

An additional 60 million USDT is trapped as Aave collateral.

Note: Transfers on Bitcoin, XRP, and Tron are correlated through time and transaction fingerprints: the same timeframe, completely new recipient addresses, and different fee structures and transaction formats compared to Binance's own withdrawals. Stolen amounts are calculated at UTC 20:24 prices; current holdings are calculated at approx. UTC 23:50 prices.

On-chain proofs for every transaction and freeze are attached in the thread below. If you notice anything I missed, please let me know!