Camera 360應用隱私資料洩露的分析

wyzsk發表於2020-08-19
作者: 路人甲 · 2015/08/22 13:34

From:https://www.fireeye.com/blog/threat-research/2015/08/another_popular_andr.html

0x00 前言


很多流行的Android應用都洩露了隱私資料。我們發現另一款流行的Google Play應用,“Camera 360 Ultimate”,不僅對使用者的照片進行了最佳化,但也不經意間洩露了隱私資料,可以讓惡意的使用者不經過認證就接觸到使用者Camera 360的雲賬戶和照片。

在這個發現之前,FireEye的研究者發現了在Camera 360應用和其他應用中大量使用的SSL協議漏洞。這些漏洞被透過使用中間人攻擊的方法利用,並且對使用者的隱私構成了嚴重的威脅。

Android應用開發者應該採取更對的安全措施來為他們的使用者提供更安全的手機使用體驗。

0x01 概要和介紹


Camera 360是一個流行的照片拍攝和編輯應用。它在世界範圍內有數百萬的使用者。這個應用會為照片的儲存提供免費的雲服務。為了使用這些雲特色,使用者會建立一個可以透過www.cloud.camera360.com訪問的雲賬戶。

雲訪問是透過使用者名稱和密碼來進行限制的。但是當應用訪問暈的時候,它就會透過未加密的形式洩露隱私資料,比如在Android系統日誌(logcat)和網路通訊過程中。可以讀取logcat或者捕獲網路通訊的應用就可以偷取的這個資料。在你的WiFi網路中的惡意使用者也可以透過WiFi嗅探來偷取這個資料。

洩露的資料可以被用來下載所有使用者的照片,除了在那些使用者隱私相簿中的照片。隱私相簿通常都會使用一個額外的密碼來保護重要的影像資料。這個應用不會對這些隱私影像進行操作,並且所有從裝置上上傳的影像都是預設為非隱私的。

0x02 技術細節


我們分析了Camera 360的最新的版本(6.2)以及先前的版本(6.1.2,6.1.1和6.1),然後在所有的這些版本中都發現了資料洩露。

洩露的資料可以被用來透過如下的步驟來對使用者的照片進行未授權訪問:

  • 透過使用洩露的證書來建立新的登入會話。然後,從伺服器獲取到影像的金鑰並且使用它們來下載影像。
  • 劫持登入會話,使用洩露的token來下載影像
  • 使用洩露的影像金鑰來下載影像而不需要認證

並且,捕獲的網路通訊內的影像可以被很賤的提取和檢視。

以下是所有的細節。

0x03 建立一個登入會話


Camera 360應用使用HTTPS登入到伺服器,這也就意味著敏感的登入資料不能被輕易的透過網路通訊來獲取到。在登入的過程中,應用會把隱私資料記錄到logcat上去,而這些資料可以被在同一時間執行在這個裝置上的其他應用讀取到。

Camera 360記錄了使用者的Email地址,password hash值和其他相關的一些資料。當這些資料洩露的時候,它們就可以被用來建立一個單獨的登入會話。作為對登入請求的回應,伺服器會返回一個token、使用者ID和其他的賬戶資訊。這個token和使用者ID可以被用來獲取伺服器上所有非加密的影像的金鑰。利用這些金鑰,所有相關的影像都可以被下載下來。

下圖展示了我們測試過程中生成的日誌資訊:

透過對這個應用進行逆向分析,我們發現了他的HTTPS登入URL。在上面提到的日誌資訊中的資料可以被用來在這個HTTPS請求中建立一個登入會話。這個不帶引數的URL如下圖所示:

任何可以讀取logcat的應用都可以獲得這些登入的資料並且建立它們自己的登入會話。Logcat可以用READ_LOGS許可權來讀,而這個許可權對所有執行在Android4.0和以下的版本上的應用都是可以得到的。但是自從Android4.1(jelly bean)以後,這個許可權不再會被授權給第三方應用。

透過逆向這個應用,我們也可以發現密碼的hash值是原始密碼的雙重MD5並且是unsalted的。攻擊者可以透過使用字典攻擊來獲取原始的密碼,使用彩虹表或者暴力破解來生成一個匹配hash值的字串。破解密碼並不是必須的,只要這個hash值可以被直接用來建立登入會話。密碼的hash值和竊取到的Email地址可以用來登入camera 360以及雲(管理系統)。

0x04 使用洩露的tokens劫持會話


作為對應用登入請求的回應,伺服器返回一個token、使用者ID和其他賬戶資訊。camera 360會在下一個驗證自身的請求中使用這個token和使用者ID。

對我們測試賬戶的伺服器響應如下所示:

這個token是不會過期並且是固定的。它會保持有效即使使用者已經登出,因為會話變數只是被在客戶端刪除了而不是伺服器端。因此,成功的請求可以在任何時候透過使用這個token來傳送。

Camera 360把這些token,以及使用者ID、其他應用和裝置相關的資料洩漏到了logcat和網路通訊上。任何可以讀取logcat的Android應用、任何執行在裝置上或者在裝置的WiFi網路中的網路嗅探器都可以偷取到這些資料。這些洩露的資料可以被用來傳送未認證的請求給伺服器,也可以笑在雲端的所有非隱私影像。

0x05 洩露到logcat的資料


Camera 360會在登入的過程中和使用者開啟雲端賬戶相關的活動時洩露資料到logcat。

以下是日誌資訊的兩個例子:

在上面的資訊中,uid和user Id被設定成了相同的使用者ID。token,user token和localkey被設定成了相同的token值。

0x06 洩露到網路通訊中的資料


這個應用使用HTTPS傳送登入請求,但是下一次的請求是透過HTTP傳送的,一同傳送的還有一個未加密的認證token和user ID。這些未加密的資料可以輕易的從網路通訊中讀到。

一個這種HTTP請求如下所示:

0x07 使用token和user ID來下載照片


洩露的token,user ID和其他應用相關的資料可以透過利用以下任何一種請求來獲得使用者的照片:

這些HTTP請求可以透過兩種方法被用來下載照片,如下所示:

FETCHING IMAGE KEYS

以上提到的任何HTTP請求都可以被用來從伺服器上獲得照片的金鑰。伺服器對我們測試請求的應答如下:

Response for "http://cloud.camera360.com/v2/page/timeline?...."

Response for "http://cloud.camera360.com/v2/page/getNew?..."

金鑰可以從伺服器應答中提取,然後使用以下的HTTP請求來下載相關的影像:

Bypassing login page of web cloud

被用來獲取影像金鑰的HTTP請求同樣可以被用來繞過camera 360 雲網站的登入(https://cloud.camera360.com/login)。執行任何的這些請求都會讓使用者登入到web服務,因為這些請求包含了認證token。使用者被提示去在一個瀏覽器標籤頁中輸入這些URLS,然後就直接登入到了雲網站的主頁。

0x08 使用洩露的照片金鑰下載照片


camera 360的雲相簿程式會從伺服器上獲取最近的照片(非隱私的照片)來向使用者展示儲存的雲照片。它會把接收到的伺服器應答記錄到logcat上。一個這樣的資訊如下所示:

這些記錄的金鑰可以被那些能夠讀取logcat的應用竊取到。所有的金鑰都由user ID,和一個唯一的照片ID組成。正如上面所提到的,這些金鑰可以被用在以下的HTTP請求中來下載影像:

這是一個指向照片的固定連結,並不會失效。這個連結可以被用來在不提供證書或者是認證token的情況下下載照片。

0x09 從捕獲的通訊中提取照片


從網路通訊中收集到的這些影像都是未加密並且可以被輕易就看到的。

0x0a 預防


雲應用和Android應用安全需要提高,來預防那些更多的資料洩露和未授權資料訪問。以下是一些思路:

  • 不要在任何的產品中把一些隱私資料記錄到Android system log(logcat)上去
  • 透過使用以下的幾種方法來阻止會話被劫持:
  • 不僅僅把登入程式加密,還要把涉及到隱私資料的比如token,userID,照片金鑰和照片檔案等進行加密
  • 對token設定到期時間戳
  • 當傳送一個登出請求時,最好從伺服器端刪除掉所有的session variables。不要再次接受以前釋出過的token。
  • 伺服器可以在每個請求中都改變token的值。這樣就可以限制攻擊者的攻擊。
  • token可以和IP地址繫結,但是對那些使用動態IP地址的使用者可能不是很方便。
  • 指向照片的固定連線應該需要認證,或者讓這個連結有時效性。

0x0b 結論


camera 360在網路通訊和Android系統日誌中洩露了很多未加密的隱私資料,這會讓使用者的隱私受到威脅。

FireEye Mobile Threat Prevention Platform可以檢測資料洩露和Android應用中已發現的漏洞,並且幫助使用者在和應用分享隱私資料方面做出更好的選擇。

0x0c Reference


http://en.wikipedia.org/wiki/Session_hijacking

http://resources.infosecinstitute.com/session-hijacking-cheat-sheet/

本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!

相關文章