摘要:經過驗證,SafeBreach公司安全研究人員公開的POC能夠實現對Stock/Test Image版本的Windows IoT Core系統的上傳文件和執行系統命令,Stock/Test Image版本的Windows IoT Core系統存在嚴重的安全隱患。在Windows IoT Core系統運行後,可通過U盤將該DLL文件拷貝到分析機中,使用IDA查看實現該函數的彙編代碼,如圖3-2、圖3-3所示:。

1 概述

近日,安天微電子與嵌入式安全研發部(安天微嵌)針對SafeBreach[1]公司披露的Windows IoT[2]操作系統的安全漏洞進行了詳細分析和驗證。攻擊者利用該漏洞可實現對目標設備的完全控制,如遠程命令執行、文件上傳/下載等。對此,安天微嵌成立了分析小組,分析驗證了SafeBreach公司在GitHub中公佈的該漏洞的原理及POC,對該漏洞的影響範圍進行了確認,並針對不同應用場景給出了相應的防護建議。

1.1 Windows IoT系統簡介

Windows作爲IoT市場中僅次於Linux系統的第二大系統,其Windows IoT Core是面向物聯網領域的核心操作系統版本,覆蓋了智能家居、智能醫療、智慧城市、智能物流等衆多領域。Windows IoT分爲IoT Core和IoT Enterprise版本,而Windows IoT Core又分爲Stock Image和Custom Image兩個版本。其中,Stock Image版本也被稱爲Test Image版本,其包含了用於開發及硬件兼容性測試用途的相關接口。

Windows IoT Core系統目前支持的硬件平臺包括:高通DragonBoard 410c、樹莓派2、樹莓派3B、MinnowBoard Turbot、Aaeon Up Squared。

1.2 HLK框架及Sirep協議簡介

HLK(Hardware Lab Kit)是一個用於測試硬件設備及對應驅動程序和Windows系統之間兼容性的測試框架。PC端軟件HLK Studio[3]中包含了該測試框架的Server部分,測試設備中包含了該測試框架的Client部分。用戶可在HLK Studio中選擇測試用例併發送到待測試的設備中進行測試。在底層實現中,HLK Studio軟件通過Sirep協議[4]與待測試設備進行交互。HLK Server與HLK Client的關係如圖1-1所示:

Windows 10 IoT Core遠程命令執行漏洞驗證及建議

圖1-1 HLK Server與HLK Client的關係

實現Sirep協議的DLL文件位於Windows IoT Core系統的C:..testsirepsvc.dll位置,該DLL實現了包括HLK Studio和Windows IoT Core系統間的通信功能,及執行HLK Studio下發至Windows IoT Core的測試任務等功能。而Sirep協議本身實現瞭如下功能:

● 獲取Windows IoT Core系統信息;

● 執行Windows IoT Core系統命令;

● 下載Windows IoT Core系統中的文件;

● 上傳文件到Windows IoT Core系統中;

● 獲取Windows IoT Core系統中的文件屬性信息。

2 影響範圍

根據公開資料及分析小組實際驗證,該漏洞目前主要影響Windows IoT Core的Stock/Test Image[4]版本。若開發人員或廠商在最終發佈的產品中使用了Stock/Test Image版本的系統,且該產品存在有線連接場景,則會受到此次披露的漏洞影響。構建Custom版本需要從CA(Certificate Authority)購買簽名證書,並使用該證書對Custom版本的系統進行簽名,因爲時間倉促,分析小組暫未對Custom版本的Windows IoT系統進行驗證。

3 漏洞分析

本次分析過程使用樹莓派2B和Windows IoT Core(17763)版本作爲驗證環境。設備連接示意圖如圖3-1所示:

Windows 10 IoT Core遠程命令執行漏洞驗證及建議

圖3-1 設備連接示意圖

首先,可使用Windows 10 IoT Core Dashboard[5]軟件製作帶有Windows IoT Core系統的TF卡,然後將TF卡插入到樹莓派中,使用網線連接樹莓派,通電後即可啓動系統。系統啓動後,Windows 10 IoT Core Dashboard軟件可自動發現局域網範圍內的Windows IoT 設備、執行啓用遠程PowerShell、向設備中部署應用軟件等。但這些操作需要首先通過Windows IoT系統管理員賬號和密碼認證才能正常使用。

在實現Sirep協議時,testsirepsvc.dll的代碼使用TCP Socket服務程序監聽了29817、29819、29820端口,且在代碼中並未對接收到的請求進行適當的權限檢查,進而導致了在未經授權的情況下即可執行Sirep協議所實現的功能。

在testsirepsvc.dll中,實現對遠程請求進行權限檢查的函數名稱爲:

ControllerWSA::IsConnectionAllowed

在Windows IoT Core系統運行後,可通過U盤將該DLL文件拷貝到分析機中,使用IDA查看實現該函數的彙編代碼,如圖3-2、圖3-3所示:

Windows 10 IoT Core遠程命令執行漏洞驗證及建議

圖3-2 ControllerWSA::IsConnectionAllowed函數代碼片段1

Windows 10 IoT Core遠程命令執行漏洞驗證及建議

圖3-3 ControllerWSA::IsConnectionAllowed函數代碼片段2

以上代碼片段解釋了testsirepsvc.dll如何對接收到的請求進行權限檢查的邏輯,程序邏輯僅僅判斷getsockname函數返回的SOCKADDR_IN數據結構是否爲有線網卡的IP地址,也就是說testsirepsvc.dll認爲所有來自有線網絡的請求都是合法的請求,這個過程並不需要用戶輸入用戶名和密碼進行認證。

在testsirepsvc.dll中的服務程序接收到HLK Studio發送的命令數據後,會經過SirepPipeServiceRoutine函數進行分流,在該函數中通過命令類型字段將不同的命令分流到不同的函數中進行執行,不同的命令類型對應的執行函數名稱分別爲:

SirepGetSystemInformationFromDevice;

SirepPutFileOnDevice;

SirepGetFileFromDevice;

SirepGetFileInformationFromDevice;

SirepLaunchWithOutput

實現該命令分流過程的SirepPipeServiceRoutine函數彙編代碼如圖3-4所示:

Windows 10 IoT Core遠程命令執行漏洞驗證及建議

圖3-4 SirepPipeServiceRoutine函數命令分流代碼

4 POC執行驗證

分析小組通過樹莓派2B和Windows IoT Core(17763)(Stock/Test Image)搭建了驗證環境,結合上述的分析過程對公開的POC[6]進行了驗證。

上傳文件POC執行示例如圖4-1、圖4-2所示:

Windows 10 IoT Core遠程命令執行漏洞驗證及建議

圖4-1 上傳文件POC執行示例

如圖4-1所示,該POC在C:WindowsSystem32目錄下創建了一個名爲uploaded.txt的文件,文件內容爲“Hello Windows IoT!”。

Windows 10 IoT Core遠程命令執行漏洞驗證及建議

圖4-2 查看上傳文件結果

如圖4-2所示,在執行圖4-1所示的POC命令後,使用cat命令可查看C:WindowsSystem32目錄下的文件名爲uploaded.txt的文件內容。

遠程執行系統命令POC執行示例如圖4-3所示:

Windows 10 IoT Core遠程命令執行漏洞驗證及建議

圖4-3 遠程執行系統命令POC執行示例

如圖4-3所示,該POC實現了遠程命令執行,在目標設備中執行了hostname命令,並返回了命令執行的結果,即“minwinpc”。

經過驗證,SafeBreach公司安全研究人員公開的POC能夠實現對Stock/Test Image版本的Windows IoT Core系統的上傳文件和執行系統命令,Stock/Test Image版本的Windows IoT Core系統存在嚴重的安全隱患。

5 防護建議

本次驗證的漏洞能夠不經授權就可以在受影響系統設備上執行上傳文件和執行系統命令等高危動作,惡意軟件通過本漏洞的利用很容易劫持設備成爲殭屍網絡的一員,成爲黑客發起網絡攻擊的武器之一;設備也能夠被黑客控制成爲挖礦中的一部分;同時由於IoT設備應用於各行各業,一旦受到控制最直接的就是影響設備的正常運行,進而對生產生活造成影響;同時黑客也可以通過設備作爲跳板進一步入侵IoT設備所在網絡進行病毒傳播、情報竊取和網絡破壞等危險行爲,對目標網絡造成嚴重威脅。

雖然本次驗證的漏洞僅適用於Stock/Test Image版本的Windows IoT Core系統,但由於構建Custom版本需要從Certificate Authority (CA)購買簽名證書,並使用該證書對Custom版本的系統進行簽名,廠商可能出於成本或其它方面考慮直接使用Stock/Test Image版本的Windows IoT Core系統進行產品發佈,也就是說以Stock/Test Image版本的Windows IoT Core系統IoT設備可能已經廣泛進入供應鏈。並且IoT設備在現實應用場景中進行固件升級較爲困難,容易被忽視。

綜合上述情況,爲了有效降低漏洞所帶來的威脅,在提高產品安全性的同時,有效提升產品所在網絡的安全防護能力,保障客戶價值,我們結合漏洞的分析和驗證情況給出三點安全建議,具體如下:

建議一: 產品實際的上線過程應該嚴格按照官方要求的研發、測試和發佈流程規範操作,使用Custom Image而非Stock/Test Image版本的Windows IoT系統作爲實際產品的發佈系統,能夠有效避免本次或其它未被發現的Stock/Test Image版本系統漏洞所產生的影響。

建議二:本漏洞所涉及到的服務使用29817、29819、29820三個端口,且涉及到的服務僅用於研發階段的兼容性測試,並不是實際產品所使用的功能。在暫時無法升級固件的情況下,並確保實際產品中沒有依賴相應端口的功能,以防止在關閉相應端口後影響設備的正常使用,則可以臨時在Windows IoT Core系統防火牆中將兼容性測試服務所使用的29817、29819、29820三個端口進行阻斷,也可暫時避免本次披露漏洞所產生的影響。但仍需要儘快升級固件修補漏洞,纔能有效避免本次或其它未被發現的Stock/Test Image版本系統漏洞所產生的影響。在Windows IoT Core系統臨時阻斷端口的命令如下:

Windows 10 IoT Core遠程命令執行漏洞驗證及建議

建議三: 根據IoT設備所實現功能的技術特徵並結合實際運行環境,詳細梳理可以訪問設備的IP列表、端口列表、訪問協議類型,以及設備可以向外主動連接的協議類型、IP列表和端口列表,結合梳理結果使用邊界防火牆產品或設備專用防火牆產品配置相應的雙向IP地址、端口和協議的白名單訪問規則列表,可最大限度的保障IoT設備的訪問安全。該方法雖然能夠有效保障IoT設備的訪問安全,降低漏洞被利用的可能,但並未根除漏洞風險,所以儘快升級固件修補漏洞,纔能有效避免本次或其它未被發現的Stock/Test Image版本系統漏洞所產生的影響。

附錄:參考鏈接

[1] SafeBreach

https://safebreach.com/News-Post/SafeBreach-Labs-Discloses-New-Microsoft-Windows-IoT-Core-Weakness-and-Exploit

[2] Windows IoT

https://docs.microsoft.com/en-us/windows/iot-core/windows-iot-core

[3] HLK Studio

https://docs.microsoft.com/en-us/windows-hardware/test/hlk/user/hlk-studio

[4] Sirep協議和Stock Image

https://github.com/SafeBreach-Labs/SirepRAT/blob/master/docs/SirepRAT_RCE_as_SYSTEM_on_Windows_IoT_Core_White_Paper.pdf

[5] Windows 10 IoT Core Dashboard

https://docs.microsoft.com/en-us/windows/iot-core/connect-your-device/iotdashboard

[6]POC

https://github.com/SafeBreach-Labs/SirepRAT

相關文章