張建珍
摘 要:針對微信系統(tǒng)在智能手機(jī)平臺上存在的安全問題,以O(shè)WASP(Open Web Application Security Project)發(fā)布的2016年十大移動易攻擊分類為依據(jù),分析微信系統(tǒng)在Android和iOS兩大主流智能手機(jī)平臺上的安全性,研究發(fā)現(xiàn)存在“不安全的數(shù)據(jù)存儲”、“不安全的通信”、“不安全的認(rèn)證”、“不安全的授權(quán)”、“加密不足”等影響用戶信息安全的五種情形。從微信系統(tǒng)用戶登錄設(shè)計和用戶數(shù)據(jù)存儲兩方面,提出通過修改微信默認(rèn)登錄設(shè)置、添加數(shù)據(jù)噪音和改變聊天數(shù)據(jù)表索引的建議,以提高微信系統(tǒng)安全性。
關(guān)鍵詞:移動應(yīng)用程序; 微信; 隱私保護(hù); 登錄安全; 存儲安全; 關(guān)聯(lián)分析
Abstract: Regarding the security problems of WeChat system on the smartphone platform, this paper analyzes the security of WeChat App on both Android and iOS platforms, based on the 2016 top 10 mobile vulnerabilities category of OWASP (Open Web Application Security Project)-i.e. "Insecure Data Storage", "Insecure Communication", "Insecure Authentication", "Insufficient Cryptography", "Insecure Authorization" are found existing on both of Android and iOS platforms . Finally, based on the findings, this paper presents two recommendations on securing the App (i.e. enhancing the default login settings, the noise data and the index of chat table).
Key words: mobile application; WeChat; privacy protection; login security; storage security; relevant analysis
引言
根據(jù)企鵝智酷數(shù)據(jù),截止2016年12月,微信與WeChat合并用戶達(dá)到8.89億,用戶覆蓋200多個國家和地區(qū)。2017微信數(shù)據(jù)報告顯示,僅2017年9月,微信日均登錄用戶達(dá)到9.02億,微信正成為除facebook 和Twitter外,最為流行的社交軟件之一。
微信主要應(yīng)用包括:即時通信、朋友圈、微信支付、查看附近的人、漂流瓶、公眾號及應(yīng)用小程序。微信應(yīng)用支持的平臺包括Android、iOS、Windows、Blueberry等,其中以Android和iOS版用戶最多。當(dāng)微信逐漸成為一種生活方式的同時,微信中包含的個人信息的安全性便受到人們的普遍關(guān)注。
OWASP是一個開放、非盈利的國際安全組織,致力于應(yīng)用程序的設(shè)計、開發(fā)、運(yùn)行等領(lǐng)域的安全性研究[1],被視為Web應(yīng)用安全領(lǐng)域的權(quán)威參考[2]。針對移動應(yīng)用程序的安全,OWASP公布了“Mobile Top 10 2016”[3],從10個方面討論了影響因素,根據(jù)這10項影響移動應(yīng)用程序安全的因素,開發(fā)人員可以評估移動應(yīng)用程序的安全性進(jìn)而改進(jìn)設(shè)計。
本文主要研究以下兩個問題:
(1)微信登錄方式及其安全性;
(2)微信數(shù)據(jù)存儲及其安全性。
1 微信系統(tǒng)安全性研究近況
針對微信的犯罪案例已多次見諸報端,因此,微信系統(tǒng)安全性成為研究熱點。
就微信應(yīng)用的安全性,主要集中在即時通信、微信支付、朋友圈、漂流瓶、公眾號等方面。如林珍等人分析了從冒充官方微信賬號、朋友圈測試、漂流瓶等方面泄漏微信用戶信息的可能性[4-5],并提出通過微信眾籌、掃二維碼方式導(dǎo)致用戶財產(chǎn)損失的風(fēng)險。陳曦、李鵬薄等人研究了通過微信朋友圈泄露用戶地理位置、個人照片、商業(yè)秘密的問題[6]。李燕軍探索了微信“查看附近的人”和“漂流瓶”存在的安全隱患[7]。彭菲等人研究了微信支付存在的安全漏洞[5-8]。
就微信系統(tǒng)平臺安全性,主要集中在Android和iOS兩大平臺。Wu等人從取證角度分析了讀取Android系統(tǒng)上微信用戶數(shù)據(jù)的可能性,演示了從root后的系統(tǒng)上用工具adb備份并使用商業(yè)取證工具(XRY、Oxygen forensic analyst等)及專門解密算法得到用戶聊天記錄的過程,但未就其它數(shù)據(jù)表作分析[9]。Gao提出了一個分析iOS系統(tǒng)中微信數(shù)據(jù)的方法,讀取了微信用戶的“朋友信息”、“語音文件”、“視頻文件”等數(shù)據(jù)[10],但沒有就讀取的數(shù)據(jù)內(nèi)容及關(guān)聯(lián)性作深入分析。
就微信通信網(wǎng)絡(luò)安全性,主要集中wifi和數(shù)據(jù)流量兩方面。智能手機(jī)網(wǎng)絡(luò)接入主要包括移動數(shù)據(jù)接入和wifi接入。無線環(huán)境下,通訊信息是否存在被截獲、修改的風(fēng)險也是影響用戶信息安全的重要因素。張玉梅使用抓包軟件Fiddler抓取iOS系統(tǒng)微信通訊過程中產(chǎn)生的數(shù)據(jù)包以測試微信通訊安全性,分別分析了文字消息、語音消息、圖片消息、表情消息、網(wǎng)頁鏈接、語音通話、視頻通話、朋友圈消息等微信主要通訊功能的安全性,發(fā)現(xiàn)表情消息、網(wǎng)頁鏈接、朋友圈消息是未加密的,可以通過抓包軟件直接獲得[11]。Choo等人研究Android系統(tǒng)上VoIP apps的安全性和隱秘性,檢測了包含微信在內(nèi)的流行社交軟件分別在移動數(shù)據(jù)網(wǎng)之間、移動數(shù)據(jù)網(wǎng)與wifi之間發(fā)送文本信息,發(fā)現(xiàn)微信進(jìn)行語言信息通信時,是加密進(jìn)行的,而語音信息經(jīng)Histogram和Entropy兩種方法分別檢測,均顯示未加密[12]。
據(jù)研究可知,現(xiàn)階段還沒有人對微信登錄的安全性及用戶數(shù)據(jù)本地存儲,也沒有根據(jù)OWASP的移動應(yīng)用程序安全因素進(jìn)行系統(tǒng)分析。
2 理論分析與實驗發(fā)現(xiàn)
2.1 利用OWASP分析微信系統(tǒng)安全性
本文研究中主要分析了OWASP的”mobile top 10 2016”中M2、M3、M4、M5、M6這5項指標(biāo)。M2為不安全的數(shù)據(jù)存儲,指將SQL數(shù)據(jù)庫、日志文件、cookie等存放于不安全位置。M3為不安全的通信,指由于弱握手協(xié)議、機(jī)密信息明文通信導(dǎo)致數(shù)據(jù)在傳輸過程中被截獲、修改。M4為不安全的認(rèn)證,指移動應(yīng)用程序可以無需提供訪問許可而匿名執(zhí)行后端API服務(wù)請求或者移動應(yīng)用程序,使用弱口令策略和指紋的登錄口令。M5為加密不足,指加密過程或加密算法本身存在缺陷,如RSA、RC2、MD4、MD5、SHA1等。M6為不安全的授權(quán),指不檢查獲得驗證的用戶是否具有執(zhí)行某種功能的許可。不安全的授權(quán)與不安全的認(rèn)證非常相似,二者緊密相關(guān),驗證是對用戶身份的識別,授權(quán)往往緊隨驗證之后。
2.2 微信登錄方式及安全性
微信賬號分為初始微信號和用戶自定義微信號。初始微信號是以“wxid_”開頭的字符串,是微信用戶在微信數(shù)據(jù)庫中的唯一索引值;用戶自定義微信號是由用戶自行定義的字符串,一經(jīng)定義不可修改。微信系統(tǒng)不支持根據(jù)初始微信號來查找微信用戶。下文提到的微信號均指用戶自定義微信號。
目前微信共支持5種登錄方式,分別是微信號、郵箱地址、QQ號、手機(jī)號、聲音鎖。使用微信號加密碼登錄時,由于單獨設(shè)置賬號與密碼,保證了微信不受賬號被盜的牽連,不便之處是用戶需要專門記憶微信號與密碼;使用郵箱地址登錄與使用微信號登錄共享密碼,方便之處是不必額外記憶賬號,容易出錯的地方是郵箱地址登錄時使用的不是郵箱密碼,而是用戶專門為微信設(shè)計的密碼;通過QQ登錄微信,QQ號碼即微信號,二者共享賬號及密碼,存在的問題是一旦QQ號碼被盜意味著微信也就被盜了;使用手機(jī)號登錄的便捷之處在于用戶可以無需記憶密碼只需通過手機(jī)接收短信驗證碼就可以登錄微信,這種登錄方式只要保證手機(jī)不被盜,微信相對還是安全的;聲音鎖登錄類似iOS系統(tǒng)的指紋登錄,但可能出現(xiàn)由于用戶個人健康原因或設(shè)備故障,導(dǎo)致這種登錄方式失效。
盡管微信有多種登錄方式,但用戶一旦在手機(jī)上登錄某微信號后,只要未退出登錄,那么該微信號將在該手機(jī)上默認(rèn)自動登錄,即使手機(jī)重新開機(jī)也不需要重新輸入微信密碼來登錄。
微信設(shè)計團(tuán)隊充分考慮了一般情況下對微信賬號的安全保障。但對手機(jī)被盜后盜密者通過技術(shù)手段繞過手機(jī)屏保,利用微信自動登錄的特點盜取微信用戶信息的可能性考慮不足的。根據(jù)OWASP發(fā)布的造成移動應(yīng)用程序不安全的設(shè)計前十大因素,微信不安全的登錄屬于不安全的認(rèn)證(M4)與不安全的授權(quán)(M6)。
2.3 微信數(shù)據(jù)存儲及其安全性
按微信系統(tǒng)設(shè)計,用戶聯(lián)系人、聊天記錄、朋友圈消息等數(shù)據(jù)存儲在用戶手機(jī)中[12]。Android系統(tǒng)存放微信用戶數(shù)據(jù)的文件夾為“User Files\\tencent\\MicroMsg”;iOS系統(tǒng)存放用戶數(shù)據(jù)的文件夾為“Application Data\\AppDomain-com.tencent.xin\\Documents”。
本部分以oppo R8205和iphone6作為實驗用機(jī),實驗環(huán)境見表1。
為讀取不同智能手機(jī)平臺上的微信數(shù)據(jù),實驗用到工具軟件及版本見表2。
2.3.1 Android平臺的發(fā)現(xiàn)
從MicroMsg文件目錄可以看出該oppo R8205手機(jī)的微信系統(tǒng)有2個用戶登錄使用。分別為“28b647f334f350ae839a93af1dbceebc”和”7596f45c188e092bbd4ef2042462d31c”,是經(jīng)過加密的2個微信賬號,這2個文件夾下分別存放對應(yīng)的用戶數(shù)據(jù)。
在DOWNLOAD文件夾下,明文存放用戶通過微信應(yīng)用下載過的所有文件。在VOICE和VODIO文件夾下,分別明文存放用戶在使用微信時收發(fā)過的來自網(wǎng)絡(luò)端的聲音與視頻文件。通過對Android平臺明文信息分析,可以了解到微信用戶部分個人信息,如社交行為、工作性質(zhì)等。其詳盡信息如圖1所示。
2.3.2 iOS平臺的發(fā)現(xiàn)
從Documents文件目錄可以看出,該iphone6手機(jī)的微信系統(tǒng)有2個賬號登錄使用,分別為“4168491a9a1b30dd4f243e255794878c”和“a897a1392424662f72e96fe92bdabeff”,是經(jīng)過加密的2個微信賬號,這2個文件夾下分別存放對應(yīng)的用戶數(shù)據(jù)。以下重點分析wc005_008數(shù)據(jù)庫和MM數(shù)據(jù)庫,并從2個數(shù)據(jù)庫中數(shù)據(jù)的關(guān)聯(lián)性獲取用戶敏感信息。
(1)MM數(shù)據(jù)庫
在MM數(shù)據(jù)庫中存有以Hello_962df開頭的表,該表中保存著所有向該用戶發(fā)送過“加好友”請求的微信用戶信息,如圖2所示。其中:1為發(fā)送方微信賬號;2為微信賬號使用的昵稱;3為打招呼內(nèi)容;4為登記的國家和城市。
(2)wc005_008數(shù)據(jù)庫
在wc005_008數(shù)據(jù)庫中存有MyWc_Message01表,該表記錄用戶參與過的朋友圈信息。通過分析表內(nèi)容可知,Id字段相同的記錄表示針對同一條朋友圈信息進(jìn)行的評論。Id字段相同的記錄行包含的微信用戶與本機(jī)登錄用戶擁有某位共同的朋友。如圖3所示,“貓老爺”、“Irene Han”、“Fei 飛”3個微信用戶及本機(jī)登錄用戶共同針對Id=12514160625456656511的朋友圈信息發(fā)表評論,說明存在某個微信用戶同時與“貓老爺”、“Irene Han”、“Fei 飛”3個微信用戶及本機(jī)登錄用戶為朋友關(guān)系,由此看來存在該4位用戶同屬于某個朋友圈的可能性。
(3)wc005_008與MM數(shù)據(jù)庫關(guān)聯(lián)分析
MM數(shù)據(jù)庫中以“Chat_”開頭的數(shù)據(jù)表表名經(jīng)過加密,表內(nèi)存放聊天內(nèi)容,但無法確定聊天對象。wc005_008數(shù)據(jù)庫中以“MyWC01_”開頭的數(shù)據(jù)表表名經(jīng)過加密,表內(nèi)存放聊天對象以wxid_開頭的初始微信賬號。在微信系統(tǒng)中每個微信用戶的初始微信號是用戶在微信數(shù)據(jù)庫的唯一索引,用戶可以自定義微信號和昵稱,自定義微信號將取代以wxid_開頭的初始微信號顯示在微信用戶“詳細(xì)資料”欄中,但初始微信號仍然是用戶在微信數(shù)據(jù)庫中的唯一索引。由于微信系統(tǒng)屏蔽了用戶通過初始微信號搜索微信用戶,因此無法通過以上2個數(shù)據(jù)表確定微信用戶聊天對象與聊天記錄的對應(yīng)關(guān)系。
本文通過對wc005_008數(shù)據(jù)庫和MM數(shù)據(jù)庫中的3個表之間數(shù)據(jù)的關(guān)聯(lián)分析,確定了微信本地數(shù)據(jù)中用戶的聊天對象與聊天信息的關(guān)聯(lián)情況。以MM數(shù)據(jù)庫中數(shù)據(jù)表“Chat_0c534c8e3835a0ea21 eacdfd7c6ee169”為例,操作過程如下:
步驟一:在wc005_008數(shù)據(jù)庫中查找包含“Chat_0c534c8e3835a0ea21eacdfd7c6ee169”字符串的數(shù)據(jù)表,如圖4所示第一步。找到“MyWC01_0c534c8e3835a0ea21eacdfd7 c6ee169”數(shù)據(jù)表。由于這兩個文件除文件名開頭不同外,后續(xù)字母數(shù)字串完全相同。由此可以推斷該數(shù)字字母串為同一微信號加密后得到的密文,兩個數(shù)據(jù)表應(yīng)為微信用戶與同一微信賬號的聊天記錄。
步驟二:查看“MyWC01_0c534c8e3835a0ea21 eacdfd7c6ee169”數(shù)據(jù)表,找到“FromUser”字段,存放以wxid_開頭的發(fā)送方初始微信號,如“wxid_amqyi5qa6uir12”,由于無法通過初始微信號反查微信用戶,本文從MM數(shù)據(jù)庫的數(shù)據(jù)表“Hello_962df025475d4ce521192751df4ebbfc”中查找包含該初始微信號的加好友請求,如圖4所示第二步。
步驟三:分析“Hello_962df025475d4ce521192751 df4ebbfc”中“Message”字段包含內(nèi)容,“fromusername”為發(fā)送方初始微信號,“fromnickname”為發(fā)送方微信昵稱?!癱ontent”為發(fā)送方加好友時的打招呼內(nèi)容,從而獲得微信用戶聊天對象為“麥克魚”,如圖4所示第3步。
步驟四:確定“Chat_0c534c8e3835a0ea21eacdfd 7c6ee169”的“Message”字段即為本機(jī)登錄微信用戶與“麥克魚”微信用戶的聊天記錄。
微信系統(tǒng)本地存儲的用戶數(shù)據(jù)絕大部分經(jīng)過了加密,正常情況下難以直接讀取。但分析MM數(shù)據(jù)庫和wc005_008數(shù)據(jù)庫,發(fā)現(xiàn)RSA 加密算法的缺陷:公鑰和私鑰生成后,加密或解密中的參數(shù)固定,導(dǎo)致同個明文加密后的密文總是相同[13]。通過查找相同密文數(shù)據(jù)表關(guān)聯(lián),分析出用戶的聊天對像和聊天內(nèi)容。雖然聊天時間加密,但數(shù)據(jù)庫記錄呈現(xiàn)仍以發(fā)生的時間前后為順,因此可以分析出用戶聊天對象和聊天內(nèi)容。本文通過實驗讀取了不同手機(jī)平臺上用戶的微信數(shù)據(jù),通過公開發(fā)布的工具軟件讀取了用戶的微信聊天記錄、微信聯(lián)系人信息,屬于不安全的數(shù)據(jù)存儲(M2)和加密不足(M5),這說明微信系統(tǒng)在用戶數(shù)據(jù)的本地存儲方面存在泄漏個人隱私的風(fēng)險。
3 結(jié)束語
本文從實驗及研究工作,可以得出以下結(jié)論及建議:
微信登錄方式及其安全性方面,如果不發(fā)生手機(jī)丟失的情況,微信登錄方式是安全的,用戶數(shù)據(jù)的本地存儲風(fēng)險也可以不作考慮。一旦手機(jī)丟失,微信涉及到個人隱私還是存在極大泄漏風(fēng)險的。因此,人們提出修改微信系統(tǒng)同一賬號同一設(shè)備可以自動登錄的默認(rèn)設(shè)置,借鑒微信用于保護(hù)用戶財產(chǎn)安全的二次認(rèn)證及授權(quán)。為兼顧用戶的便捷體驗,微信系統(tǒng)可以使用指紋、聲音、手勢等快捷的二次身份驗證與登錄授權(quán),以進(jìn)一步提高微信系統(tǒng)登錄安全性。
微信數(shù)據(jù)本地存儲及安全性方面,從用戶角度,涉及隱私的聊天記錄用戶應(yīng)及時刪除銷毀盡量避免信息被讀取。從移動應(yīng)用程序設(shè)計角度,微信系統(tǒng)對數(shù)據(jù)表加密時應(yīng)從兩方面考慮阻斷信息被關(guān)聯(lián)分析的可能性。首先,加密聊天記錄時間的同時修改聊天記錄索引,以防止根據(jù)語言邏輯性對聊天記錄內(nèi)容的猜解。其次,使用隨機(jī)同態(tài)加密算法[13]加密數(shù)據(jù)表從而加大表與表之間關(guān)聯(lián)性分析難度。最后,也是最有效方法是根據(jù)差分隱私保護(hù)算法,使用拉普拉斯噪音機(jī)制,向wc005_008數(shù)據(jù)庫的“Chat_”表添加噪音數(shù)據(jù)實現(xiàn)噪音擾動,從而實現(xiàn)差分隱私保護(hù)以降低微信用戶聊天記錄被關(guān)聯(lián)猜解機(jī)率。
微信用戶間文字消息、圖片消息是加密通訊的,但語音信息和視頻信息未加密,存在不安全的通信(M3)和通訊信息加密不足(M5)的安全隱患。為防止語音和視頻信息被截獲,建議微信系統(tǒng)利用可分離的密文域可逆信息隱藏算法[14]對用戶收發(fā)的語音和視頻信息加密提升安全性。
本文研究中主要挖掘了微信用戶的下載文件對用戶身份信息的暗示,wc005_008數(shù)據(jù)庫與MM數(shù)據(jù)庫中3個部分加密的數(shù)據(jù)表中數(shù)據(jù)之間的關(guān)聯(lián)性對用戶聊天對象和聊天記錄的暗示,但對用戶在使用微信進(jìn)行語音聊天數(shù)據(jù)分析沒有涉及,對未出現(xiàn)在“Hello_”表中的微信賬號進(jìn)行分析。在未來研究中,將通過進(jìn)一步分析未充分加密或未加密數(shù)據(jù)表之間的關(guān)聯(lián)性測試微信系統(tǒng)的安全性,促進(jìn)微信應(yīng)用改進(jìn),提升用戶信息的安全保障。
參考文獻(xiàn)
[1] OWASP.About the open Web Application security Project[EB/OL]. https://www.owasp.org/index.php/About_The_Open_Web_Application_Security_Project, 2018-06-04.
[2] OWASP-China. Welcome to OWASP CHINA[EB/OL].[2017-06-14]. http://www.owasp.org.cn.
[3] OWASP.Mobile Top 10 2016-M1-improper platform usage[EB/OL]. [2017-03-06]. https://www.owasp.org/index.php/Mobile_Top_10_2016-M1-Improper_Platform_Usage.
[4] 范玲楠. 芻議微信技術(shù)架構(gòu)及安全漏洞和防范技術(shù)[J]. 商,2015(25):207.
[5] 林珍.個人微信安全風(fēng)險及防范[J]. 電腦迷,2016(4):162.
[6] 陳曦,李鵬薄. 微信朋友圈的安全保密隱患及防范 [J]. 保密科學(xué)技術(shù),2017(1):66-70.
[7] 李燕軍.微信的安全問題研究 [J]. 信息網(wǎng)絡(luò)安全,2013(10):185-187.
[8] 彭菲. 微信的常見安全漏洞與防范措施分析 [J]. 智能城市,2016,2(7):303.
[9] WU Songyang, Zhang Yong, Wang Xupeng, et al., Forensic analysis of WeChat on Android smartphones [J]. Digital Investigation,2017,21:3-10.
[10]GAO feng, ZHAGN Ying. Analysis of WeChat on IPhone[C]// 2nd International Symposium on Computer, Communication, Control and Automation 2013. Shijiazhuang:Atlantis Press, 2013:278-281.
[11]張玉梅. 社交類APP的通訊安全測試[J]. 天津科技,2016,43(5):86-90.
[12]AZFAR A, CHOO K-K R, LIU Lin. Android mobile VoIP apps: A survey and examination of their security and privacy[J]. Electronic Commerce Research,2016,16(1):73-111.
[13]李浪,余孝忠,楊婭瓊,等. 同態(tài)加密研究進(jìn)展綜述 [J]. 計算機(jī)應(yīng)用研究,2015,32(11):3209-3214.
[14]柯彥,張敏情,張英男.可分離的密文域可逆信息隱藏 [J]. 計算機(jī)應(yīng)用研究,2016,33(11):3476-3479.