移動應用:進入物聯網的后門?現在,每天都有大量新設備接入物聯網,但是迫于市場的壓力,這些設備的安全性和隱私性往往沒有得到足夠的重視。為了評估和改善這些設備的安全狀況,研究人員需要對它們進行逆向工程。不幸的是,這可不是一個容易的任務,因為他們需要面對各種不同的智能對象,并且它們經常使用定制的硬件、固件、操作系統和協議,這意味著每次逆向工程都需要從頭開始,這是相當費時費力的。
在本文中,我們將解決這個問題,并提出一個更容易的方法來逆向智能對象。我們的思路是,在許多情況下無需關注對象本身,而是關注相關的移動應用程序。我們詳細介紹了該方法在三個智能對象上的應用,結果表明這種方法的效果非常棒。實驗的設備包括:智能牙刷、智能手表和家用安全報警器。
引言
在牛津英語詞典中,將物聯網(IoT)定義為“互聯網的進一步拓展,能讓日常生活中的所有對象互聯互通,允許它們發送和接收數據”。現在,物聯網正在逐步走入我們的生活。2014年,約有20億個物聯網設備,這已經超過了筆記本電腦和臺式電腦的數量(15億),并且與智能手機的數量(18億)相當。一些最常見的物聯網對象包括:智能手表(請注意,截止2015年第4季度,智能手表的出貨量就已經超過了瑞士手表)、健身腕帶(通常用于人類,但也可用于貓和狗的設備,如奧托寵物系統)、智能電視和智能眼鏡。但這些只是其中的很少一部分,物聯網設備實際上涉及廣泛的領域:
娛樂領域,例如Archos公司的音樂智能比尼帽,Mattel公司的智能芭比娃娃Hello Barbie。
高科技領域,例如Recon Instruments公司的增強現實防雪面罩,Narrative公司的可穿戴相機等。
時尚領域,例如Volvorii公司的物聯網高跟鞋或服裝。
農業領域,例如奶牛授精。
健康和安全領域,例如Netatmo June公司的皮膚暴露檢測儀,Vigo公司的睡眠檢測儀,Glow-Cap公司的藥物提醒帽。等等。
然而,這些設備的隱私和安全問題卻非常讓人擔憂。迫于市場壓力,這些物聯網設備通常會急不可耐的盡早面世,因此,通常都沒有經過適當的安全審查,有時甚至缺乏正確的安全設計。例如,HP研究發現,90%的IoT設備至少會收集一條個人信息,70%的設備使用未加密的網絡,10個UI中有6個設備容易受到諸如XSS和弱憑證的威脅。根據這些現狀,IDC預測到2016年12月,90%的IT網絡將因IoT的安全漏洞而遭受威脅。在消費者方面,埃森哲咨詢公司在28個不同國家對28,000個人進行了調查結果表明,47%的消費者對IoT存在隱私和安全擔憂。
為了評估智能對象的安全性和隱私性,研究人員需要密切分析它們的具體實現。但是,由于技術文檔很少,所以第一步通常需要對相關設備進行逆向工程。逆向工程本來就不是一個輕松的任務,對于物聯網設備來說,就更加困難了,因為(i)它們使用的組件越特殊,人們對它的了解就越少,以及(ii)因為智能對象彼此差異很大。前者需要了解陌生領域的專業知識(例如,Riot,Contiki,Brillo等操作系統),而后者則意味著需要逆向智能對象,但是逆向一個智能對象的經驗,在逆向其他對象的時候幫助不大。例如,智能手表的逆向工程與智能牙刷的逆向工程幾乎沒有共同之處。因此,在第一個任務期間獲得的經驗對第二個任務幾乎沒有幫助。
這些正是本文要解決的問題。我在這里提出了一種簡單的方法,并且我已經多次實踐,證明該方法確實有效。這種方法能夠使得逆向過程的前面幾步更加簡單,從而有助于研究人員更快地了解設備本身。此外,它還能提供許多有價值的信息,可以使進一步的逆向工作更集中、更有針對性。
在本文中,我們首先討論這個主題的前期工作(第2節),然后解釋我們使用的方法(第3節)。然后,通過三種不同智能對象舉例說明我們的方法:智能牙刷(第4節)、智能手表(第5節)和(第6節)。最后,我們將對這種方法進行總結。
發展現狀
雖然物聯網已經開始流行,但是,其安全研究仍處于早期階段,相關的出版物也遠少于其他領域,如操作系統安全。我們可以引用的文獻有NEST恒溫器、WeMo電源插座、健康輸液泵中的漏洞、在Fitbit Flex dongles中注入任意代碼、藍牙掃描、嬰兒監視器等等。一方面,這些研究為逆向物聯網設備提供了有趣的線索,同時,也說明了不同的智能對象的差距是多么大,以及研究人員為了了解它們而需要做的工作量有多么大。
參考文獻[14]將這項任務比作CTF競賽,這看起來是非常合適的,因為每個挑戰是不同的而且非常耗時,并且在網絡上也找不到立即可用的解決方案。
在學術界,一些研究人員提出了相關的方法或自動化方法來幫助逆向固件。文獻[15]給出了物聯網不同攻擊面的詳細清單。該清單有助于在安全審核/滲透測試時防止遺漏某些領域。然而,它對逆向工程本身沒有提供幫助,只是旨在幫助我們涵蓋安全相關的所有方面。對于自動化框架和工具,它們是有發展潛力的,但目前仍處于早期階段,因此現在還難以在實踐中大展拳腳。
方法論
為了簡化物聯網設備的逆向工程,本文提出了以下方法:這種方法不是直接逆向智能對象本身,而是首先側重于逆向與它們打交道的移動應用程序。
許多物聯網設備都是通過相關的移動應用程序來進行控制、監督或與之交互的。例如,Meian公司的安全報警器就提供了相應的Android應用程序,幫助最終用戶啟動、停止設備,獲取狀態或設置警報區域。類似地,Beam牙刷也配備了與智能牙刷等通信的iOS或Android應用程序。當有這樣的移動應用程序可用時,那就為我們提供了很大的優勢:
更簡單。有許多工具可以用來逆向移動應用程序(例如apktool、baksmali、clutch以及IDA Pro)。反病毒分析師經常使用這些工具來考察移動病毒,因此我們會有一個良好的支持社區。
安全性。物聯網供應商開發這些移動應用程序(因為它們對最終用戶很有吸引力)通常是處于營銷的角度來考慮的,所以不會將它們完全集成到其安全設計中(如果有的話)。因此,我們通常有機會訪問這些移動應用程序未經混淆的源代碼,更有甚者,我們還能在這些應用中找到危及智能對象本身的安全漏洞,具體參考第6節。
退可守。如果針對移動應用的分析不足以解決問題,則研究人員總是可以將逆向智能對象作為研究的第二步。在第一階段收集的信息很可能有助于在第二階段進行更有針對性的逆向工程。
Beam牙刷
概述
智能牙刷的問世已經有一段時間了,但直到2015年才引起了相關媒體的關注,因為當時Beam在一份圍繞其聯網設備的牙科保險計劃中提到了它。每支Beam牙刷都納入了牙科保險計劃,并且每支牙刷有自己的特殊優惠(例如免費牙膏)和附屬牙醫。
與胰島素泵或起搏器相比,牙刷可能還涉及不到最敏感的健康數據。然而,一旦與保險單掛鉤,就會引發多個問題,無論從安全教育角度還是從隱私角度考慮,考察該牙刷的工作原理都是非常有趣的。
該牙刷除了提供其商品規格:藍牙LE 4.0(BLE)、聲波電機、尺寸和顏色之外,沒有提供其他技術信息。此外,也沒有用戶論壇,沒有開發者社區,也沒有學術出版物。不幸的是,這種情況對于物聯網設備來說是非常常見的:我們必須從頭開始,因為沒有信息可供利用。
面對這種處境,一條路是拆卸牙刷的硬件:拆開它,拿到電子組件,探測測試點等。但是,這里我們決定重點探索該設備相關的iOS和Android移動應用。
逆向iOS應用程序
在逆向iOS應用程序的時候,它的架構對我們是很有幫助的。因為應用程序會使用名為BeamBrushData.sqlite的sqlite數據庫,其中包含多個表,如BrushEvent、ClientDevice和ClientSession(請參見圖1),所以,我們可以通過在函數名稱中搜索關鍵字“primaryKey”來列出這些表。

圖1:Beam牙刷的移動應用程序所使用的SQL表。
每個表的內容都是由mappings命名的函數進行描述的,例如Insured表的[Insured mappings]。
了解每個表的字段對于掌握哪些數據被存儲以及哪些數據可能泄露給對手是非常有用的。例如,BTStarCardInfo表包含最終用戶的積分的變化情況:name,beforeValue,afterValue,starCount,lastTotalStars,totalStars。積分是最終用戶完成指定挑戰(例如連續刷牙超過兩分鐘)時授予終端用戶的虛擬點數。攻擊者當然可以嘗試修改這里的值來獲取積分——當然,還可能存在其他相關的檢查,例如在遠程服務器上的檢查事項等。
存儲在這些表中的信息對于廣告工具包或廣告軟件來說,可能是非常有價值的。例如,Insured表保存被保險用戶的稱謂,名字,中間名,姓氏,性別和出生日期,當然用戶也可能是家庭中的成年人(通常是父親或母親)。然后,User表為家庭的其他成員(例如兒童)提供相同的信息。因此,通過分析這些表中包含的數據,間諜軟件可以了解特定家庭的組成成員,然后給他們發送有針對性的廣告等。
除了數據庫結構之外,通過反匯編iOS應用程序還能揭示它實現的類的結構。移動應用程序二進制文件的objc節提供了每個類的方法和字段的完整概述。例如,圖2示出了UserSummary類的字段——也稱為屬性(例如,beamScore,numberOfBrushDaysLeft)和方法(例如,beamScoreRoundedInteger)。此外,IDA Pro中的注釋也特別有用,甚至為每個字段的類型和方法都提供了簽名。

圖2:IDA Pro顯示了UserSummary類的方法和屬性。屬性的注釋顯示了該字段的具體類型。
從這里我們可以了解到:
牙刷提供了加速度計和陀螺儀。兩者都在BTBrushData類中提供了一個三軸向量。牙刷就是通過它們來了解最終用戶是否正在刷牙,如果是的話,當前位于哪個象限(口腔被分為四個區域,或象限:左上,右上,右下,左下)。
固件的空中下載服務。BTFirmwareUpdater類的內容表明,該固件提供了通過空中下載進行的更新服務。更新固件時,會將新固件的字節發送到牙刷,直到寫入所有字節為止。
char *firmware;
unsigned int totalLength;
unsigned int written;
unsigned int toWrite;
unsigned int loopCount;
int state;
CBService *otaService;
CBCharacteristic *otaControlPoint, *otaDataPoint;
這些積分只是軟件而已。特定最終用戶的積分數量并不存儲在牙刷本身上,而是存儲在移動電話上(并且可能在遠程服務器數據庫上)。事實上,類BTBrushData,BTBrushEvent,Device和ClientDevice中沒有積分相關的字段。從這些類的內容可以看出,牙刷是由固件、硬件、序列號、閃光燈、電池電量、電動機(其速度是可控的)、三軸陀螺儀、三軸加速度計、自動關閉定時器和具有BLE功能的芯片構成的。
看文倉www.kanwencang.com網友整理上傳,為您提供最全的知識大全,期待您的分享,轉載請注明出處。
歡迎轉載:http://www.kanwencang.com/bangong/20170105/82390.html
文章列表