FUZE卡介紹
FUZE是一種尺寸跟普通信用卡一樣的物聯網設備,你可以使用智慧型手機App並透過藍牙來對FUZE卡進行程式設計。為了方便用戶管理和配置信用卡,BrilliantTS公司也特別發布了一款名叫eCARD Manager的應用程式。當你需要進行付款時,你需要在手機App中選擇使用的信用卡,選擇成功後FUZE卡也就相當於你所選擇的那張信用卡了。
但透過研究發現,卡片的添加和使用過程其安全性並不可靠,從某種程度上來說,FUZE確實部署了一些安全防護措施,在首次設定FUZE時,你需要輸入一個六位數的密碼,但這個步驟是可以跳過的。配置好密碼之後,裝置會保持鎖定狀態,直到你手動解鎖或手機在卡片附近時才會解鎖。在鎖定狀態下,你無法存取卡片中的資料或對磁條進行程式設計。它還提供了一種高級安全模式,即只有用戶手機透過藍牙連接卡片時,卡片才可以正常使用。
X光掃描硬體結構
跟常見的物聯網裝置不同,FUZE卡的厚度只有一毫米不到,所以為了了解裝置的內部構造,X光掃描是最適合不過了。掃描到的結構圖如下所示:
我們可以看到,主晶片是一個微型控制器、一個e-Paper驅動器和一個藍牙SoC,而且主機板上許多功能目前都還沒使用到,包括NFC和EMV(之後會提供功能支援)。
藍牙協定逆向分析
對FUZE卡來說,藍牙介面是我們逆向分析的主要目標。為此,我所要使用的工具如下:
1. 安卓手機一台;
2. Burp Suite(可選);
3. Wireshark 帶殼的Perl腳本;
4. Gatttool/BlueZ;
要對藍牙設備進行黑盒測試的話,安卓手機不可或缺。我們不僅可以在手機上監控藍牙的通訊流量,還可以直接對Java字節碼進行反組譯。 Burp作為HTTP代理,我們可以攔截安卓App與後台伺服器的API請求。安卓晶片附帶一個名叫「HCI snoop log」的功能,使用者可以在開發者設定選單中開啟,這個功能允許我們將藍牙活動的所有資訊保存在檔案中,其中包含App與裝置的所有互動資訊。 Wireshark可以讀取HCI snoop log的訊息,並對其進行基本的過濾和分析。為了半自動化實作將資料匯出為文字文件,這裡我們使用了一個Perl腳本。最後,gatttool或其他的BlueZ工具可以用來對設備進行最直接的滲透分析,並了解協議訊息。
逆向FUZE
眾所周知,BLE的配對協定是存在漏洞的,大多數裝置都會在其基礎上實現額外的安全保護,。同樣的,FUZE也不會向任何未配對的裝置發送數據,或使用BLE連接層加密。因此,gatttool是無法在不進行配對的情況下向FUZE發送請求的,所以我打算使用基於安卓的逆向分析方法:
1. 安卓上開啟藍牙HCI snoop功能;
2. 在App中與FUZE卡互動;
#3. 使用adb將HCI日誌匯出至PC;
4. 使用Wireshark進行分析;
##5.過濾並將資料匯出到文字中;6. 使用Perl腳本對資料進行解析;Wireshark的反向分析結果如下:HCI snoop最好的地方就在於它所捕捉到的數據是硬體藍牙晶片加密之前的明文數據,其中包含有某些ASCII字串和協定數據格式。
漏洞利用與PoC
註:如果攻擊者能夠捕捉到裝置與App的配對會話,FUZE卡的配對數字PIN碼是可以透過暴力破解攻擊的形式破解的。
首先,我們需要使用bluetoothctl來掃描裝置並與其實現配對:
#1.啟動bluetoothctl:sudo bluetoothctl;
2.啟用代理客戶端(用於配對):agent on;
3.掃描設備:scan on;
4.掃描到FUZE卡之後,停用掃描:scan off;
5.與FUZE卡配對:pair
6.輸入設備顯示的數字PIN碼;
7.斷開連接:disconnect
接下來,我們可以用gatttool傳送指令了:
1. 啟動gatttool: sudo gatttool -I -b
2. 連接裝置:connect;
3. 訂閱通知:char-write-req 1b 0100;
##4 . 送出指令:char-write-req 18總結
前有Apple Pay和三星Pay,後面有FUZE智慧卡,整個支付產業都在想盡辦法實現無卡支付,雖然我個人不認為藍牙信用卡有多大的現實意義,但既然已經有了,那我們肯定要想辦法保證它的安全。 相關文章教學推薦:以上是如何利用藍牙取得信用卡數據的詳細內容。更多資訊請關注PHP中文網其他相關文章!