針對(duì)GPS追蹤器設(shè)備的安全研究(part1)
0x01 背景描述
在上一篇中,我發(fā)布了對(duì)在GPS跟蹤設(shè)備網(wǎng)絡(luò)中發(fā)現(xiàn)的漏洞的深入分析。自從我向制造商深圳i365披露我的發(fā)現(xiàn)以來(lái),已經(jīng)過(guò)去了將近9個(gè)月。但是,到目前為止,我估計(jì)仍然有超過(guò)500萬(wàn)種設(shè)備仍在野外使用,這些設(shè)備會(huì)暴露兒童、老年人、物質(zhì)財(cái)產(chǎn)的精確實(shí)時(shí)GPS坐標(biāo)。
你可能想知道這樣一個(gè)非常不安全的品牌如何被全球眾多消費(fèi)者所購(gòu)買(mǎi)。我發(fā)現(xiàn),這個(gè)問(wèn)題比向單個(gè)設(shè)備供應(yīng)商披露一個(gè)漏洞要大得多。取而代之的是,我在研究的第一部分中詳細(xì)介紹了GPS跟蹤器,實(shí)際上看到了供應(yīng)鏈關(guān)系網(wǎng),從而使安全問(wèn)題從一個(gè)供應(yīng)商到下一個(gè)呈指數(shù)增長(zhǎng)。
在這篇后續(xù)文章中,我將通過(guò)詳細(xì)介紹GPS追蹤器的基礎(chǔ)設(shè)施并解釋制造商與供應(yīng)商與消費(fèi)者之間的關(guān)系,來(lái)解釋這些廉價(jià)的仿制品牌的銷(xiāo)售范圍。
制造商才是真正生產(chǎn)跟蹤器電子產(chǎn)品的一方,而賣(mài)方則是以軟件,應(yīng)用程序或云解決方案的形式出售具有附加值的設(shè)備的一方。
首先,讓我回顧一下本研究的第一部分。
GPS跟蹤器具有各種品牌和型號(hào),并且具有多種用途。通常會(huì)打廣告宣傳它們,以追蹤孩子在旅途中的位置,通常采用帶有麥克風(fēng)/揚(yáng)聲器或照相機(jī)的手表形狀,以便與父母進(jìn)行交流。我還分析了專(zhuān)為汽車(chē)設(shè)計(jì)的GPS跟蹤器,有些型號(hào)甚至允許黑客連接到車(chē)輛的防盜裝置,從而遠(yuǎn)程殺死引擎。我研究了衣領(lǐng)形狀的寵物追蹤器,具有內(nèi)置緊急呼叫功能的老年人追蹤器以及鑰匙圈上的通用追蹤器。所有這些跟蹤器的共同點(diǎn)是基本的操作方案(如下圖所示)以及云API中的一組漏洞,這些漏洞可能使攻擊者能夠完全控制設(shè)備。
典型的GPS追蹤器系統(tǒng)示意圖
為了完全掌握這個(gè)漏洞的鏈路,我需要解釋供應(yīng)鏈問(wèn)題的實(shí)際含義。在當(dāng)今的物聯(lián)網(wǎng)領(lǐng)域,首先要把新產(chǎn)品推向市場(chǎng),而不是花時(shí)間加強(qiáng)其安全性。特別是在競(jìng)爭(zhēng)激烈且供應(yīng)商不太可能投資內(nèi)部構(gòu)建所有產(chǎn)品的廉價(jià)設(shè)備領(lǐng)域,解決方案是使用從第三方購(gòu)買(mǎi)的各種組件來(lái)構(gòu)建產(chǎn)品。那就是供應(yīng)鏈。這不是一個(gè)新概念,制造一直以來(lái)都是這樣,但是如今安全研究人員擔(dān)心的是,通常無(wú)法保證產(chǎn)品的這些組成部分是安全的,
縱觀GPS追蹤器市場(chǎng),許多看起來(lái)很相似,但是由不同的供應(yīng)商以不同的產(chǎn)品名稱出售。事實(shí)是,那里有無(wú)數(shù)的追蹤器,并且全部由中國(guó)的幾家工廠生產(chǎn)。如今,在中國(guó)以外著名的跟蹤器制造商包括:
供應(yīng)商通常是那些將不同來(lái)源的這三個(gè)主要組成部分進(jìn)行出售和組合的供應(yīng)商。我們?cè)噲D繪制所有制造商,解決方案提供商和供應(yīng)商圖,但這是一個(gè)如此廣泛的網(wǎng)絡(luò),以至于無(wú)法封裝所有這些信息。為了便于說(shuō)明,典型的供應(yīng)鏈如下所示:
供應(yīng)鏈插圖
上圖非常簡(jiǎn)單并且可以理解,但這是一個(gè)理想的世界。在現(xiàn)實(shí)世界中,此架構(gòu)中有許多例外。例如,云解決方案提供商也可能直接銷(xiāo)售帶有應(yīng)用程序和硬件的最終解決方案,或者硬件工廠從另一位開(kāi)發(fā)人員那里獲取固件。
0x02 漏洞概述
我發(fā)現(xiàn)i365品牌的追蹤器存在很多問(wèn)題:
1.默認(rèn)登錄憑證
該特定供應(yīng)商的所有跟蹤器均已預(yù)先配置為默認(rèn)密碼123456,這是最不安全的密碼之一。沒(méi)有要求用戶對(duì)其進(jìn)行更改。
2.登錄未認(rèn)證
通過(guò)網(wǎng)絡(luò)未加密地登錄Web服務(wù)以及移動(dòng)應(yīng)用程序,因此任何人都可以截獲或更改。
登錄到Web門(mén)戶的截圖,允許用戶控制和監(jiān)視跟蹤器
3.弱密碼登錄
跟蹤器的用戶名也已預(yù)先配置,沒(méi)有給用戶提供選擇用戶名的選項(xiàng)。實(shí)際上,分配的用戶名實(shí)際上只是設(shè)備的國(guó)際移動(dòng)設(shè)備識(shí)別碼(IMEI)的一部分,可以很容易地進(jìn)行迭代。此外,密碼已重新設(shè)置為123456。
4.跟蹤器和云平臺(tái)以純文本傳輸
通過(guò)跟蹤器的GPRS移動(dòng)連接傳輸?shù)臄?shù)據(jù)未加密,并且缺少身份驗(yàn)證。此外,跟蹤器僅通過(guò)發(fā)送帶有預(yù)定義密碼的SMS純文本即可使攻擊者更改數(shù)據(jù)發(fā)送目的地的端點(diǎn)(IP地址和端口)。這種缺乏加密的機(jī)制使任何人都可以截取和修改通信,從而允許發(fā)生各種情況,例如數(shù)據(jù)泄漏,欺騙用戶的位置,發(fā)送惡意命令等等。
GPS跟蹤器和云服務(wù)器之間捕獲的通信
5.云框架API不安全
遵循SOAP標(biāo)準(zhǔn)通信協(xié)議的API端點(diǎn)存在許多問(wèn)題。大多數(shù)功能不需要事先驗(yàn)證,設(shè)備的唯一標(biāo)識(shí)符是一個(gè)六位數(shù)的數(shù)字,可以快速瀏覽與設(shè)備相關(guān)的數(shù)據(jù),例如GPS歷史記錄或云平臺(tái)中存儲(chǔ)的照片。任何人都可以調(diào)用API,缺少身份驗(yàn)證。
要獲取存儲(chǔ)的照片,只需一個(gè)設(shè)備的ID(六位數(shù)字),密鑰是固定的
即使在這里看到的 Key 字段,它也不是通過(guò)登錄獲得的會(huì)話密鑰,實(shí)際上,該應(yīng)用程序的內(nèi)置密鑰已被接受。事實(shí)證明,該密鑰也由不同的供應(yīng)商共享,指向一個(gè)公有云。
我提到這似乎不僅僅是一個(gè)中國(guó)供應(yīng)商,這是一個(gè)更大的問(wèn)題,但不幸的是,事實(shí)證明我是對(duì)的。
0x03 攻擊云平臺(tái)
現(xiàn)在,讓我向你解釋為什么我重新介紹了供應(yīng)鏈。想象一下這種情況:有數(shù)十家GPS追蹤器制造商生產(chǎn)了所有這些不同型號(hào)的追蹤器,它們都帶有自己的固件,這些固件都具有自己的協(xié)議,因此他們要么創(chuàng)建自己的解決方案和應(yīng)用,要么購(gòu)買(mǎi)現(xiàn)成的解決方案。你會(huì)走哪條路?
因?yàn)槲曳浅岩蛇@不是一個(gè)孤立的問(wèn)題,所以我在考慮從另一家制造商那里購(gòu)買(mǎi)汽車(chē)追蹤器。
1.設(shè)備研究
隨機(jī)搜索GPS跟蹤器在互聯(lián)網(wǎng)上找到了下面這個(gè):
TK100車(chē)載GPS追蹤器
根據(jù)制造商的網(wǎng)頁(yè),該跟蹤器能夠切斷汽車(chē)點(diǎn)火裝置的電源,在點(diǎn)火裝置打開(kāi)時(shí)發(fā)送警報(bào),以及所有標(biāo)準(zhǔn)功能,包括麥克風(fēng)和揚(yáng)聲器。但是我需要為此攻擊實(shí)驗(yàn)購(gòu)買(mǎi)它嗎?我決定進(jìn)行虛擬分析,以證明對(duì)這些設(shè)備和配套應(yīng)用程序中的任何一個(gè)進(jìn)行正確的安全評(píng)估并不難。此外,為了證明我對(duì)此設(shè)備正在使用相同的后端服務(wù)的猜測(cè)。
第一步是獲取設(shè)備的操作手冊(cè)并下載配套應(yīng)用程序。在制造商的網(wǎng)頁(yè)上,下面引起了我的注意:
有一個(gè)Web門(mén)戶和Android app。首先看一下門(mén)戶:
由于不知道確切的IMEI或車(chē)牌號(hào),因?yàn)槲覍?shí)際上沒(méi)有購(gòu)買(mǎi),無(wú)法登錄,但至少讓我們看看這些登錄數(shù)據(jù)是如何通過(guò)網(wǎng)絡(luò)傳輸?shù)摹?/span>
通過(guò)網(wǎng)絡(luò)以純文本形式輸入的密碼和用戶名
看一下Android應(yīng)用程序:
Android App
沒(méi)有發(fā)現(xiàn)什么信息,于是通過(guò)apklab .io進(jìn)行分析:
通過(guò)apklab.io靜態(tài)分析找到的URL字符串
通過(guò)對(duì)沒(méi)有物理設(shè)備的Android應(yīng)用程序進(jìn)行靜態(tài)分析,我發(fā)現(xiàn)了一個(gè)內(nèi)置URL,該URL似乎正是我要尋找的URL,因此嘗試一下。
APK文件中URL的API
似乎很熟悉:
上一篇博文對(duì)i365的分析得出的API的截圖
好的,現(xiàn)在讓我們從GetDeviceDetail開(kāi)始測(cè)試它們是否存在相同的漏洞:
具有常規(guī)參數(shù)的GetDeviceDetail API
使用先前應(yīng)用程序中的內(nèi)置密鑰并進(jìn)行DeviceID猜測(cè):
這證明所有這些跟蹤器都有一個(gè)共同點(diǎn):盡管這些跟蹤器是由不同的制造商制造的,但似乎云基礎(chǔ)架構(gòu)是由同一家公司制造的。只是為了證明我的觀點(diǎn),我下載了該手冊(cè),盡管它看起來(lái)略有不同,但我得到了幫助:
你可以看到與之前的研究相同的模式,如何設(shè)置追蹤器應(yīng)該連接的服務(wù)器的IP地址和端口,以發(fā)送GPS數(shù)據(jù)和接收命令。
2.終極工具Google
我們知道有多家供應(yīng)商使用一種公有云框架,但是我們?nèi)绾握业礁嘣破脚_(tái)呢?有時(shí)候Google可以帶來(lái)豐碩的成果。我在Google上搜索了OpenAPv3.asmx,而且看起來(lái)似乎令人難以置信,我發(fā)現(xiàn)許多頁(yè)面的URL類(lèi)似于我已經(jīng)看到的格式。但是當(dāng)我也發(fā)現(xiàn)這一點(diǎn)時(shí),真是一個(gè)驚喜
允許瀏覽服務(wù)器上的目錄
任何人都可以自由瀏覽它的方式打開(kāi)站點(diǎn)不是一個(gè)很好的標(biāo)準(zhǔn),所幸此頁(yè)面已被刪除。但這為我提供了有關(guān)API的結(jié)構(gòu)以及在那里可以找到的內(nèi)容的線索。我在這里注意到三件事:
1.日志目錄是可瀏覽的,這可以為我提供有關(guān)整個(gè)后端系統(tǒng)來(lái)自何處的更詳細(xì)的提示
2.API有多種版本,事實(shí)證明它們都在訪問(wèn)相同的OpenAPIV1-V4數(shù)據(jù)。
3.ZKImages文件夾是不言自明的,包含大量GPS追蹤器使用內(nèi)置攝像頭拍攝的圖像
日志目錄是引起我注意的第一件事。
如你所見(jiàn),日志是最新的
嘗試連接到數(shù)據(jù)庫(kù)時(shí),SQL客戶端中的某些異常。但是,這里最有價(jià)值的信息是實(shí)現(xiàn)框架的二進(jìn)制文件的名稱。你知道信息安全領(lǐng)域中的所有災(zāi)難都來(lái)自錯(cuò)誤的代碼,糟糕的代碼通常來(lái)自程序員。因此,我決定效法這一點(diǎn)。除了它可能是很老的.NET二進(jìn)制文件外,從二進(jìn)制文件本身的名稱NewGPS2012.Logic中看不出什么。因?yàn)橹巴ㄟ^(guò)Google搜到了很多信息,所以我再次嘗試了。
我對(duì)結(jié)果感到非常驚訝,發(fā)現(xiàn)許多Google索引的日志目錄為我提供了幾乎免費(fèi)使用相同框架的域名列表,但其中一個(gè)很特別:
是的,有人剛剛留下了框架二進(jìn)制文件的更新。在分析這些二進(jìn)制文件時(shí),我學(xué)到了很多東西,但是我發(fā)現(xiàn)的基本要點(diǎn)之一是在SendCommandAPI.dll文件中,該文件有詳盡的函數(shù)列表。
很快,事實(shí)證明這是可以與GPS追蹤器的所有不同制造商的所有不同型號(hào)進(jìn)行通訊的通用API,整個(gè)事情就講得通了。如果你是硬件設(shè)備的制造商或供應(yīng)商,則可能需要一個(gè)易于使用且兼容的云解決方案。為了安全起見(jiàn),我們不公開(kāi)解決方案供應(yīng)商的名稱,盡管并不難找到。
3.把所有東西都給我
使用Web門(mén)戶登錄時(shí),會(huì)將這些請(qǐng)求發(fā)送到包含以下內(nèi)容DeviceID的API :
一個(gè)奇怪的信息:
我們實(shí)際上沒(méi)有這些跟蹤器的用戶帳戶。還記得唯一的用戶標(biāo)識(shí)是IMEI或跟蹤器的ID嗎?更令人擔(dān)憂的是,我有同一家公司的更多跟蹤器,并且它們?cè)陧憫?yīng)中都具有完全相同的UserID。
進(jìn)入API并深入了解它提供的OpenAPIV3.asmx功能:
試一下用戶名。所以我們只需輸入我們已經(jīng)使用過(guò)多次的用戶ID和強(qiáng)制密鑰,就得到如下響應(yīng):
考慮到整個(gè)系統(tǒng)的安全性,我只是嘗試使用已經(jīng)使用過(guò)很多次的密碼,這次我選擇通過(guò)“帳戶”登錄:
進(jìn)入了供應(yīng)商的控制面板,其中有所有已售出的跟蹤器供我們使用。因此,用戶ID實(shí)際上是銷(xiāo)售商的用戶ID,他們向你出售了特定的跟蹤器。
從這里你可以完全控制追蹤器。是的,你看對(duì)了,每頁(yè)有1026頁(yè),10個(gè)跟蹤器,讓你可以輕松控制10260臺(tái)設(shè)備。例如,有一個(gè)重置密碼選項(xiàng),你猜怎么著,它不會(huì)要求你輸入新密碼;按下時(shí),會(huì)將其設(shè)置為123456。
4.漏洞修復(fù)
我們看到這些供應(yīng)商沒(méi)有關(guān)心設(shè)備安全性。在撰寫(xiě)本文時(shí),供應(yīng)商已發(fā)布了針對(duì)此bug的修復(fù)程序,但它更像是一個(gè)補(bǔ)丁程序。從現(xiàn)在開(kāi)始,你將無(wú)法選擇123456密碼,并且如果已經(jīng)擁有新的登錄名,則必須更改密碼123456。
好吧,事實(shí)證明這根本不是一個(gè)解決辦法,因?yàn)檫@些API端點(diǎn)未正確進(jìn)行身份驗(yàn)證。我們?cè)倏纯碠penAPIv3.asmx API :
它可能看起來(lái)很復(fù)雜,但實(shí)際上并不復(fù)雜。這里更重要的是,在本例中,ID是用戶的ID,并且它也只是0-999999,這很容易枚舉。其余的必填字段是已知的。因此,通過(guò)運(yùn)行一個(gè)簡(jiǎn)單的查詢,我們可以很容易地得到以下響應(yīng):
注意結(jié)果集的大小。通過(guò)一次查詢,您將獲得分配給特定帳戶的所有設(shè)備。當(dāng)你遍歷所有可能的用戶ID時(shí),你會(huì)得到所有的用戶和設(shè)備。從那里你可以得到你想要的任何信息,電話號(hào)碼,位置,用戶名,在這個(gè)端點(diǎn)下,還有來(lái)自你汽車(chē)OBD接口的數(shù)據(jù),以及我在上一篇文章中向你展示的所有東西。最后但并非最不重要的一點(diǎn)是,你可以完全控制遠(yuǎn)程設(shè)備,打電話或從追蹤器發(fā)送短信。想象一下攻擊者能做什么。例如,招募一大群移動(dòng)設(shè)備向特定號(hào)碼發(fā)送短信,或在短信投票中操縱投票。
我已經(jīng)研究這些不安全的GPS設(shè)備很長(zhǎng)時(shí)間了,努力了解問(wèn)題的嚴(yán)重性。到目前為止,我已經(jīng)確定了30多個(gè)在互聯(lián)網(wǎng)上運(yùn)行的這個(gè)框架的不同實(shí)例,以及500多個(gè)使用這個(gè)服務(wù)的不同版本的跟蹤器。很難估計(jì)問(wèn)題的大小,但至少粗略估計(jì)一下,我對(duì)兩個(gè)隨機(jī)云目標(biāo)進(jìn)行了完整掃描,得到了以下數(shù)字:
788644+251886來(lái)自兩個(gè)云目標(biāo)的地理定位追蹤器。前提是,根據(jù)我們目前所看到的情況,我們可以粗略估計(jì),可以定位和控制的設(shè)備可能超過(guò)1500萬(wàn)臺(tái)。
還值得一提的是,由于供應(yīng)鏈的原因,并非所有這些設(shè)備都是我前面提到的少數(shù)幾家中國(guó)工廠生產(chǎn)的廉價(jià)品牌。在我的研究中,我還發(fā)現(xiàn)了許多歐洲和美國(guó)品牌,其中一些甚至在亞馬遜上銷(xiāo)售。但在美國(guó)版本的跟蹤器中,有趣的是,該網(wǎng)站使用HTTPS,看起來(lái)相當(dāng)合法;它還使用了一款支持LTE的設(shè)備,你甚至要為這個(gè)計(jì)劃支付月費(fèi)。你必須激活你的設(shè)備并創(chuàng)建一個(gè)帳戶,但下面是我們已經(jīng)看到的沒(méi)有安全性的云框架。
美國(guó)版的跟蹤器似乎合法,可以通過(guò)HTTPS進(jìn)行傳輸并提供LTE數(shù)據(jù)計(jì)劃
前面提到的跟蹤器沒(méi)有使用OpenAPIV3.asmx命名約定,但它使用了在中國(guó)運(yùn)行的相同API
為了說(shuō)明不僅中國(guó)客戶受到影響,以下是我們從兩個(gè)完整掃描的公有云中按國(guó)家、地區(qū)劃分的跟蹤器圖表:
掃描公有云上的跟蹤器
正如我在一開(kāi)始所說(shuō)的,我找到了一家為所有硬件制造商和供應(yīng)商提供云解決方案的公司,這是它們的服務(wù)范圍:
0x04 研究總結(jié)
云解決方案供應(yīng)商的頁(yè)面和范圍
在這里,你可以找到所有內(nèi)容,甚至包括有關(guān)OpenAPI協(xié)議的文檔以及針對(duì)特定跟蹤器的協(xié)議的信息:
在調(diào)查過(guò)程中,我偶然發(fā)現(xiàn)了許多受影響的應(yīng)用程序和供應(yīng)商,很多時(shí)候他們甚至都不知道自己有問(wèn)題。我一直在思考如何進(jìn)行負(fù)責(zé)任的披露,同時(shí)幫助受影響的用戶。我決定不公開(kāi)所有應(yīng)用程序和云平臺(tái),因?yàn)樵谶@種情況下,沒(méi)有簡(jiǎn)單的方法可以同時(shí)完成負(fù)責(zé)任的披露和公共服務(wù)公告。
參考及來(lái)源:https://decoded.avast.io/martinhron/the-secret-life-of-gps-trackers-2-2/?utm_campaign=socialposts_us&utm_source=facebook&utm_medium=social
來(lái)源:嘶吼專(zhuān)業(yè)版