安全與風險

從交易紀錄複製地址為什麼會轉錯?地址投毒的假紀錄長怎樣、轉帳前怎麼核對

地址投毒會把一個頭尾跟你常用地址相同的仿冒地址,塞進你的交易紀錄,等你下次直接複製。本文用 2024 年 1,155 WBTC 誤轉的鏈上紀錄說明假紀錄長什麼樣,並整理轉帳前取得與核對地址的順序,以及已經轉錯時能做什麼。

從交易紀錄複製地址為什麼會轉錯?地址投毒的假紀錄長怎樣、轉帳前怎麼核對

打開錢包的交易紀錄,上一筆轉帳的收款地址就在那裡,點一下就能複製——這正是地址投毒要你做的事。攻擊者會先產生一個開頭和結尾都跟你常用收款地址一樣的地址,再設法讓它出現在你的交易紀錄裡。錢包多半只顯示「開頭…結尾」,你從紀錄裡複製時,複製到的可能是對方的地址。

這篇用一筆真實的鏈上事件說明投毒紀錄長什麼樣子,再給出轉帳前可以照做的檢查順序。

地址投毒是什麼:攻擊者不碰你的錢包,只改你的「紀錄」

地址投毒不需要你的私鑰,也不需要你簽任何東西。攻擊者做的是:

  1. 監看鏈上轉帳,記下你常轉去的地址。
  2. 大量產生新地址,挑出開頭與結尾跟那個地址相同的一個。以太坊地址是 40 個十六進位字元,只對齊頭尾幾個字元,用一般電腦就算得出來。
  3. 發一筆交易,讓這個仿冒地址出現在你的交易紀錄裡。常見做法是轉 0 元或極小額過來,或用自己部署的假代幣合約,「記」一筆從你地址轉出去的紀錄。

接下來就等你下次轉帳時,從紀錄裡複製「上次那個地址」。

真實案例:一筆假紀錄,74 分鐘後換來 1,155 WBTC 的誤轉

2024 年 5 月 3 日,以太坊上有一筆約 1,155 枚 WBTC 的轉帳被送進了投毒地址。以下時間與數字都可以在區塊瀏覽器上自己核對(時間為 UTC)。

09:17,投毒紀錄出現。 交易 0x9147d74e…e5b957c 的發送者是 0x517DC8…911Db2,不是受害者。但這筆交易呼叫了一個自稱「Ether / ETH」的代幣合約(0x7393…262E,不是以太坊原生幣,也不是任何正式代幣),在代幣轉移紀錄裡寫下一筆「從受害者地址 0x1E2279…538FD5 轉出 0.05 ETH 到 0xd9A1C3…853a91」。同一筆交易裡還混著多筆用假 USDT、假 USDC 合約記下的紀錄,對象是其他地址——攻擊者是一次對很多人撒網。

3xpl 區塊瀏覽器上的交易 0x9147d74e…:2024 年 5 月 3 日 09:17 UTC,發送者為 0x517dc8e5… 而不是受害者,接收方為合約 0xab3393c9…,狀態 Successful、Nonce 197

上圖要看的是 Senders 欄:真正付手續費、發出這筆交易的是攻擊者控制的地址。受害者自己沒有簽過它,卻會在很多錢包和瀏覽器的「代幣轉移」列表裡看到一筆「自己轉出」的紀錄。

10:31,真正的轉帳。 受害者地址發出交易 0x3374abc5…c8f5f570,呼叫 WBTC 合約(0x2260FAC5…bc2C599),把 1,155.28802767 WBTC 轉給 0xd9A1C3788D81257612E2581A6ea0aDa244853a91——也就是 74 分鐘前那筆假紀錄裡的地址。

3xpl 區塊瀏覽器上的交易 0x3374abc5…:2024 年 5 月 3 日 10:31 UTC,發送者為受害者地址 0x1e227979…,呼叫 WBTC 合約 0x2260fac5…,Nonce 4

14:51,資金被轉走。 投毒地址把全部 WBTC 轉到另一個地址(交易 0xfbc6c256…)。

安全公司 SlowMist 的分析指出,投毒地址與受害者原本要轉的地址,去掉「0x」後前 4 碼與後 6 碼相同(SlowMist 事件分析)。受害者原本要轉的地址無法單從鏈上確認,這一點以 SlowMist 的分析為準。

為什麼從交易紀錄複製地址特別危險

  • 縮寫顯示只看得到頭尾。 多數錢包、交易所的提領紀錄都把地址顯示成類似 0xd9A1…853a91,而這正是攻擊者對齊的部分。
  • 假紀錄也會長在「自己轉出」那一欄。 上面的案例裡,受害者從沒簽過那筆 09:17 的交易,紀錄卻顯示成從受害者地址轉出。只看「這是我轉過的地址」並不可靠。
  • 金額為 0 或極小,不會引起注意。 0.05 個假 ETH、0 USDT 這類紀錄,看起來像測試或手續費殘留。
  • 小額測試擋不住。 如果測試和主額都貼了同一個錯地址,測試會「成功」到攻擊者那裡。小額測試的作用與限制,可以對照第一次轉到新地址時小額測試要轉多少。

轉帳前怎麼做:收款地址的取得與核對順序

  1. 每次都從原始來源重新取得地址。 轉到交易所:進入該平台的「儲值 / 充幣」頁面,選好幣種和網路後複製當下顯示的地址;轉給別人:請對方從自己的錢包重新複製傳給你。不要從自己的提領紀錄、錢包的「最近」列表或區塊瀏覽器頁面複製。
  2. 常用地址存進地址簿(白名單)。 第一次確認無誤後,存入錢包或交易所的地址簿並加上備註,之後從地址簿選。存入那一刻的地址一樣要來自原始來源。
  3. 貼上後比對中段,不只看頭尾。 把貼上的地址和來源逐段對照,至少各挑開頭、中間、結尾一段。以太坊地址可以 4 個字元一組對照,中段不一致就停止。
  4. 確認網路與資產沒有被一起換掉。 地址對了但網路選錯,一樣可能收不到;判斷方式見同名代幣怎麼辨認:收幣前核對網路與合約地址。
  5. 送出後保存 TxID。 萬一出錯,TxID 是向平台或收款方說明的依據,三種編號各查什麼見 TxID、錢包地址和訂單編號差在哪。

怎麼看出自己的紀錄裡有投毒交易

打開區塊瀏覽器,貼上自己的地址,切到代幣轉移(Token Transfers)列表,符合下面任一項就要提高警覺:

  • 出現你不記得的轉出或轉入,金額是 0 或極小。
  • 對方地址的頭尾跟你常用的某個地址一樣,中段卻不同。
  • 代幣名稱看起來是 USDT、USDC、ETH,但點進去的合約地址不是正式合約;瀏覽器可能另外標成「未驗證」或「可疑」。
  • 交易詳情裡的發送者(From / Sender)不是你自己的地址。

讀交易詳情的欄位方法,可以參考區塊瀏覽器怎麼看:狀態、確認數、手續費和代幣轉移紀錄。

看到投毒紀錄不需要處理它:它沒有動你的資產,也不需要「退回」或和那個合約互動。真正要做的是確認自己以後不從紀錄裡複製地址;如果錢包有隱藏垃圾代幣或零金額轉帳的設定,可以打開,但不要把它當成唯一防線。

已經轉錯到投毒地址怎麼辦

鏈上轉帳一經確認無法撤回。能做的只有:

  • 立刻保存證據: 你的轉出 TxID、投毒交易的 TxID、正確收款地址。
  • 如果是從交易所提領: 聯絡該平台客服,提供 TxID。平台無法撤回已上鏈的交易,但可以協助確認紀錄。
  • 如果資產是可凍結的代幣(例如 USDT、USDC 這類由發行方管理的穩定幣),發行方在特定條件下可以凍結地址,但通常需要執法機關提出要求,個人直接申請不保證受理。
  • 向當地警方報案,並保留所有紀錄。對方若私訊表示可以「幫你追回」並先收費,這通常是另一層詐騙,見常見的假客服與釣魚手法。

常見問題

有人轉 0 元給我,我的資產會被偷嗎? 不會。0 元轉帳或假代幣紀錄本身不會動到你的資產,也沒有取得任何授權。風險在於你之後從紀錄裡複製了那個地址。

只看地址開頭和結尾各 4 碼夠嗎? 不夠。上面的案例裡,投毒地址與正確地址前 4 碼、後 6 碼都相同。至少還要比對中段。

把地址存進地址簿以後就安全了嗎? 地址簿解決的是「之後不必再從紀錄複製」。存入時那一次仍要從原始來源取得並完整比對;存錯一次,之後每一筆都會送錯。