加密貨幣 Python 數位資產 加密貨幣安全 Web 3.0

MetaMask私鑰安全不可輕忽 暴力破解能一夕搬空資產

錢包助記詞破解非難事 駭攻如何竊走虛擬幣

本文探討利用暴力破解法來獲取MetaMask加密貨幣錢包,為了展示暴力破解的實際應用,將說明如何使用Python及相關工具來測試大量助記詞組合,並且設計一個模擬情境演練,描述駭客如何透過暴力破解法成功獲取目標用戶的私鑰,並轉移其加密貨幣資產。

隨著Web 3.0的興起和加密貨幣的普及,保障數位資產的安全變得愈加重要。對此,本文將介紹Web 3.0的基本概念及其特點,並解釋MetaMask作為進入Web 3.0重要門戶的作用。接著,詳細描述MetaMask的組成部分,並強調這些元素在加密貨幣安全中的關鍵作用。

為了展示暴力破解法來獲取MetaMask加密貨幣錢包的實際應用,還將介紹如何使用Python及相關工具來測試大量助記詞組合,並針對助記詞「暴力破解」的難度進行詳細計算,說明破解這些組合所需的巨大計算資源和時間。隨後,透過一個具體的實驗步驟展示暴力破解過程,包括破解過程和私鑰獲取。

此外,本文還設計一個模擬情境演練,描述一名駭客如何透過暴力破解法成功獲取目標用戶的私鑰,並轉移其加密貨幣資產。藉此強調加密貨幣安全的重要性,並提醒用戶採取適當的安全措施來保護其數位資產。

什麼是Web 3.0

Web 3.0亦稱為「第三代網際網路」,是網際網路技術的未來發展方向。與當前的Web 2.0不同,Web 3.0強調去中心化(圖1)、區塊鏈技術和用戶控制權。Web 2.0的典型特徵是網際網路巨頭掌握著大部分用戶資料和網路資源,資源集中在大公司中,如Google、Facebook和Amazon等公司,它們透過提供各種服務來收集和使用用戶資料,從而實現盈利。

圖1  去中心化。

在Web 2.0時代,網際網路服務的提供者在中心化(圖2)的伺服器上儲存用戶資料,並依賴這些資料來提供個性化服務和定向廣告。這樣的模型使得這些企業能夠積累大量的資料資源,從而在市場中佔據主導地位。然而,這種模式也帶來一些問題,包括資料隱私洩漏、資料壟斷以及單點故障等風險。大規模的資料洩漏事件時有發生,用戶的個人訊息安全面臨著巨大的威脅。

圖2  中心化。

而Web 3.0旨在打破這種中心化控制,將權力和資料控制權交還給用戶,這一變革的核心在於區塊鏈技術。區塊鏈是一種去中心化的分布式帳本技術,透過密碼學和共識機制來確保資料的安全性和不可篡改性。區塊鏈的去中心化特性意味著資料儲存在網路中的多個節點上,而不是集中在單一的伺服器中。這樣的設計使得資料更難被篡改或刪除,並且提高系統的容錯能力和安全性。Web 3.0的核心特徵包括以下幾個方面:

1. 去中心化(Decentralization):在Web 3.0中,資料不再儲存在單一的中央伺服器上,而是分布在多個節點上。這意味著任何單一節點的故障或攻擊都不會影響整個網路的運行。去中心化的架構降低資料被篡改或損壞的風險,並且提高資料的透明性和可靠性。

2. 自主身分管理(Autonomous Identity Management):在Web 3.0中,用戶可以透過加密技術來管理自己的身分訊息,保護隱私。這意味著用戶不需要依賴第三方服務來進行身分驗證或資料儲存,用戶可以完全掌控自己的資料,避免傳統網際網路上常見的資料洩漏問題。自主身分管理還允許用戶在不同平台之間自由遷移資料,而不需要擔心資料丟失或被濫用。

3. 智能合約(Smart Contract):智能合約是一種自動執行的程式碼,當特定條件被滿足時,合約會自動執行指令的運作,無需第三方介入。智能合約的應用場景廣泛,包括金融交易、物聯網、自動化管理等。智能合約的優點是透明、不可篡改和高效,這提高交易的透明性和效率,並且減少人為干預和操作失誤的可能性。

4. 去信任化(Trustlessness):Web 3.0透過使用密碼學和分布式共識機制,減少對中央權威的依賴。在傳統網際網路中,用戶需要信任服務提供商來保護他們的資料和隱私。然而,在Web 3.0中,去信任化的設計確保資料的安全性和透明性,即使是在沒有信任基礎的情況下,用戶也能夠安全地進行交易和資料交換。

Web 3.0的出現,代表網際網路技術的一次重大變革。它不僅改變資料儲存和管理的方式,也重新定義用戶在網際網路中的角色和權利。透過去中心化和自主身分管理,Web 3.0賦予用戶更多的控制權和資料所有權,從而實現一個更加安全、透明和高效的互聯網環境。這一變革將深刻影響未來的生活方式和商業模式,推動網際網路技術的不斷創新和發展。

進入Web 3.0的窗口:MetaMask

MetaMask(圖3)是一個熱門的加密貨幣錢包和瀏覽器擴展,允許用戶安全地儲存和管理加密貨幣。同時,它也是進入Web 3.0世界的重要工具,讓用戶可以輕鬆地連接到以太坊區塊鏈並與去中心化應用互動。MetaMask的主要功能包括以下幾個方面:

圖3  MetaMask的Logo。

‧加密貨幣儲存:MetaMask可以安全地儲存以太坊和其他ERC-20代幣,並支援多種區塊鏈網路。

‧交易管理:用戶可以透過MetaMask發送和接收加密貨幣,查看交易歷史和管理地址等。

‧DApp交互性:MetaMask允許用戶直接從瀏覽器存取和使用去中心化應用,無需額外的軟體或硬體設備。

MetaMask的核心組成

MetaMask的核心組成,包括「公鑰(Public Key)」、「私鑰(Private Key)」以及「助記詞(Mnemonic)」。

其中,公鑰(Public Key)是用於接收加密貨幣的地址(圖4)。在Web 3.0上,用戶無法知道對方是誰,雙方只會透過地址進行交易。每個錢包生成的公鑰都是唯一的,可以公開分享,任何人都可以向該地址發送資金。公鑰通常由一串長約40位的16進制字符組成,這些字符看起來像是一長串隨機數字和字母,例如0x1234567890abcdef1234567890abcdef12345678。

圖4  MetaMask的公鑰。

而私鑰(Private Key)是用於簽署交易和存取加密貨幣的密碼。擁有私鑰等同於擁有對應公鑰地址中所有資產的完全控制權。因此,私鑰的安全性至關重要,必須妥善保管,不可洩漏。私鑰通常由一串長約64位的16進制字符組成,這些字符看起來也是一長串隨機數字和字母,例如0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890。私鑰需要嚴格保密,任何人獲得你的私鑰,就能完全控制你的錢包。「Not your key, not your coin」這一句加密貨幣世界的名言就說明了一切,因此必須謹慎保管。

顧名思義,助記詞(Mnemonic)就是幫助記憶的詞(圖5)。助記詞實際上等同於私鑰,但看看上面的私鑰,大部分人是記不住的,這也是助記詞誕生的原因。助記詞是一組用於生成私鑰的單詞序列,通常由12至24個單詞組成,既有英文版,也支援中文。助記詞是錢包的備份方式,用戶可以透過助記詞恢復錢包中的私鑰和資產。助記詞的生成遵循BIP39標準,確保其隨機性和安全性。每個單詞都是從2,048個可能的單詞列表中選出的。

圖5  MetaMask的助記詞。

實際操作

為了展示暴力破解的實際應用,接續前面介紹到的「助記詞」。這裡將展示暴力破解助記詞的實際應用,並透過模擬情境演練進一步闡述此技術的風險和影響。

難度計算

每個助記詞都是從2,048個可能的單詞列表中選出的,如圖6所示。因此助記詞的組合數量為204812,約為5×1039個可能組合。即使每秒可以測試一百萬個助記詞組合,總數量也需要超過1034秒來測試完所有組合。因此,暴力破解助記詞組合在現實中幾乎是不可能完成的,除非擁有極其強大的計算資源。

圖6  MetaMask助記詞的可能性。

準備工具

首先,安裝Python環境,可至官網「https://www.python.org/downloads/」下載。先選擇作業系統,端看是Windows、mac或是其他的作業系統。然後,選擇合適版本,依據自己的喜好或是電腦設定選擇適合的版本。

然後,安裝Visual Studio Code環境。連結至「https://code.visualstudio.com/download」進行下載,並選擇合適版本,如圖7所示。

圖7  選擇macOS  10.15+版本。

程式碼

由於程式碼不便在此頁面展示,可前往以下的網址獲取相關程式碼:

https://hackmd.io/@Rehtegot/bruteforce

程式流程圖

圖8顯示程式的流程圖,用來處理助記詞文件並檢查其中的地址是否有效以及錢包是否有餘額。下面是對每個步驟的詳細解釋:

圖8  程式流程圖。

(一)讀取助記詞文件:流程開始於讀取儲存在文件中的助記詞。這一步驟是將文件中的助記詞讀取到記憶體中,以便進行後續的處理。

(二)搜尋助記詞:讀取完助記詞文件後,下一步是搜尋助記詞,這意味著在已讀取的助記詞中查找特定的訊息或模式,可能是為了生成地址或私鑰。

(三)有無此地址:這一步是檢查是否存在與助記詞對應的地址。這是一個決策點,如果找到對應的地址,則流程繼續;如果沒有找到對應的地址,則流程結束並標記為「不存在」。

(四)該地址餘額=0:如果找到對應的地址,下一步是檢查該地址的餘額是否為零。這是另一個決策點,如果餘額為零,則流程標記為「無效」並結束;如果餘額不為零,則流程繼續。

(五)記錄地址訊息:如果該地址的餘額不為零,則記錄該地址的訊息。這意味著將該地址相關的詳細訊息保存下來,可能是為了進行後續的處理或分析。

建立專案

以下為專案的建立,可以參考並使用自己習慣的方式。首先,在桌面(Desktop)建立一個新的資料夾,命名為「eth」。接著,點擊連結(https://github.com/bitcoin/bips/blob/master/bip-0039/english.txt)下載助記詞的「english.txt」文件,完成後將其移動至剛剛建立的資料夾中,如圖9所示。

圖9  下載english.txt文件。

開啟Visual Studio Code,然後將桌面上的資料夾拖放至Visual Studio Code視窗內,在Visual Studio Code中就會看到資料夾的內容,如圖10所示。

圖10  開啟Visual Studio Code。

在「english.txt」文件下方的黑色欄位按下滑鼠右鍵,然後選擇新增檔案,並將新檔案命名為「eth.py」,如圖11所示。隨後,將程式碼貼上後並且儲存,如圖12所示。

圖11  新增檔案eth.py。
圖12  在eth.py檔案內貼上程式碼後儲存。

執行腳本

打開終端機,Windows為cmd,Mac為bash。根據以下指令進入「eth」資料夾中,如圖13所示。

圖13  打開終端機。

輸入「python3 eth.py」或「python eth.py」執行程式。當程式執行後,打開於桌面的資料夾,會發現有餘額的帳戶地址被儲存在名為「log.txt」的檔案中,如圖14所示。

圖14  資料夾中的log.txt檔。

如圖15所示,打開之後,裡面就包含了「助記詞」、「地址」、「私鑰」。

圖15  log.txt檔案內容。

情境演練

駭客Thomas意識到暴力破解助記詞的挑戰。他知道破解這些組合需要巨大的計算資源和時間,因此計畫使用多台高性能計算機來加速此一過程。他選擇一個目標「Jamie」,一個對安全意識薄弱的加密貨幣用戶。Thomas的動機並非只是資金,而是證明自己在駭客圈子中的實力。

Thomas精心準備了工具,先是安裝Python和Visual Studio Code,然後從網路上搜尋各種破解工具和腳本。他的目的是搭建一個專業的破解環境,確保每一步都能順利進行。

接著開始攻擊,其腳本每秒可以測試數百萬個助記詞組合。整個過程中,他不斷地調整和優化腳本,增加破解速度。期間還使用社交工程手段從Jamie那裡套取更多訊息,如交易地址和助記詞的部分線索,以縮小破解範圍。

透過下載和整理大量資料,Thomas為他的暴力破解專案準備充足的資源。建立資料庫,記錄每個可能的助記詞組合,並設置自動化腳本來檢測和篩選有用的資料。隨著逐步進行破解,他感到離成功越來越近了。

在幾天的密集運算後,Thomas的腳本終於成功生成Jamie的完整助記詞。他迅速用助記詞生成私鑰,登錄Jamie的MetaMask錢包。看到帳戶中存放的大量以太坊和NFT資產,Thomas感到極度興奮,立即將這些資產轉移到自己的匿名錢包中,整個過程僅用了幾分鐘。完成後,他仔細清理痕跡,確保不會被追查。

由此案例來看,在這個數位世界中,安全措施和防範意識至關重要。

結語

透過以上案例和分析,可喚起大家對數位資產安全的重視,並引導用戶提升自身的安全意識和防護措施,從而在Web 3.0世界中更安全地管理和享受自己的數位資產。

<本文作者:社團法人台灣E化資安分析管理協會(ESAM, https://www.esam.io/)國立台北大學密碼編碼與計算理論實驗室創立於2009年,主持人為資訊工程學系特聘教授張仁俊,實驗室的研究領域除包含與資訊安全相關的密碼技術、編碼技術、計算理論外,也涵蓋車載資通訊安全、網路安全、數位影像處理與版權保護、醫學影像、資料分析等領域。>


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!