[閒聊] 以太貓搶救大作戰—北科大教授錢包救援
看板DigiCurrency (數位貨幣)作者ZMTL (夜風/瀟湘 VR板已經開板!)時間5年前 (2018/12/17 18:34)推噓25(26推 1噓 10→)留言37則, 28人參與討論串1/1
因為老師沒在用批踢踢,但又想分享這曲折離奇的搶救過程,
內文包含了私鑰意外流出的經過及提醒、
被盜取後錢包的狀態,以及如何搶救可轉移的DAPP資產。
以下為代PO。
--
原文標題:
以太貓搶救大作戰-北科大教授暗夜暴氣深入區塊鏈救出受駭小貓實錄
原文(完整圖文版):
https://medium.com/@daaab/528a1095ff71
作者:
寶博士(dAb)葛如鈞
https://medium.com/@daaab/
--
楔子 — 深夜的熱錢包通知
事情是這樣開始的 — 2018 年 12 月 15 日晚上 10 點 49 分,正在電腦前工作的我,
收到一則手機通知,內容顯示有大約 0.096 ETH(大約 美金 8.44 元的以太幣)
從尾號 99a80 的以太幣錢包被轉出。
https://cdn-images-1.medium.com/max/800/1*mdCGZLxLpIyROlO7xZaYJw.png
想想不對,這錢包帳號看來是明明是太太的(同步匯入到我的手機錢 包App 幫老婆代管
)但我什麼都沒做,怎會無端有錢轉出?啊!突然想起週末前拜託學生將某個 Unity
VR 挖礦遊戲程式碼(內有錢包私鑰!)上傳到實驗室 GitHub 帳號,方便後續管理更新
… 再一想,實驗室 GitHub 帳號才剛創好還沒付費,學生上傳程式碼,肯定只能上傳
成 Public Repo(公開專案)…印象中區塊鏈高手 — 圖靈鍊公司創辦人 Je Hu & 李婷
婷 Lee Ting Ting 上回才跟說,有駭客專門寫程式掃描 GitHub 公開專案裡的錢包私鑰
,一旦掃到,就會瞬間把錢提走。看來,事有蹊蹺!不妙!
私鑰洩漏,錢被偷了!
馬上私訊學生詹閔翔「你是不是在上傳 Unity VR 挖礦專案到 GitHub? 」學生回說對,
正在整理…
「私鑰被偷了!快停止作業!XD」
檢查一下錢包記錄,裡頭的錢確實在內含私鑰字串的程式碼上傳到 GitHub 平台的公開專
案後,被瞬間領走!戶頭裡只剩下小小乾乾的 0.001 ETH 左右 — 一共 0.0968 顆以太
幣(折合台幣約 250 元)被偷; 這不打緊,要緊的是,這是太太的錢包,裡頭不只有錢
,還有兩隻超 級珍貴的以太加密貓!一隻是 Tabby 一隻是 DocPurr,都屬於限量的 「
奇異貓咪系列」當中稀有的,各僅限量 250 隻!外加另外三隻普 通貓,一共五隻,竟然
就這樣通通落難到了駭客的手中!
https://cdn-images-1.medium.com/max/600/1*wRx2cmJr4becdY4B5n2cbw.png
兩隻比較貴的限量奇異貓都個別取過名字,一隻叫做「Dora Meow(朵拉喵)」(寶夫人
名叫 Dora / 朵拉),另一隻長得像酷愛 做研究的怪博士,因此就隨著筆者外號寶博士
,名為「寶博士喵」。 兩隻一起可以說完全是天造地設不可竄改般的永恆存在;前者在
250 隻限量 Tabby 貓當中編號第 186 號,後者在 DocPurr 貓 250 隻裡頭, 編號第
150 號;總之,都相當罕見!要能同時擁有,恐怕天下沒有幾人(至少自以為)。
名貓有主,卻身陷囹圄
就當時狀況看來,駭客已經透過網路爬蟲取得了太太錢包的私鑰,可 說是擁有了完全控
制權,隨時可能把太太錢包裡頭所有的貓都偷走!
註:以太貓是一種非同質貨幣(ERC721),每一顆都有獨一無二的編號及不可取代性,
只要購買後,就可以存在錢包裡「真正地擁有 它」,但只要付手續費,也可以隨
時把它轉送給他人。
目前被駭錢包內的 Dora Meow 所屬的 Tabby 奇異貓目前市價不低, 便宜的一隻認養費
要 0.75 ETH(以太幣),高出駭客所得 — 0.0968 ETH近 10 倍;而寶博士喵所屬的
DocPurr 奇異貓現今更是要價不 斐,低認養費就要 1.87 ETH!就算是今天(
2018/12/16)熊市當前,折合新台幣依舊要超過 5,000 元!
太太的禮物
談錢傷感情,先不講這兩隻貓一隻在今年 3 月入手時花費 0.28 ETH, 以當時 一枚以太
幣是 $864 美金,那隻貓的認養價格折合台幣就要大 約 7,000 元;另一隻今年 8 月時
花費 0.4 ETH 認養 以當時 1 ETH 是 USD$321 來說,認養費要近新台幣 3,800 元!重
要的是,這兩隻 貓都是送太太的禮物!而且送出去後,每每想要回來放入自己的私人 貓
藍拿來炫耀、晒貓,都被太太嚴詞拒絕(笑),沒想到現在竟然雙 雙落入駭客手中,隨
時有可能被搶走、變賣!這怎麼可以!?一定要 救回來!一喵都不能少!
救貓行動開始!
一開始我很天真,想說私鑰被盜,等於我跟駭客兩人都可以控制這個 錢包(和裡面的貓
),所以理論上只要我能比駭客早用這個錢包登入以太貓官網:CryptoKitties.co 謎戀
貓,利用平台內建的「贈送」功能,迅雷不及掩耳地趕緊把貓轉移到安全的錢包裡就沒
事了,沒想到…
ALERT! Insucient Fund! (資金不足)!
https://cdn-images-1.medium.com/max/800/1*MOXlrADFNvoRmw20sV339w.png
沒錯!妳應該也想到了,以太坊區塊鏈上的每筆操作,包括以太貓平 台上的認養貓、出
售貓、生小貓等等,都需要所謂的「燃料費(Gas Fee)」,也就是需將以太坊區塊鏈網
路運算/執行合約所必要的「算 力費用」支付給礦工,所以如果錢包裡沒有錢(以太幣)
,就勢必無法做任何操作!且是連送出交易的機會都沒有 — 轉移貓咪需要的交易 確認
按鈕「CONFIRM」,根本按不下去!
救貓行動 Part 2!
好,這時我開始進行第二步計畫:試著用另外一個錢包,轉一點錢 (以太幣)進這個被
駭錢包,然後用快的速度登入這個被駭錢包所 屬的以太貓帳號,點選「贈貓」按鈕,把
貓迅速送出去。
果不其然,這個計策還是失敗了!每一次轉進被駭錢包的以太幣,都 以迅雷不及掩耳的
速度被轉出,轉到駭客的錢包裡(目前駭客所得超 過 12 個以太幣)。從下圖可以看到
從下方的「OUT (被盜/轉出) 0.0968 ETH 」事件發生後,我就多次試著轉帳 0.02,
0.01, 0.01, 0.01 其中光 0.01 ETH 我就轉了三次,每次都是想要比速度,希望能搶在
駭 客程式作動前,用手速把貓轉出。但是都輸了… 而且那些錢又通通再 被駭客的吸金
大法給吸走!(跪)
https://cdn-images-1.medium.com/max/1000/1*3pLRWO0_Lf-N_vnKgVcbqw.png
我開始感到萬念俱恢
看來駭客應該是取得私鑰以後,便透過電腦程式不斷自動偵測該錢包 餘額及動作,只要
有新的錢進到錢包,立刻就會啟動吸金轉移大法,把錢吸走。
怎麼辦呢?
只好向近區塊鏈圈傳說中的神祕的組織,如同光明會、共濟會一 般的存在 — 0x1 學院
(0x1 Academy)成員求救。
https://www.0x1.academy/-LRGqRpaO05clgxM6SQN/
進入 0x1 組織的核心群組
為了向 0x1 區塊鏈高手求援,我進入了 0x1 組織的核心群組「0x1 Core」,在那裡,
我對群組說道:
發生了慘劇,我想要救貓。 — 寶博士
其中強的某兩個成員(他們經常被認為是同一人),在瞭解情況 後,回覆說「我們試試
看」然後就消失了。
幾分鐘過去,J 回覆了。
“打0.000333進去” — J說
我原先還有點懷疑,但想說既然 J 說得肯定,我也沒有不去試試的道理。
成功了!!竟然沒有被轉走!
神祕的 0.000333 ETH 就這樣巧巧地作為先遣部隊,深入了敵營,進入了被駭的錢包而沒
有被駭客發現。
錢包裡多了錢,燃料費應該就足夠了,便趕緊去轉貓!轉幾隻呢?先轉一隻,而且得先
轉一隻貴的!
第二個神祕數字出現了:
“永遠不要打超過0.00168” — J說
如同神諭一般,不知為何,J 就是知道能夠怎樣避開敵方駭客的火線… 其實有原因,但
總之那時先無法理解思考這麼多啦,最最要緊的,是要救貓!搶回寶李一家的重大資產,
而且要救就要先救最貴的— 寶博喵!
緊張時刻
要知道,現下我們所有動作都在駭客的眼皮底下,不只在區塊鏈上可以查看我們的所有交
易記錄(包括剛剛摸進去的 0.000333 ETH)駭客更可以隨時把我們所有錢跟貓瞬間領光
轉走,甚至透過智能合約封鎖外部的所有行動!
第一隻貓救援成功!博士貓順利出脫!
我們順利的在駭客眼皮底下救走一隻價值台幣 7,000 元的以太貓!!
時間就是金錢,接下來的動作要快,下一隻要救的貓也是不便宜。駭客非常可能針對駭入
的錢包隨時有在進行「異常行為偵測」,並在發現受害者的行動後,做出防護或反擊。雖
然我在聊天室裡和 J 的對談口氣依舊輕鬆,但按下另外一筆 0.000333 ETH 轉出按鈕時
,手指卻是顫抖的。
成功了!第二批援救部隊又進去了!
https://cdn-images-1.medium.com/max/2000/1*UwlrTO1ysHFjIqhjdQRzyw.png
從上圖的區塊鏈記錄來看(依據時間由下至上),可以很清楚的看到,「0.000333 ETH」
救援部隊一共進去了三次,第一次帶回了寶博喵,第二次帶回了朵拉喵以及另外一隻貓,
第三次則帶回了第四隻普通喵。
自此,寶博士喵和朵拉喵都被營救回了寶博士名為「D Furball」的貓藍;看起來都鬆了
一口氣呢(咦 XD),開心地和其他的奇異貓咪們簇擁在一起~
https://cdn-images-1.medium.com/max/1000/1*q3G75YtyD4C2IZp6-BeoSg.png
總之就這樣,從 2018/12/15 晚間 11:47 至 2018/12/16 凌晨 0:18 一共將耗費近半小
時的時間,轉了三筆營救用的以太幣,一共 0.000999 ETH,把四隻貓給順利救了回來!
最後兩隻被救回的貓,看起來果然還是有點驚魂未定。
ONE MORE THING…
故事還沒結束(!)
我原先刻意留下了最後一隻貓在受駭錢包裡(如下圖—是在 TFF 台北金融發展基金會
帶 FinTech eMBA 區塊課時所生),想說也許 J 會想玩玩別種營救方法;
如果 J 他們沒動作,也許之後自己也來創些新的營救方法把它救出,就姑且讓牠留在被
駭錢包裡一段時間好了… 結果…
https://cdn-images-1.medium.com/max/800/1*jpyBI4zDQn8UVhJxKCoI6g.png
就這樣,一念之間一隻貓的命運就此改變!
2018/12/16 凌晨 0 點 58 分,原先沉靜的錢包突然動了起來!
我因為還在研究駭客的收款錢包,想要試著找出駭客的來源線索,另外也還沉浸在救貓成
功的喜悅裡,所以還沒睡,突然看到手機又 叮.叮.叮 的連續跳出好幾則通知,顯示有幾
筆款項轉進了受駭錢包,接著幾則交易被接連產生;我心生好奇但不疑有它,想說被駭錢
包裡面也幾乎沒錢了,貓也算是都救走了,猜測大概是 J 他們可能在玩些什麼把戲,我
也就沒注意。
沒想到,過了一小時, J 說他的營救記錄寫好在 Medium 上了,要我過去看看,一看發
現,竟然不是 J!
J 並沒有在營救完成後去動那個錢包,而是駭客動了!
駭客暴怒偷走了最後一隻貓!
根據記錄,被駭錢包在我們營救完四隻貓的半個小時後,這不知名駭客作了一連串任誰都
難以想像到的事— 他連續轉入了兩筆 0.003 ETH 以及 0.002 ETH 一共 0.005 以太幣,
然後把後一隻貓,加上剩餘在錢包裡的後一點錢,全部捲走了!
後的這幾筆操作記錄已原原本本、永永遠遠的紀錄在以太坊區塊鏈上頭,永遠不會消失
。上圖中的下方一筆,就是 2018/12/16 凌晨 0 點 58 分 13 秒 錢包突然動起來的第一
筆。駭客原先只是發現「錢包裡怎麼還有錢?」後,轉了一小筆手續費(0.003 ETH)進
來,把後一滴以太幣榨乾…
接著,駭客顯然發現了我們前面的幾筆轉帳記錄,發現了神妙無比的救貓大作戰,他心
想我們可能是難得一見的(以太)貓藏家,還見我們花費如此神力(神祕的 0.000333
部隊)把貓救走,除了懷疑貓可能很有價值外,也可能很氣的一查發現,我們轉走的每
一隻貓的市場 價格都是他偷走的以太幣數量(0.0968 ETH)的數十倍 XDD!駭客在暴怒
之餘,也許心想後一隻貓就算沒有價值賣不出去,也要把貓給搶走洩憤!
https://cdn-images-1.medium.com/max/2000/1*wUxeWGySE4NTeCeHXbhSpA.png
最後一隻小貓被劫走的轉帳記錄…
駭客畫像
以下整理上述一連串的動作以及時間距離,並試圖描繪駭客的行為樣貌:
1.2018/12/15 深夜 10 點 49 分,駭客吸了寶夫人的錢包共 0.0968 ETH,轉移至偷盜
物資集中錢包
2.2018/12/15 深夜 11 點 47 分 43 秒,小貓拯救行動開始,第一批 0.000333 ETH 抵達
被駭錢包!
3.2018/12/16 凌晨 0 點 18 分 57 秒,小貓營救行動結束,第四隻小貓離開被駭錢包!
轉移至寶博士安全錢包 — D Furball 貓藍。
4.在大約這段時間,駭客發現被駭錢包裡還有零錢(估計是有寫一個重新掃描程式,會回
傳還有錢但吸金大法沒有吸走的帳號是哪些)以及一隻貓!
5.2018/12/16 凌晨 0 點 33 分,駭客疑似嘗試轉移第五隻(後一隻即將被盜小貓),但
後因不明原因放棄
6.2018/12/16 凌晨 0 點 58 分 駭客轉進了 0.003 ETH
7. 56 秒後,錢包裡後剩餘的錢被榨乾轉出— 駭客的吸金程式控 制被駭錢包當下轉走了
僅存的 0.00153736726 ETH(大約新台幣3.9元)
8.過了 4 分鐘 28 秒,估計此時駭客似乎發現了我們此前的拯救行動,他怒而轉進了
0.002 ETH(大約新台幣 5 元 — 竟然比他前次 榨乾轉走的錢要多!)要進行後的邪惡
舉動!
9. 2 分鐘 17 秒後,估計駭客利用這段時間以被駭錢包登入 CryptoKitties 網站 ,手動
操作以太貓的轉移功能,把貓偷走了! (*請先記住這裡有個疑點「為何上一筆 0.002
ETH 過了 2 分 17 秒卻沒有被吸金程式轉走?」)
10. 2018/12/16 凌晨 1 點 17 分整(距離駭客的上一個行動足足又過了 8 分鐘又 46 秒
) 被駭錢包裡的後一個動作出現了: 0.00098 ETH(相當於新台幣 2.7 元)被轉移至駭
客集資錢包,整個攻擊偷盜行動正式結束。
駭客手動登入的證據:
https://cdn-images-1.medium.com/max/1000/1*6M8cpytnjagUCxem-nvLOg.png
如果是用呼叫合約的方式轉移貓咪,在以太貓的介面上就不會留下歷史紀錄,而謎戀貓網
站上,若用被駭錢包登入確實可以看到最後兩筆資料(轉移被盜小貓)均有留下記錄,那
麼就駭客就一定是手動轉移而非使用智能合約程式盜走小貓;幾乎可以百分之百確定—
駭客確實曾經手動登入謎戀貓網站。
*請注意上圖倒數第二個 00:33 分的轉移記錄,這筆記錄至今是個謎, 估計是駭客可能
更早的時間(凌晨 0 點 33 分 — 這筆沒有顯示在被駭 錢包記錄上)就曾試圖偷走貓,
但發現錢包裡的錢不夠,得手動停掉 吸金程式碼,因而放棄轉移,並且有了 凌晨 0 點
58 分 後續一連串的動作。
好!在進入結語之前,先讓我們替這隻傳奇被盜小貓默哀兩行。
結語
好!總結這次精采萬分(其實是狠蝦想哭)的事件,我們學到了:
1.千萬不要在公開的網路平台上露出錢包私鑰 — 就算需要帳號密碼 登入的也一樣!許多
平台只要單一組帳號密碼登入,就能看到許 多公開文件,諸如 Pastebin, Gist, 或這次
的 GitHub
2.平時多燒香,多認識朋友,這次靠 0x1 Friend 總算在夠短的時間之內把貓轉走,雖然
犧牲了後一隻貓(我的錯 QQ)但至少總 損失控制在 0.1 以太幣(現價約新台幣 250 元
)以內,不致於讓整個週末毀於一旦。
3.大家都知道私鑰被盜會損失錢財,但這次經驗告訴我們,整個 「被盜」是有過程而且有
一定機率和駭客搶物資、搶錢財的!主 要原因就出在以太坊的操作、轉帳、轉貓需要手
續費的特性,使 得被盜錢包的所有權雖然被盜走了,但裡頭的幣和物資將不會「立刻」
被轉走!雖就此次案例而言,尚未知是程式造成還是人 為因素,但總之會有一定的時間
差!這就是黃金搶救時間!
補充:後續觀察發現,在 11 月中該名駭客便曾利用類似手法慘絕人寰的劫走了尾號「
Cb4B1」的帳號至少 1,200 枚 TrueUSD 穩定幣(價值至少台幣 3 萬 6 千元)。該被盜
錢包擁有者似乎進行了類似本文一開始進行的拯救行動,轉了兩次 0.01 ETH 試圖把
TUSD 轉出,但均告失敗,最後落入被駭客手動榨乾的悲慘結局。
此外,由於以太貓咪的特性是,無論歷史如何演變,貓咪如何移轉;單隻貓咪的移轉歷
史紀錄永遠獨立於其他貓咪(這點和一般區塊鏈代 幣資產不同);因此,雖然我們失去
了這隻小貓,但我們原則上可以永永遠遠的追查牠去了何方,究竟轉移給了誰,認養費
被掛了多少,通通可以在區塊鏈上看得到 ,直到千秋萬世 — 以太坊區塊鏈崩毀的那
一天!
被盜小貓目前為止的身世
https://cdn-images-1.medium.com/max/1000/1*EKZRSpDXuCYNJyOiLzvsCg.png
可以看到,被盜小貓在 232 天前誕生之後,一共經歷了四次轉移,第 三次來到了朵拉貓
的家,第四次就是駭客偷盜的紀錄了。
讓我們再次緬懷牠
雖說小貓是被盜走了,但其實駭客也相應地付出了0.000815 ETH 的轉 移手續費,總計轉
入了 0.03+0.02 一共 0.05 ETH 的總成本;所以也不算是被免錢認養啦(笑)!而且,
我們將永遠能透過檢查鏈上交易記錄,知道這隻被盜小貓到底後流落何方。
而在戰火之下被救走的小貓們呢?
早就被寶教授暴氣派遣網路部隊營救受駭迷戀貓後,勒令乖乖繼續寫論文啦!
如果想閱讀事件的英文版記錄,歡迎查看 J 的 Medium 文章:
https://medium.com/coinmonks/c465e65ebbf5
如果你覺得這篇文章有趣或有用,請幫忙按下方的 Medium 拍掌按鈕鈕(最多50下)
拍得越多,寶博士就能多喝幾杯咖啡唷。
也歡迎註冊後追蹤 我的 Medium 還有 我的臉書。寶博士感謝您
https://medium.com/@daaab
https://www.facebook.com/dAAAb
--
文章這麼長我知道一定有人END XD,閱讀方便的話就點選Medium連結當小說看吧!
之前也上過老師在北科開設的免費的18小時0x1區塊微學分班
https://medium.com/@daaab/c5a61f5ee625
才算是真正開始入門區塊鏈的技術,雖然不知道下次再開設是什麼時候了,
但我覺得算是蠻扎實的課程可以持續關注。
(雖然之前來板上找鏈圈資訊時,大部分的講座好像板友普遍認為都... XDDD)
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.171.220.168
※ 文章網址: https://www.ptt.cc/bbs/DigiCurrency/M.1545042847.A.050.html
※ 編輯: ZMTL (118.171.220.168), 12/17/2018 18:37:20
推
12/17 18:40,
5年前
, 1F
12/17 18:40, 1F
推
12/17 18:47,
5年前
, 2F
12/17 18:47, 2F
→
12/17 19:01,
5年前
, 3F
12/17 19:01, 3F
→
12/17 19:01,
5年前
, 4F
12/17 19:01, 4F
→
12/17 19:14,
5年前
, 5F
12/17 19:14, 5F
推
12/17 19:43,
5年前
, 6F
12/17 19:43, 6F
推
12/17 19:51,
5年前
, 7F
12/17 19:51, 7F
推
12/17 19:56,
5年前
, 8F
12/17 19:56, 8F
推
12/17 20:01,
5年前
, 9F
12/17 20:01, 9F
推
12/17 20:26,
5年前
, 10F
12/17 20:26, 10F
※ 編輯: ZMTL (118.171.220.168), 12/17/2018 20:36:03
推
12/17 20:58,
5年前
, 11F
12/17 20:58, 11F
推
12/17 21:26,
5年前
, 12F
12/17 21:26, 12F
推
12/17 21:30,
5年前
, 13F
12/17 21:30, 13F
推
12/17 22:02,
5年前
, 14F
12/17 22:02, 14F
推
12/17 23:50,
5年前
, 15F
12/17 23:50, 15F
推
12/17 23:52,
5年前
, 16F
12/17 23:52, 16F
推
12/18 00:22,
5年前
, 17F
12/18 00:22, 17F
推
12/18 00:33,
5年前
, 18F
12/18 00:33, 18F
→
12/18 00:33,
5年前
, 19F
12/18 00:33, 19F
→
12/18 00:34,
5年前
, 20F
12/18 00:34, 20F
推
12/18 00:39,
5年前
, 21F
12/18 00:39, 21F
推
12/18 03:04,
5年前
, 22F
12/18 03:04, 22F
推
12/18 11:43,
5年前
, 23F
12/18 11:43, 23F
推
12/18 15:29,
5年前
, 24F
12/18 15:29, 24F
推
12/18 22:35,
5年前
, 25F
12/18 22:35, 25F
推
12/18 23:16,
5年前
, 26F
12/18 23:16, 26F
推
12/19 02:29,
5年前
, 27F
12/19 02:29, 27F
推
12/19 09:46,
5年前
, 28F
12/19 09:46, 28F
推
12/19 15:00,
5年前
, 29F
12/19 15:00, 29F
推
12/19 23:14,
5年前
, 30F
12/19 23:14, 30F
噓
12/20 16:47,
5年前
, 31F
12/20 16:47, 31F
推
12/20 16:49,
5年前
, 32F
12/20 16:49, 32F
→
12/24 06:45,
5年前
, 33F
12/24 06:45, 33F
→
12/24 06:45,
5年前
, 34F
12/24 06:45, 34F
→
12/24 06:45,
5年前
, 35F
12/24 06:45, 35F
→
12/24 06:45,
5年前
, 36F
12/24 06:45, 36F
→
12/24 06:45,
5年前
, 37F
12/24 06:45, 37F
DigiCurrency 近期熱門文章
PTT數位生活區 即時熱門文章