0x01 背景描述在上一篇中,我發布了對在GPS跟踪設備網絡中發現的漏洞的深入分析。自從我向製造商深圳i365披露我的發現以來,已經過去了將近9個月。但是,到目前為止,我估計仍然有超過500萬種設備仍在野外使用,這些設備會暴露兒童、老年人、物質財產的精確實時GPS坐標。
你可能想知道這樣一個非常不安全的品牌如何被全球眾多消費者所購買。我發現,這個問題比向單個設備供應商披露一個漏洞要大得多。取而代之的是,我在研究的第一部分中詳細介紹了GPS跟踪器,實際上看到了供應鏈關係網,從而使安全問題從一個供應商到下一個呈指數增長。
在這篇後續文章中,我將通過詳細介紹GPS追踪器的基礎設施並解釋製造商與供應商與消費者之間的關係,來解釋這些廉價的仿製品牌的銷售範圍。
製造商才是真正生產跟踪器電子產品的一方,而賣方則是以軟件,應用程序或云解決方案的形式出售具有附加值的設備的一方。
首先,讓我回顧一下本研究的第一部分。
GPS跟踪器具有各種品牌和型號,並且具有多種用途。通常會打廣告宣傳它們,以追踪孩子在旅途中的位置,通常採用帶有麥克風/揚聲器或照相機的手錶形狀,以便與父母進行交流。我還分析了專為汽車設計的GPS跟踪器,有些型號甚至允許黑客連接到車輛的防盜裝置,從而遠程殺死引擎。我研究了衣領形狀的寵物追踪器,具有內置緊急呼叫功能的老年人追踪器以及鑰匙圈上的通用追踪器。所有這些跟踪器的共同點是基本的操作方案(如下圖所示)以及雲API中的一組漏洞,這些漏洞可能使攻擊者能夠完全控制設備。
典型的GPS追踪器系統示意圖
為了完全掌握這個漏洞的鏈路,我需要解釋供應鏈問題的實際含義。在當今的物聯網領域,首先要把新產品推向市場,而不是花時間加強其安全性。特別是在競爭激烈且供應商不太可能投資內部構建所有產品的廉價設備領域,解決方案是使用從第三方購買的各種組件來構建產品。那就是供應鏈。這不是一個新概念,製造一直以來都是這樣,但是如今安全研究人員擔心的是,通常無法保證產品的這些組成部分是安全的,
縱觀GPS追踪器市場,許多看起來很相似,但是由不同的供應商以不同的產品名稱出售。事實是,那裡有無數的追踪器,並且全部由中國的幾家工廠生產。如今,在中國以外著名的跟踪器製造商包括:
供應商通常是那些將不同來源的這三個主要組成部分進行出售和組合的供應商。我們試圖繪製所有製造商,解決方案提供商和供應商圖,但這是一個如此廣泛的網絡,以至於無法封裝所有這些信息。為了便於說明,典型的供應鏈如下所示:
供應鏈插圖
上圖非常簡單並且可以理解,但這是一個理想的世界。在現實世界中,此架構中有許多例外。例如,雲解決方案提供商也可能直接銷售帶有應用程序和硬件的最終解決方案,或者硬件工廠從另一位開發人員那裡獲取固件。
0x02 漏洞概述我發現i365品牌的追踪器存在很多問題:
1.默認登錄憑證該特定供應商的所有跟踪器均已預先配置為默認密碼123456,這是最不安全的密碼之一。沒有要求用戶對其進行更改。
2.登錄未認證通過網絡未加密地登錄Web服務以及移動應用程序,因此任何人都可以截獲或更改。
登錄到Web門戶的截圖,允許用戶控制和監視跟踪器
3.弱密碼登錄跟踪器的用戶名也已預先配置,沒有給用戶提供選擇用戶名的選項。實際上,分配的用戶名實際上只是設備的國際移動設備識別碼(IMEI)的一部分,可以很容易地進行迭代。此外,密碼已重新設置為123456。
4.跟踪器和雲平台以純文本傳輸通過跟踪器的GPRS移動連接傳輸的數據未加密,並且缺少身份驗證。此外,跟踪器僅通過發送帶有預定義密碼的SMS純文本即可使攻擊者更改數據發送目的地的端點(IP地址和端口)。這種缺乏加密的機制使任何人都可以截取和修改通信,從而允許發生各種情況,例如數據洩漏,欺騙用戶的位置,發送惡意命令等等。
GPS跟踪器和雲服務器之間捕獲的通信
5.雲框架API不安全遵循SOAP標准通信協議的API端點存在許多問題。大多數功能不需要事先驗證,設備的唯一標識符是一個六位數的數字,可以快速瀏覽與設備相關的數據,例如GPS歷史記錄或云平台中存儲的照片。任何人都可以調用API,缺少身份驗證。
要獲取存儲的照片,只需一個設備的ID(六位數字),密鑰是固定的
即使在這裡看到的Key 字段,它也不是通過登錄獲得的會話密鑰,實際上,該應用程序的內置密鑰已被接受。事實證明,該密鑰也由不同的供應商共享,指向一個公有云。
我提到這似乎不僅僅是一個中國供應商,這是一個更大的問題,但不幸的是,事實證明我是對的。
0x03 攻擊雲平台現在,讓我向你解釋為什麼我重新介紹了供應鏈。想像一下這種情況:有數十家GPS追踪器製造商生產了所有這些不同型號的追踪器,它們都帶有自己的固件,這些固件都具有自己的協議,因此他們要么創建自己的解決方案和應用,要么購買現成的解決方案。你會走哪條路?
因為我非常懷疑這不是一個孤立的問題,所以我在考慮從另一家製造商那裡購買汽車追踪器。
1.設備研究隨機搜索GPS跟踪器在互聯網上找到了下面這個:
TK100車載GPS追踪器
根據製造商的網頁,該跟踪器能夠切斷汽車點火裝置的電源,在點火裝置打開時發送警報,以及所有標準功能,包括麥克風和揚聲器。但是我需要為此攻擊實驗購買它嗎?我決定進行虛擬分析,以證明對這些設備和配套應用程序中的任何一個進行正確的安全評估並不難。此外,為了證明我對此設備正在使用相同的後端服務的猜測。
第一步是獲取設備的操作手冊並下載配套應用程序。在製造商的網頁上,下面引起了我的注意:
有一個Web門戶和Android app。首先看一下門戶:
由於不知道確切的IMEI或車牌號,因為我實際上沒有購買,無法登錄,但至少讓我們看看這些登錄數據是如何通過網絡傳輸的。
通過網絡以純文本形式輸入的密碼和用戶名
看一下Android應用程序
Android App
沒有發現什麼信息,於是通過apklab .io進行分析:
通過apklab.io靜態分析找到的URL字符串
通過對沒有物理設備的Android應用程序進行靜態分析,我發現了一個內置URL,該URL似乎正是我要尋找的URL,因此嘗試一下。
APK文件中URL的API
似乎很熟悉:
上一篇博文對i365的分析得出的API的截圖
好的,現在讓我們從GetDeviceDetail開始測試它們是否存在相同的漏洞:
具有常規參數的GetDeviceDetail API
使用先前應用程序中的內置密鑰並進行DeviceID猜測:
這證明所有這些跟踪器都有一個共同點:儘管這些跟踪器是由不同的製造商製造的,但似乎雲基礎架構是由同一家公司製造的。只是為了證明我的觀點,我下載了該手冊,儘管它看起來略有不同,但我得到了幫助:
你可以看到與之前的研究相同的模式,如何設置追踪器應該連接的服務器的IP地址和端口,以發送GPS數據和接收命令。
2.終極工具Google我們知道有多家供應商使用一種公有云框架,但是我們如何找到更多雲平台呢?有時候Google可以帶來豐碩的成果。我在Google上搜索了OpenAPv3.asmx,而且看起來似乎令人難以置信,我發現許多頁面的URL類似於我已經看到的格式。但是當我也發現這一點時,真是一個驚喜
允許瀏覽服務器上的目錄
任何人都可以自由瀏覽它的方式打開站點不是一個很好的標準,所幸此頁面已被刪除。但這為我提供了有關API的結構以及在那裡可以找到的內容的線索。我在這裡註意到三件事:
1.日誌目錄是可瀏覽的,這可以為我提供有關整個後端系統來自何處的更詳細的提示
2.API有多種版本,事實證明它們都在訪問相同的OpenAPIV1-V4數據。
3.ZKImages文件夾是不言自明的,包含大量GPS追踪器使用內置攝像頭拍攝的圖像
日誌目錄是引起我注意的第一件事。
如你所見,日誌是最新的
嘗試連接到數據庫時,SQL客戶端中的某些異常。但是,這裡最有價值的信息是實現框架的二進製文件的名稱。你知道信息安全領域中的所有災難都來自錯誤的代碼,糟糕的代碼通常來自程序員。因此,我決定效法這一點。除了它可能是很老的.NET二進製文件外,從二進製文件本身的名稱NewGPS2012.Logic中看不出什麼。因為之前通過Google搜到了很多信息,所以我再次嘗試了。
我對結果感到非常驚訝,發現許多Google索引的日誌目錄為我提供了幾乎免費使用相同框架的域名列表,但其中一個很特別:
是的,有人剛剛留下了框架二進製文件的更新。在分析這些二進製文件時,我學到了很多東西,但是我發現的基本要點之一是在SendCommandAPI.dll文件中,該文件有詳盡的函數列表。
很快,事實證明這是可以與GPS追踪器的所有不同製造商的所有不同型號進行通訊的通用API,整個事情就講得通了。如果你是硬件設備的製造商或供應商,則可能需要一個易於使用且兼容的雲解決方案。為了安全起見,我們不公開解決方案供應商的名稱,儘管並不難找到。
3.把所有東西都給我使用Web門戶登錄時,會將這些請求發送到包含以下內容DeviceID的API :
一個奇怪的信息:
我們實際上沒有這些跟踪器的用戶帳戶。還記得唯一的用戶標識是IMEI或跟踪器的ID嗎?更令人擔憂的是,我有同一家公司的更多跟踪器,並且它們在響應中都具有完全相同的UserID。
進入API並深入了解它提供的OpenAPIV3.asmx功能:
試一下用戶名。所以我們只需輸入我們已經使用過多次的用戶ID和強制密鑰,就得到如下響應:
考慮到整個系統的安全性,我只是嘗試使用已經使用過很多次的密碼,這次我選擇通過“帳戶”登錄:
進入了供應商的控制面板,其中有所有已售出的跟踪器供我們使用。因此,用戶ID實際上是銷售商的用戶ID,他們向你出售了特定的跟踪器。
從這裡你可以完全控制追踪器。是的,你看對了,每頁有1026頁,10個跟踪器,讓你可以輕鬆控制10260台設備。例如,有一個重置密碼選項,你猜怎麼著,它不會要求你輸入新密碼;按下時,會將其設置為123456。
4.漏洞修復我們看到這些供應商沒有關心設備安全性。在撰寫本文時,供應商已發布了針對此bug的修復程序,但它更像是一個補丁程序。從現在開始,你將無法選擇123456密碼,並且如果已經擁有新的登錄名,則必須更改密碼123456。
好吧,事實證明這根本不是一個解決辦法,因為這些API端點未正確進行身份驗證。我們再看看OpenAPIv3.asmx API :
它可能看起來很複雜,但實際上並不復雜。這裡更重要的是,在本例中,ID是用戶的ID,並且它也只是0-999999,這很容易枚舉。其餘的必填字段是已知的。因此,通過運行一個簡單的查詢,我們可以很容易地得到以下響應:
注意結果集的大小。通過一次查詢,您將獲得分配給特定帳戶的所有設備。當你遍歷所有可能的用戶ID時,你會得到所有的用戶和設備。從那裡你可以得到你想要的任何信息,電話號碼,位置,用戶名,在這個端點下,還有來自你汽車OBD接口的數據,以及我在上一篇文章中向你展示的所有東西。最後但並非最不重要的一點是,你可以完全控制遠程設備,打電話或從追踪器發送短信。想像一下攻擊者能做什麼。例如,招募一大群移動設備向特定號碼發送短信,或在短信投票中操縱投票。
我已經研究這些不安全的GPS設備很長時間了,努力了解問題的嚴重性。到目前為止,我已經確定了30多個在互聯網
Recommended Comments