卡巴斯基針對應用內第三方廣告泄漏用戶信息的調查分析
來自專欄 嘶吼RoarTalk
在目前發生的許多網路攻擊中,很大一部分原因是因為用戶在非官方的渠道下載了經過惡意改造的應用。所以經驗告訴我們,只要在使用官方應用商店裡的評級很高的流行應用時,它們就一定是安全的。其實這種想法只是部分正確的,之所以說對,是因為通常這些官方應用商店裡的應用程序是在開發時考慮到安全性並且已經由應用商店的安全團隊進行審查。但之所以不全對,是因為卡巴斯基實驗室的研究人員發現,由於第三方SDK的緣故,許多流行的應用程序都會將用戶數據泄露在網路中,而廣告SDK通常是這方面的重災區。這些廣告SDK通常會收集用戶數據以便向用戶顯示更加有關聯的廣告內容,但在分析用戶的個人信息時,這些SDK會首先將數據發送到伺服器,而在這個過程中,數據往往無法被保護,很容易被泄漏。
官方應用商店裡的應用程序100%安全嗎?
在卡巴斯基實驗室的研究人員對約會應用程序進行安全性檢測時,他們發現了一些應用程序正在通過HTTP傳輸未加密的用戶數據。這讓研究者很吃驚,因為這些應用程序雖然在使用HTTPS與其伺服器進行通信。但在HTTPS請求中,第三方伺服器卻存在未加密的HTTP請求。由於這些應用程序非常受歡迎,所以卡巴斯基實驗室的研究人員決定仔細研究這些未加密的HTTP請求。
其中一個應用程序正在向 api.quantumgraph[.]com伺服器發送POST請求。這樣,該應用就能將未加密的JSON文件發送到與應用程序開發人員無關的伺服器。在以上這個JSON文件中,卡巴斯基實驗室的研究人員發現了很多用戶數據,其中包括設備信息,出生日期,用戶名和GPS位置信息。此外,這個JSON還包含了關於應用使用情況的詳細信息,其中包括用戶喜歡的配置文件信息。所有這些數據除了都以未加密方式發送到第三方伺服器外,包含的信息之詳細也讓人瞠目結舌。經過分析,這是由於使用了一個叫qgraph的分析模塊。
卡巴斯基實驗室的研究人員研究的另外兩個約會應用程序基本上也是這樣,他們雖然使用HTTPS與他們的伺服器通信,但同時卻有HTTP請求,未加密的用戶數據被發送到第三方伺服器。不過這兩個約會應用的第三方伺服器除了將數據發送給了廣告SDK外,GET HTTP請求的用戶數據還被用作URL中的參數。一句話,將未加密的用戶數據傳輸到第三方伺服器本身就沒有什麼安全保障。
從這一點來看,合法的應用程序的安全性有時也很糟糕。為了驗證這個想法,其中一個研究人員決定檢查他自己的設備,他收集了將近一個小時的網路活動。事實證明,這些數據足以驗證他自己的數據存在著未加密的請求。之所以會出現這些請求,是因為流行應用程序使用的第三方SDK。它正在發送我的位置,設備信息和用於推送消息的令牌。
所以他決定看看那些與發生信息泄漏的sdk有關的約會應用程序,以了解泄漏發生的真實原因。毫無疑問,這些約會應用程序的數據不止被一個第三方所使用。事實上,每個應用程序至少包含40個不同的模塊。他們構成了這些應用程序的一大部分構件,至少有75%的Dalvik位元組碼位於第三方模塊中。甚至在一個應用程序中,第三方代碼的比例高達90%。
開發人員經常使用第三方代碼來節省開發時間並利用一些現成的功能,這非常能節省成本,而且還允許開發人員專註於自己的想法,而不是處理之前已經開發多次的東西。但同時,這也意味著開發人員不太可能知道所使用的第三方代碼的所有細節,以及是否可能包含安全問題,這就是卡巴斯基實驗室的研究人員在研究中所發現的應用程序出現信息泄漏的根本原因。
調查分析結果
由於知道有很多暴露用戶數據的SDK,並且幾乎每個應用都使用多個SDK,卡巴斯基實驗室的研究人員決定對更多類似的應用和SDK進行調查。為此,卡巴斯基實驗室的研究人員使用來自內部Android沙盒的網路流量轉儲。自2014年以來,卡巴斯基實驗室的研究人員已從1300多萬個APK收集了相關的網路活動。這個想法很簡單,就是卡巴斯基實驗室的研究人員安裝並啟動應用程序並模仿用戶活動。在應用執行期間,卡巴斯基實驗室的研究人員收集日誌和網路流量。雖然沒有真正的用戶數據,但對於應用程序而言,它看起來就是一個真實用戶設備。
卡巴斯基實驗室的研究人員搜索了兩個最流行的HTTP請求:GET和POST。在GET請求中,用戶數據通常是URL參數的一部分,而在GET請求中,用戶數據位於請求的Content欄位中,而不是URL。在卡巴斯基實驗室的研究人員的研究中,卡巴斯基實驗室的研究人員一開始只是想尋找了使用至少其中一個請求發送未加密的用戶數據的應用程序,結果發現許多應用程序都使用了這兩個請求。
目前,卡巴斯基實驗室的研究人員能夠確定,有超過400萬個APK會將用戶數據泄漏在網上。其中有很多是因為它們的開發人員在一開始構建時就犯了一個錯誤,所以目前大多數受歡迎的應用程序都會為第三方SDK暴露用戶的數據。對於每種類型的請求(GET或POST),卡巴斯基實驗室的研究人員提取應用程序傳輸用戶數據的域。然後,他們根據應用程序的受歡迎程度對這些域進行了排序,即按照已安裝這些應用程序的用戶數。這樣,哪些是泄漏用戶數據最多的SDK就一目了然了。他們中的大多數都暴露了設備信息,且有些傳輸的還是更加敏感的信息,如GPS位置或個人信息。
通過GET請求泄漏應用程序敏感數據的四個最流行的域
http://mopub.com
該域名是一個流行的廣告網路,它被本文開頭提到的兩個約會應用程序使用。卡巴斯基實驗室的研究人員在該SDK中發現了更多受歡迎的應用。根據Google Play商店和其他設備的統計,其中至少有5個應用程序擁有超過1億的安裝量。
它們以未加密的形式傳輸以下數據:
1.設備信息(製造商名稱,型號,屏幕解析度);
2.網路信息(MCC,MNC);
3.程序包名稱;
4.設備所在的位置;
5.關鍵詞;
關鍵詞是傳輸數據中最有趣的部分,它們可以根據應用參數設置而有所不同。在卡巴斯基實驗室的研究人員的數據中,通常會有一些個人信息,如姓名、出生日期和性別。位置也需要由應用程序設置,而且通常應用程序會向廣告SDK提供GPS定位。
卡巴斯基實驗室的研究人員發現這個SDK有幾個不同版本,最常見的版本能夠使用HTTPS而不是HTTP。但它需要由應用程序開發人員設置,根據卡巴斯基實驗室的研究人員的調查分析,大部分廣告SDK都會默認使用HTTP。
http://rayjump.com
該域名也是一個非常流行的廣告網路,卡巴斯基實驗室的研究人員發現有與該域名相關的兩個應用程序的安裝量超過5億,七個應用程序的安裝量超過了1億,另外還有許多安裝了數百萬的應用程序。
這些SDK會傳輸以下數據:
1.設備信息(製造商名稱,型號,屏幕解析度,操作系統版本,設備語言,時區,IMEI,MAC);
2.網路信息(MCC,MNC);
3.程序包名稱;
4.設備位置;
卡巴斯基實驗室的研究人員提到,儘管大部分數據都是以純文本的形式作為URL參數傳輸的,但設備位置,IMEI和MAC地址是用Base64編碼的。雖然不能說這些信息受到了安全保護,但至少他們不是純文字的。目前,卡巴斯基實驗室的研究人員還無法找到可以使用HTTPS的任何SDK版本,因為所有版本都有硬編碼的HTTP URL。
http://tapas.net
這是另一個受歡迎的廣告SDK,收集以下數據:
1.設備信息(製造商名稱,型號);
2.網路運營商代碼;
3.程序包名稱;
4.設備位置;
卡巴斯基實驗室的研究人員在Google Play商店和其他的設備中發現了與該域名相關七個應用,其中有一個的安裝,已經超過一千萬次。卡巴斯基實驗室的研究人員目前還無法找到任何方式讓開發人員在此SDK中從HTTP切換到HTTPS。
http://appsgeyser.com
第四個廣告SDK是appsgeyser,它與以上3個的不同之處在於它實際上是構建應用程序的平台,它允許應用程序的開發者簡單地創建一程序個。這樣,創建的應用就將在其中包含一個廣告SDK,該SDK使用HTTP請求中的用戶數據。所以,這些應用程序實際上是由該服務平台而不是由開發人員開發的。這個廣告SDK會傳輸以下數據:
1.設備信息(製造商名稱,型號,屏幕解析度,操作系統版本,android_id);
2.網路信息(運營商名稱,連接類型);
3.設備位置;
卡巴斯基實驗室的研究人員發現使用此平台創建的大量應用程序正在使用此廣告SDK,但其中大多數不是很受歡迎。最流行的也只有成千上萬的安裝。但是,真的有很多這些應用程序。
根據http://appsgeyser.com的統計,有超過600萬的類似應用程序,它們的安裝量加起來接近20億。它們總共展示了近2000億個廣告 ,可能都是通過HTTP。
通過POST請求泄漏應用程序敏感數據的四個最流行的域
http://ushareit.com
所有將未加密數據發布到此伺服器的應用程序都是由同一家公司創建的,因此數據泄漏不是因為第三方代碼。但這些應用程序非常受歡迎,其中一個應用程序在Google Play商店中安裝了5億次以上。這些應用程序收集大量的設備信息:
1.生產商名稱;
2.模型;
3.屏幕解析度;
3.操作系統版本;
4.設備語言;
5.設備所在的國家;
6.android_id;
7.IMEI;
8.IMSI;
9.MAC;
這個未加密的數據除了會被發送到伺服器,此外,他們上傳的數據中還包含一系列支持數據發送的命令,其中一個是安裝應用程序。命令列表以純文本形式傳輸,並且來自伺服器的響應也是未加密的,這意味著它可以被攔截和修改。該應用程序可以靜默安裝一個下載的應用程序。更糟糕的是,這款應用程序可以悄無聲息地安裝一個下載的應用程序,它們只需成為一個系統應用程序,或者含有root許可權就能運行。
Lenovo
這是流行的應用泄露用戶數據的另一個例子,不是因為第三方代碼,而是因為開發人員的錯誤。卡巴斯基實驗室的研究人員發現了一些流行的Lenovo應用程序會收集和傳輸未加密的如下設備信息:
1.IMEI;
2.操作系統版本;
3.設備語言;
4.生產商名稱;
5. model;
6.屏幕解析度;
雖然這些信息不是很敏感,但是,卡巴斯基實驗室的研究人員發現了幾款Lenovo應用程序以未加密的形式發送更敏感的數據,例如GPS位置,電話號碼和電子郵件。
卡巴斯基實驗室的研究人員已向Lenovo報告了這些問題,且Lenovo已經修復了所有問題。
http://Nexage.com
該域名被一個非常受歡迎的廣告SDK使用,目前有大量的應用程序在使用它。其中一個甚至安裝了超過5億次備,其他七個應用的安裝量加起來超過1億。使用此SDK的大多數應用程序都是遊戲程序。這個SDK有兩個有趣的事情:傳輸的數據和使用的協議。該SDK會將以下數據發送到第三方伺服器:
1.設備信息(屏幕解析度,存儲大小,音量,電池電量);
2.網路信息(運營商名稱,IP地址,連接類型,信號強度);
3.設備位置;
4.它還發送有關硬體可用性的信息:
4.1前後攝像頭可用性
4.2 NFC許可
4.3 藍牙許可
4.4 麥克風許可權
4.5 GPS位置許可權許可
該廣告SDK也可能發送一些個人信息,例如年齡、收入、教育程度、種族、政治觀點等。雖然卡巴斯基實驗室的研究人員還沒有看到任何向此SDK提供這些詳細信息的應用程序,但研究人員認為用戶在嚮應用此SDK應用程序輸入此類詳細信息時應該能被SDK捕獲到,這樣信息泄漏就不可避免。
關於這個SDK的第二個有趣的事情是它使用HTTPS來傳輸數據,但通常只用於傳輸初始通信信息。之後,它可能會從伺服器接收指定HTTP URL的新配置設置。
http://Quantumgraph.com
另一個泄露數據的SDK使用的是http://quantumgraph.com域,這是一個具有分析功能的SDK,而不是廣告。卡巴斯基實驗室的研究人員在Google Play商店中發現了兩個安裝量超過1000萬的應用,另外還有七個應用的安裝量加起來也超過了100萬。不過,使用此SDK的用戶超過90%來自印度。
該SDK通過HTTP發送帶有數據的JSON文件,不過傳輸的數據可能因應用程序而異,因為它是一個分析SDK,它會發送應用程序提供的信息。在大多數情況下,發送的數據包括以下項目:
1.設備信息;
2.個人信息;
3.設備位置;
4.應用使用情況;
在約會應用程序的研究中,還會發送一些用戶的偏好信息,及所有用戶的活動信息。
雖然該SDK使用硬編碼的HTTP URL,但在卡巴斯基實驗室的研究人員的曝光之後,他們使用HTTPS URL創建了另一個版本。但是,目前大多數應用程序仍在使用舊的HTTP版本。
其他SDK
當然,還有其他的SDK使用HTTP來傳輸用戶數據,但它們都不太流行。幾乎與上述SDK相同,他們中的很多都暴露了設備位置,有些還暴露了電子郵件和電話號碼。
其他發現
在卡巴斯基實驗室的研究人員的研究中,他們還發現許多應用程序通過HTTP傳輸未加密的身份驗證信息。令人驚訝地的是,目前還有很多應用程序仍在使用HTTP來進行驗證。
不過這些SDK,並不總是傳輸用戶的驗證令牌,有時也傳輸資料庫的信息。由於這些SDK以暴露於互聯網中,因此擁有這些服務的憑據是沒有意義的。這類應用程序通常會傳輸身份驗證令牌,但卡巴斯基實驗室的研究人員也看到了未加密的登錄名和密碼。
惡意軟體也存在使用HTTP來傳輸用戶數據的情況
挖掘具有未加密數據的HTTP請求,使卡巴斯基實驗室的研究人員能夠發現新的惡意網站。事實證明,許多惡意應用程序也使用HTTP來傳輸用戶數據。對於惡意軟體來說,它們甚至更糟糕,因為它可以竊取更多敏感數據,例如簡訊、通話記錄、聯繫人等。惡意應用程序不僅竊取用戶數據,還將它們暴露在互聯網,以供其他人利用和銷售。
泄露的數據
在本次研究中,卡巴斯基實驗室的研究人員分析了沙箱中超過1300萬個APK文件的網路活動。平均下來,大約每四個網路通信應用程序就有一個會暴露用戶數據。事實上,有一些真正流行的應用程序也在傳輸未加密的用戶數據,這值得我們警惕。根據卡巴斯基實驗室的統計數據,平均下來,每個用戶大概會安裝100多個應用程序,其中包括系統和預安裝的應用程序,因此卡巴斯基實驗室的研究人員認為大多數用戶都受到了影響。
在大多數情況下,這些應用程序都會暴露以下信息:
1.IMEI,國際移動設備身份(唯一的電話模塊ID),除非用戶更換設備,否則用戶無法重置;
2.IMSI,國際移動用戶識別碼(唯一SIM卡ID),除非用戶更換SIM卡,否則用戶無法重置;
3.Android ID,手機設置期間隨機生成的一個號碼,用戶可以通過將其設備重置為出廠設置來更改該號碼。但是從Android 8開始,每個應用程序,用戶和設備都會隨機生成一個數字。
設備信息,如製造商、型號、屏幕解析度、系統版本和應用程序名稱;
4.設備位置;
5.一些應用會暴露個人信息,主要是用戶的姓名、年齡和性別,甚至是用戶的收入。用戶的電話號碼和電子郵件地址也可能被泄露;
為什麼會出現信息泄露?
因為這些數據是通過HTTP傳輸的,可以被攔截,任何人都可以通過Wi-Fi連接攔截它,網路管理員可以攔截它,網路運營商也可以攔截它。這些數據將通過多個網路設備傳輸,並可以在任何網路設備上讀取。即便是你的家庭路由器也可能被感染,目前有很多惡意軟體感染家庭路由器的例子。
在沒有加密的情況下,這些數據將以純文本形式公開,並且可以簡單地從請求中被提取。通過了解IMSI和IMEI,任何人都可以跟蹤來自不同來源的數據。所以,你需要同時更換SIM卡和設備才能擺脫跟蹤。
不幸的是,HTTP數據可以被修改。比如,有人可能會更改正在顯示的廣告,更糟的是,別有用心的人可能會將鏈接更改為應用下載。由於一些廣告網路推廣應用程序會要求用戶安裝它們,因此可能會導致用戶下載惡意軟體而不是所請求的應用程序。
目前有應用可以攔截HTTP流量並繞過Android許可權系統,你可以通過更改Android使用許可權來保護用戶免受意外的應用程序活動。這就涉及在安裝應用程序時,需要看清它們將需要什麼訪問許可權。從Android 6開始,所有許可權被分為兩組:正常和危險。如果應用程序需要危險的許可權,則必須在運行時詢問用戶許可權,而不是在安裝之前。所以,為了獲得位置,應用程序需要請求用戶授予訪問許可權。為了讀取IMEI或IMSI,應用程序還需要詢問用戶的訪問許可權,以免被劃分為惡意出現。
但是,應用可以將代理添加到Wi-Fi設置,並讀取從其他應用傳輸的所有數據。要做到這一點,應用就需要成為系統應用程序、配置為配置文件或是設備所有者本身。或者,應用程序可以在設備上設置VPN服務,將用戶數據傳輸到其伺服器上來。之後,應用程序可以通過讀取HTTP請求來找到設備的位置,而無需訪問設備的位置。
緩解措施
從2016年下半年開始,越來越多的應用程序已經從HTTP切換到HTTPS。但截至2018年1月,63%的應用程序正在使用HTTPS,但其中大多數仍在使用HTTP。將近90%的應用程序正在使用HTTP,其中許多人的敏感數據正在被未加密地傳輸。
對於程序開發者來說
1.不要使用HTTP,這樣用戶數據就被泄漏;
2. 打開301重定向到HTTPS的前端;
3.如果你必須使用HTTP,就加密數據,此時非對稱密碼學非常有效。
4.始終使用最新版本的SDK,雖然要進行額外的測試,但這非常重要,因為一些安全問題可能會在最新的版本中得到解決。但從卡巴斯基實驗室的本次研究來看,許多應用程序都不是使用的最新的第三方SDK版本。
5.發布前請檢查應用的網路通信,雖然這個過程不會超過幾分鐘,但是你將能夠發現是否有任何SDK從HTTPS切換到HTTP並暴露用戶數據。
對於用戶來說
1.檢查你的應用許可權,如果你不明白為什麼程序需要此許可權,請不要授予。大多數應用程序不需要訪問你的位置,所以不要授予。
2.使用VxN,它將加密你的設備和外部伺服器之間的網路流量。
本文翻譯自:https://securelist.com/leaking-ads/85239/如若轉載,請註明原文地址: http://www.4hou.com/web/11179.html 更多內容請關注「嘶吼專業版」——Pro4hou
推薦閱讀:
※五種利用本地包含漏洞的方式
※侵襲歐洲的新型勒索病毒「壞兔子(Bad Rabbit)」會造成多大危害?該如何應對?
※為什麼這麼多商業Android開發者不混淆代碼?
※網路安全live第一期:TCP-IP攻擊
※史上最嚴重的DDoS攻擊,GitHub已中招
TAG:信息安全 |