《某考勤機漏洞挖掘實錄-郭韜(27頁).pdf》由會員分享,可在線閱讀,更多相關《某考勤機漏洞挖掘實錄-郭韜(27頁).pdf(27頁珍藏版)》請在三個皮匠報告上搜索。
1、考勤機的管理方式本地管理局域網管理互聯網管理星耀實驗室是斗象科技網絡安全發展戰略的重要組成,星耀之名取自山海經中的星耀獨角獸,實驗室專注于前沿創新的安全技術的研究,覆蓋包括紅藍對抗、紅藍對抗、漏洞挖掘、漏洞挖掘、IoT及移動安全等及移動安全等各安全細分領域,通過研究積累和內部研發,為公司安全能力支撐保駕護航。設備的外部通信從簡化后的通信架構來看,我們對設備的漏洞從簡化后的通信架構來看,我們對設備的漏洞挖掘可以從設備與云端的通信、以及設備與用挖掘可以從設備與云端的通信、以及設備與用戶的通信這兩方面入手戶的通信這兩方面入手流量分析設備啟動后會主動連接到設備啟動后會主動連接到tls.tls.*但是沒
2、有校驗但是沒有校驗服務器的證書服務器的證書流量分析設備設備=云端云端云端云端=設備設備設備向云端上傳了自身的信息,設備向云端上傳了自身的信息,包括固件版本和操作系統類型包括固件版本和操作系統類型云端返回的數據中包含云端返回的數據中包含了大了大量不明意義的二進制數據量不明意義的二進制數據設備采用了設備采用了FreeRTOSFreeRTOS系統,首先考慮植入惡意固件系統,首先考慮植入惡意固件但是但是修改這里的固件版本無法觸發修改這里的固件版本無法觸發OTAOTA繼續分析設備與云端的通信意義不大繼續分析設備與云端的通信意義不大BLE通信分析移動端(Android)App Log開啟ADB即可獲取日志
3、需要App打印BLE通信相關LogHook關鍵APIHook系統關鍵API即可,通用性強需要熟悉移動安全相關知識通信信道空口嗅探硬件軟件都有現成的解決方案無法處理加密通信設備端調試設備無奈之選需要分析固件,并開啟設備調試接口BLE通信分析針對本考勤機的情況,最簡單的方法是針對本考勤機的情況,最簡單的方法是直接嗅探通信,通信內容均以明文傳輸,直接嗅探通信,通信內容均以明文傳輸,通過分析可以知道通信數據的大體結構通過分析可以知道通信數據的大體結構BLE通信分析用戶在用戶在AppApp中可以執行的操作、與設備可以執行的命令對應關系如下中可以執行的操作、與設備可以執行的命令對應關系如下激活激活/綁定綁
4、定:getActiveInfo-getWifiInfo-getActiveInfo-getWifiInfo-connectWifi-activeconnectWifi-active切換切換WiFiWiFi:getWifiInfo-handshake-getWifiInfo-handshake-connectWificonnectWifi重置設備:重置設備:resetDeviceresetDevice獲取設備狀態獲取設備狀態getActiveInfogetActiveInfo獲取設備掃描的獲取設備掃描的WiFiWiFi列表列表getWifiInfogetWifiInfo控制設備連接到指定控制設備
5、連接到指定WiFiWiFiconnectWificonnectWifi通知設備進行綁定操作通知設備進行綁定操作activeactive握手命令,用于身份認證握手命令,用于身份認證handshakehandshake重置設備重置設備resetDeviceresetDevice重置設備時沒有使用重置設備時沒有使用handshakehandshake進行身份認證,進行身份認證,所以通過所以通過BLEBLE通信可以未授權重置設備通信可以未授權重置設備一點小插曲實際上我們是通過調試設備來獲取實際上我們是通過調試設備來獲取BLEBLE通信數據的通信數據的MCUMCU提供了提供了SDKSDK及及示例代碼,可
6、以示例代碼,可以用來分析用來分析BLEBLE協議協議棧的使用方式棧的使用方式示例代碼中有一部分日志,這些字符串示例代碼中有一部分日志,這些字符串在固件中同樣也出現了,通過交叉引用在固件中同樣也出現了,通過交叉引用可以確定固件中可以確定固件中BLEBLE協議棧的相關代碼協議棧的相關代碼一點小插曲一點小插曲使用使用gdbgdb調試腳本,在關鍵代碼處下斷點調試腳本,在關鍵代碼處下斷點并以并以hexdumphexdump的形式輸出的形式輸出BLEBLE通信數據通信數據至此,我們發現可以在不需要任何前置條件的情況下,進行中間人攻擊至此,我們發現可以在不需要任何前置條件的情況下,進行中間人攻擊未授權重置未
7、授權重置設備設備未校驗未校驗TLSTLS證書證書?劫持設備連接到指劫持設備連接到指定定WiFiWiFi那么控制了云端與設備之間的通信后,有何危害那么控制了云端與設備之間的通信后,有何危害要解答這個問題,需要先對設備固件進行分析要解答這個問題,需要先對設備固件進行分析MITMMITM篡改通篡改通信數據信數據拆解設備PCF8563PCF8563RTC芯片GD25Q128GD25Q128128M-bit Flash芯片ESP32ESP32MCU,xtensa架構ESP32ESP32GD25Q128GD25Q128PCF8563PCF8563UARTUART拆解設備ESP32ESP32需要需要Flas
8、hFlash遵守固定的分區格式遵守固定的分區格式11結合串口打印的數據,提取結合串口打印的數據,提取ota_0ota_0分區分區使用使用IDAIDA加載加載ota_0ota_0分區分區22拆解設備TDITDITDOTDOTCLKTCLKTMSTMSGNDGNDVDDVDD可以使用可以使用JTAGJTAG調試調試ESP32ESP3233,但是會在執行,但是會在執行到某一條命令后中斷到某一條命令后中斷拆解設備多次嘗試后發現多次嘗試后發現I2CI2C接口初始化接口初始化完成后就會中斷完成后就會中斷JTAGJTAG調試調試由芯片手冊可以發現,由芯片手冊可以發現,JTAGJTAG接口的接口的TDOTDO
9、引腳可以復用作引腳可以復用作I2CI2C的的SDASDA引腳引腳PCF8563PCF8563芯片使芯片使用了用了I2CI2C接口接口跳跳過過I2CI2C初始化之后,設備可以正常調試,但是初始化之后,設備可以正常調試,但是獲取不到正確的日期時間獲取不到正確的日期時間準備工作完成,可以開始分析固件了準備工作完成,可以開始分析固件了分析固件從字符串入手逆向從字符串入手逆向OTAOTA流程流程分析固件被動等待設備進行被動等待設備進行OTAOTA查詢耗時太長,查詢耗時太長,故故考慮通過調試觸發考慮通過調試觸發OTAOTA更新更新OTAOTA查詢請求每隔查詢請求每隔一一小時觸發一次小時觸發一次分析固件通過
10、調試觸發通過調試觸發OTAOTA流程流程由由atmStateSyncatmStateSync請求查詢云端是否有新版本固件請求查詢云端是否有新版本固件(1)(1)設備設備發送給云端發送給云端的的的的設備設備固件版本號固件版本號(2)2)云端云端最新的固件最新的固件版本版本(3)OTA(3)OTA鏡像的鏡像的URLURL(4)OTA(4)OTA鏡像的鏡像的MD5MD5校驗校驗(1)(1)(2)(2)(3)(3)(4)(4)分析固件啟動固件更新需要兩個條件滿足其一啟動固件更新需要兩個條件滿足其一分析固件通過通過HTTPHTTP請求獲取固件請求獲取固件HTTP Response HeaderHTTP
11、Response Header中需包含中需包含OTAOTA鏡像長度、鏡像長度、MD5MD5校驗值校驗值和和Content-TypeContent-Type分析固件通過通過MD5MD5檢查后,還需要檢查檢查后,還需要檢查OTAOTA鏡像的鏡像的hashhash值,值,檢查通過后鏡像會被寫入檢查通過后鏡像會被寫入OTAOTA分區分區分析固件啟動時啟動時bootloaderbootloader讀取讀取OTAOTA分區并進行校驗分區并進行校驗利用設備的利用設備的OTAOTA功能功能我們有了一條完整的漏洞鏈我們有了一條完整的漏洞鏈未授權重未授權重置設備置設備未校驗未校驗TLSTLS證書證書植入惡意植入惡意固件固件劫持設備連接到劫持設備連接到指定指定WiFiWiFiMITMMITM篡改篡改通信數據通信數據順便還有一個不太好利用順便還有一個不太好利用44的棧溢出的棧溢出content_type=strstr(httpRspHeader,“Content-Type”)content_type=strstr(httpRspHeader,“Content-Type”)sscanf(content_type,“%sscanf(content_type,“%*s%s”,sp+4)s%s”,sp+4)