360 | 數字貨幣錢包APP安全威脅概況

買賣虛擬貨幣

傳送門360 | 數字貨幣錢包安全白皮書

前言

隨著區塊鏈技術的普及,各種數字貨幣得到了很大發展,官方貨幣會發布自己的錢包APP,如Bitcoin Core、Parity,第三方數字貨幣錢包為了進一步提升使用者體驗,同樣開發出瞭如位元派,imToken,AToken等錢包APP,隨著他們出現在市場上,駭客也瞄準了這塊。

2017年,智慧合約公司Parity開發的數字貨幣錢包所使用的多重簽名技術被駭客發現存在漏洞,並導致15.3萬枚以太幣被盜,損失高達價值3260萬美元。

2018年,技術處於全球領先的硬體數字貨幣錢包製造商Ledger在完成7500萬美元的B輪融資後被爆出錢包設計存在缺陷,駭客可透過惡意軟體篡改錢包地址,並將數字貨幣轉給駭客。

2018年Bitcoin Wallet被爆出不正確的私鑰儲存,容易被駭客獲取到私鑰並還原出使用者助記詞。

為了更準確地瞭解錢包APP的安全現狀,近期,我們對應用市場上流通的熱錢包以及冷錢包進行了相關安全稽覈評估,發現了很多安全問題,在此整理成相關文件釋出,幫助錢包APP廠商和使用者瞭解周知其中存在的安全風險,引起大家對安全的重視並且及時自查,避免受到損失。

數字貨幣錢包安全威脅

一個數字貨幣錢包的使用,是包含了從軟體啟動到進行交易的一套完整的過程,其中會涉及到非常多的業務場景,從傳統軟體APP的功能如核心程式碼未加密,軟體自身無校驗,中間人資料劫持等,在錢包APP的業務場景下則會將危害放大,導致使用者的錢財受到損失。同時針對錢包APP的獨有業務場景,如助記詞的不安全儲存,交易密碼設定弱口令,貨幣價格走勢資料被替換等也將會給使用者在使用錢包的安全上造成很大的危害,以下為我們整理髮現的top5的安全風險。

1.    助記詞、交易密碼洩露

位元派為比特幣官方推薦的一支第三方團隊比太開發的錢包應用,目前在Google Play上安裝量達到10000+。

我們在非Root環境下,對其進行錄屏測試,發現在助記詞生成階段無法錄屏,但在匯入錢包時,可以錄下介面,此處可以導致助記詞洩露從而造成數字貨幣賬戶被盜,同時,我們發現在輸入交易密碼時同樣存在可錄屏漏洞,透過觀察按鍵按下順序即可推出交易密碼。

    在錢包業務場景下,需要對相關敏感資訊輸入頁面做防截圖措施,採用相關保護如對當前Activity頁面加入屬性WindowManager.LayoutParams.FLAG_SECURE,使得第三方程式在截圖時直接顯示黑屏,無法記錄。

2.不安全的錢包APP執行環境

數字貨幣錢包APP的一個安全重點就是執行環境,安卓是一個非常龐大而且複雜的系統,我們在實際進行分析測試的時候,發現將近四分之三的APP都未對相關環境做過檢測,能夠直接對APP進行逆向除錯,HOOK注入,來分析APP的執行流程與動態分析加解密演算法過程。我們發現,近八成的錢包APP未對執行環境安全做安全檢測,無法保證使用者執行APP的環境安全,導致使用者錢財受到損失。

如上圖360釋出的中國手機安全狀況報告中,我們可以看到目前安卓手機存在的漏洞非常多,導致APP執行在上面也會有很多安全風險,比如以下幾點。

  1. 手機漏洞的掃描

如果一個手機存在已經披露過的系統漏洞,那麼就時刻處於被駭客攻擊的風險之下,如果存在可提權或者可以獲取到助記詞等敏感資料的漏洞,那麼使用者賬戶就會暴露在一個極其危險的環境下,所以我們建議加上對已知安卓系統漏洞的檢測。

  1. Root環境檢測

安卓實行沙箱機制,如果裝置未Root,在沙箱的保護下,其他應用並不能獲取本應用的資料,如果裝置已Root,我們無法保證執行時的環境的安全性,助記詞等極其重要的資料很有可能被惡意應用獲取到。

  1. APP完整性檢測

APP完整性指的是自身是否被篡改,通常可以透過簽名校驗來實現,防止使用者使用被重打包後的應用。

  1. 網路代理檢測

如果當前網路使用的是代理,那麼就有可能在資料互動的過程中被第三方監聽,造成資料的洩露甚至是敏感資料洩露。

對以上提到的幾個關鍵點,我們分別在不同的環境下進行模擬攻擊,發現近八成APP未對此做安全防護措施,我們可以利用安卓系統漏洞,軟體自身漏洞等進行攻擊測試。同時近一年來,挖礦木馬,錢包APP劫持木馬也開始大量出現,使很多使用者直接受到財產損失,所以建議錢包廠商一定要對此問題重視,並且使用相關漏洞緩解措施。

3.    交易密碼被暴力猜解

大部分的數字貨幣錢包在第一次執行時會提示使用者是否建立新錢包,當使用者建立新錢包後,數字貨幣錢包會透過一系列演算法生成一個私鑰,正常情況下該私鑰並不會展示給使用者,而是會透過助記詞的形式提示使用者進行錢包的備份操作,如下是某款數字貨幣錢包的助記詞介面,該演算法有一套業界標準,透過助記詞可以推匯出私鑰,再由私鑰推匯出其它資料。

在錢包初始化完後,會提示使用者輸入一個交易金鑰,該交易金鑰用於交易之前的私鑰解密推導,當發生交易時,透過輸入的交易金鑰結合演算法進行私鑰的計算,生成的私鑰用於交易的簽名,如果數字貨幣錢包的交易密碼設定不夠強,非常容易被暴力破解,當交易金鑰被暴力破解,整個錢包相當於處於沒有任何防護的狀態,任何人都可以對錢包進行操作,包括轉賬等。

如下為某未使用複雜口令的數字貨幣錢包,直接使用六位數字當作交易密碼,且沒有設定嘗試次數,可以直接被暴力破解出來,進行交易。

建議在APP開發過程中,對於使用者輸入的交易密碼進行弱口令的檢測,同時加上字母或特殊符號來增加複雜程度,保障口令安全。

4.錢包APP偽造漏洞

錢包APP被駭客逆向後加入惡意程式碼,回傳敏感資訊如助記詞,修改交易收款方地址等,對使用者會造成直接錢財損失。所以在使用錢包的時候,一定需要在官方渠道進行下載,同時APP本身如果對軟體完整性未做嚴格的校驗,同樣可以導致相關事件發生。

在2017年底出現的Janus簽名漏洞可以直接應用在此場景下,在修改安卓應用後,利用Janus漏洞對其進行特殊處理,可以繞過安卓系統的簽名校驗對原應用進行更新操作。安卓系統一直以來都是使用V1簽名校驗,當系統已經安裝了一個應用,當對其更行時,會校驗是否是同一個簽名,而在簽名校驗的過程中,系統會預設讀取的是一個ZIP檔案,並且直接從更新包的尾部進行讀取資料,當執行更新檔案的時候,是從頭部開始讀取,如果是Dex就直接執行操作,那麼我們就可以獲取到最新版本的數字貨幣錢包安裝包做如下修改:

  1. 取出Dex檔案,植入惡意程式碼
  2. 原安裝包拼接到修改後的Dex後面
  3. 對拼接後的Dex檔案做檔案頭修復操作

那麼當更新的時候,從尾部讀取資料,讀到的是原APK,可以透過系統對其進行的簽名校驗,當執行的時候,讀取的是我們插入惡意程式碼後的Dex檔案,如果數字貨幣錢包被修改,植入惡意程式碼,比如將轉賬的地址全部替換成攻擊者的收款地址,如果使用者使用偽造的數字貨幣錢包進行更新並且進行轉賬操作,會造成不可估量的損失和後果。

在我們的分析過程中,發現部分數字貨幣錢包依舊使用V1簽名,我們進行模擬攻擊,生成加入惡意程式碼的APP。

雖然谷歌在收到漏洞後就對其做了補丁,但是並非所有手機廠商會及時推送補丁給使用者,建議使用V1+V2簽名的方式對釋出的應用簽名,可以抵抗APP偽造漏洞的攻擊。

5.    核心功能程式碼未加固

安卓應用由於其使用Java語言開發,在未使用加固的情況下十分容易被反編譯出近似原始碼的效果。

而其使用的Smali語言也相對容易掌握,所以在不加固的情況下,數字貨幣錢包十分容易被重打包,重打包的效果如上面提到的偽造漏洞一樣,給使用者使用上造成直接的損失。同時,關鍵資訊的洩露也會讓駭客更加容易分析程式碼邏輯,將於助記詞使用相關的演算法進行提取,逆向分析出加解密流程,利用其它漏洞進行盜取助記詞等資訊。

建議採用加固方案對錢包APP中關鍵功能程式碼進行加固處理,防止被駭客進行逆向分析,提高安全性。

6.    錢包敏感資訊不正確儲存

我們知道,在數字貨幣世界中,最關鍵的就是私鑰,那麼對於使用者,數字貨幣錢包最關鍵的就是助記詞,有了助記詞我們可以推匯出私鑰。所以,如果數字貨幣錢包對助記詞或者私鑰進行了不恰當的本地儲存,將會是一個非常高危的風險。我們在分析一款錢包的時候,發現錢包APP會自動為當前客戶端建立一個錢包,該錢包使用錯誤的方式儲存在了本地,使得在Root裝置上攻擊者可以對該錢包檔案進行解碼並獲取使用者的助記詞,錢包私鑰等錢包資料,如下圖是我們的模擬攻擊過程,其中對隨機生成的助記詞進行了部分打碼。

我們在逆向後,編寫相關程式碼進行資料解密恢復:

建議在開發過程中,對待本地儲存資料一定要做好加密處理,防止資料洩露,直接對使用者的錢財造成損失。

7.    網路資料互動被劫持篡改

當使用者透過數字貨幣錢包進行交易,是否使用合適的加密演算法對交易資料進行加密是衡量網路連線安全很重要的一個維度,不僅僅需要注意其是否對資料進行加密,還要注意是否將助記詞,私鑰等資料傳輸回伺服器,當助記詞等資料被傳輸回伺服器,相當於除使用者之外,還有其他人知道使用者自己的助記詞,當儲存助記詞的伺服器被駭客入侵,極有可能導致賬戶被盜。

另外當錢包存在交易功能之後,對於當前貨幣價格的展示,在網路資料互動過程中可以進行劫持篡改資料,如下圖我們修改的BTC,ETH和XRP的實時價格,展示到使用者手機上。

這樣,對使用者展示頁面也就是駭客希望使用者看到的貨幣價格,間接地誘導使用者對該貨幣進行交易,炒作某一貨幣的兌換價值,在短時間內的大量買賣,間接控制相關價格了。

在此過程,建議廠商對網路互動資料採用嚴格校驗,如使用https,則對證書資訊進行強校驗,防止資料在傳輸過程被篡改。

總結

現階段,市面上有大量良莠不齊的數字貨幣錢包存在,而不少開發團隊在以業務優先的原則下,暫時對自身錢包產品的安全性並未做到足夠的防護,一旦出現安全性問題會導致大量使用者出現賬戶貨幣被盜,而由於數字貨幣實現的特殊性,被盜資產非常難以追回。

希望錢包廠商可以更加在業務功能上更加註重安全,一方面保護廠商利益不受損失,另一方面也保護使用者錢財不受損失,關於此文件中我們針對錢包廠商安全審計的相關技術點,已釋出相關數字貨幣錢包安全白皮書文件供大家參考。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;