张建珍
摘 要:针对微信系统在智能手机平台上存在的安全问题,以OWASP(Open Web Application Security Project)发布的2016年十大移动易攻击分类为依据,分析微信系统在Android和iOS两大主流智能手机平台上的安全性,研究发现存在“不安全的数据存储”、“不安全的通信”、“不安全的认证”、“不安全的授权”、“加密不足”等影响用户信息安全的五种情形。从微信系统用户登录设计和用户数据存储两方面,提出通过修改微信默认登录设置、添加数据噪音和改变聊天数据表索引的建议,以提高微信系统安全性。
关键词:移动应用程序; 微信; 隐私保护; 登录安全; 存储安全; 关联分析
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
引言
根据企鹅智酷数据,截止2016年12月,微信与WeChat合并用户达到8.89亿,用户覆盖200多个国家和地区。2017微信数据报告显示,仅2017年9月,微信日均登录用户达到9.02亿,微信正成为除facebook 和Twitter外,最为流行的社交软件之一。
微信主要应用包括:即时通信、朋友圈、微信支付、查看附近的人、漂流瓶、公众号及应用小程序。微信应用支持的平台包括Android、iOS、Windows、Blueberry等,其中以Android和iOS版用户最多。当微信逐渐成为一种生活方式的同时,微信中包含的个人信息的安全性便受到人们的普遍关注。
OWASP是一个开放、非盈利的国际安全组织,致力于应用程序的设计、开发、运行等领域的安全性研究[1],被视为Web应用安全领域的权威参考[2]。针对移动应用程序的安全,OWASP公布了“Mobile Top 10 2016”[3],从10个方面讨论了影响因素,根据这10项影响移动应用程序安全的因素,开发人员可以评估移动应用程序的安全性进而改进设计。
本文主要研究以下两个问题:
(1)微信登录方式及其安全性;
(2)微信数据存储及其安全性。
1 微信系统安全性研究近况
针对微信的犯罪案例已多次见诸报端,因此,微信系统安全性成为研究热点。
就微信应用的安全性,主要集中在即时通信、微信支付、朋友圈、漂流瓶、公众号等方面。如林珍等人分析了从冒充官方微信账号、朋友圈测试、漂流瓶等方面泄漏微信用户信息的可能性[4-5],并提出通过微信众筹、扫二维码方式导致用户财产损失的风险。陈曦、李鹏薄等人研究了通过微信朋友圈泄露用户地理位置、个人照片、商业秘密的问题[6]。李燕军探索了微信“查看附近的人”和“漂流瓶”存在的安全隐患[7]。彭菲等人研究了微信支付存在的安全漏洞[5-8]。
就微信系统平台安全性,主要集中在Android和iOS两大平台。Wu等人从取证角度分析了读取Android系统上微信用户数据的可能性,演示了从root后的系统上用工具adb备份并使用商业取证工具(XRY、Oxygen forensic analyst等)及專门解密算法得到用户聊天记录的过程,但未就其它数据表作分析[9]。Gao提出了一个分析iOS系统中微信数据的方法,读取了微信用户的“朋友信息”、“语音文件”、“视频文件”等数据[10],但没有就读取的数据内容及关联性作深入分析。
就微信通信网络安全性,主要集中wifi和数据流量两方面。智能手机网络接入主要包括移动数据接入和wifi接入。无线环境下,通讯信息是否存在被截获、修改的风险也是影响用户信息安全的重要因素。张玉梅使用抓包软件Fiddler抓取iOS系统微信通讯过程中产生的数据包以测试微信通讯安全性,分别分析了文字消息、语音消息、图片消息、表情消息、网页链接、语音通话、视频通话、朋友圈消息等微信主要通讯功能的安全性,发现表情消息、网页链接、朋友圈消息是未加密的,可以通过抓包软件直接获得[11]。Choo等人研究Android系统上VoIP apps的安全性和隐秘性,检测了包含微信在内的流行社交软件分别在移动数据网之间、移动数据网与wifi之间发送文本信息,发现微信进行语言信息通信时,是加密进行的,而语音信息经Histogram和Entropy两种方法分别检测,均显示未加密[12]。
据研究可知,现阶段还没有人对微信登录的安全性及用户数据本地存储,也没有根据OWASP的移动应用程序安全因素进行系统分析。
2 理论分析与实验发现
2.1 利用OWASP分析微信系统安全性
本文研究中主要分析了OWASP的”mobile top 10 2016”中M2、M3、M4、M5、M6这5项指标。M2为不安全的数据存储,指将SQL数据库、日志文件、cookie等存放于不安全位置。M3为不安全的通信,指由于弱握手协议、机密信息明文通信导致数据在传输过程中被截获、修改。M4为不安全的认证,指移动应用程序可以无需提供访问许可而匿名执行后端API服务请求或者移动应用程序,使用弱口令策略和指纹的登录口令。M5为加密不足,指加密过程或加密算法本身存在缺陷,如RSA、RC2、MD4、MD5、SHA1等。M6为不安全的授权,指不检查获得验证的用户是否具有执行某种功能的许可。不安全的授权与不安全的认证非常相似,二者紧密相关,验证是对用户身份的识别,授权往往紧随验证之后。
2.2 微信登录方式及安全性
微信账号分为初始微信号和用户自定义微信号。初始微信号是以“wxid_”开头的字符串,是微信用户在微信数据库中的唯一索引值;用户自定义微信号是由用户自行定义的字符串,一经定义不可修改。微信系统不支持根据初始微信号来查找微信用户。下文提到的微信号均指用户自定义微信号。
目前微信共支持5种登录方式,分别是微信号、邮箱地址、QQ号、手机号、声音锁。使用微信号加密码登录时,由于单独设置账号与密码,保证了微信不受账号被盗的牵连,不便之处是用户需要专门记忆微信号与密码;使用邮箱地址登录与使用微信号登录共享密码,方便之处是不必额外记忆账号,容易出错的地方是邮箱地址登录时使用的不是邮箱密码,而是用户专门为微信设计的密码;通过QQ登录微信,QQ号码即微信号,二者共享账号及密码,存在的问题是一旦QQ号码被盗意味着微信也就被盗了;使用手机号登录的便捷之处在于用户可以无需记忆密码只需通过手机接收短信验证码就可以登录微信,这种登录方式只要保证手机不被盗,微信相对还是安全的;声音锁登录类似iOS系统的指纹登录,但可能出现由于用户个人健康原因或设备故障,导致这种登录方式失效。
尽管微信有多种登录方式,但用户一旦在手机上登录某微信号后,只要未退出登录,那么该微信号将在该手机上默认自动登录,即使手机重新开机也不需要重新输入微信密码来登录。
微信设计团队充分考虑了一般情况下对微信账号的安全保障。但對手机被盗后盗密者通过技术手段绕过手机屏保,利用微信自动登录的特点盗取微信用户信息的可能性考虑不足的。根据OWASP发布的造成移动应用程序不安全的设计前十大因素,微信不安全的登录属于不安全的认证(M4)与不安全的授权(M6)。
2.3 微信数据存储及其安全性
按微信系统设计,用户联系人、聊天记录、朋友圈消息等数据存储在用户手机中[12]。Android系统存放微信用户数据的文件夹为“User Files\\tencent\\MicroMsg”;iOS系统存放用户数据的文件夹为“Application Data\\AppDomain-com.tencent.xin\\Documents”。
本部分以oppo R8205和iphone6作为实验用机,实验环境见表1。
为读取不同智能手机平台上的微信数据,实验用到工具软件及版本见表2。
2.3.1 Android平台的发现
从MicroMsg文件目录可以看出该oppo R8205手机的微信系统有2个用户登录使用。分别为“28b647f334f350ae839a93af1dbceebc”和”7596f45c188e092bbd4ef2042462d31c”,是经过加密的2个微信账号,这2个文件夹下分别存放对应的用户数据。
在DOWNLOAD文件夹下,明文存放用户通过微信应用下载过的所有文件。在VOICE和VODIO文件夹下,分别明文存放用户在使用微信时收发过的来自网络端的声音与视频文件。通过对Android平台明文信息分析,可以了解到微信用户部分个人信息,如社交行为、工作性质等。其详尽信息如图1所示。
2.3.2 iOS平台的发现
从Documents文件目录可以看出,该iphone6手机的微信系统有2个账号登录使用,分别为“4168491a9a1b30dd4f243e255794878c”和“a897a1392424662f72e96fe92bdabeff”,是经过加密的2个微信账号,这2个文件夹下分别存放对应的用户数据。以下重点分析wc005_008数据库和MM数据库,并从2个数据库中数据的关联性获取用户敏感信息。
(1)MM数据库
在MM数据库中存有以Hello_962df开头的表,该表中保存着所有向该用户发送过“加好友”请求的微信用户信息,如图2所示。其中:1为发送方微信账号;2为微信账号使用的昵称;3为打招呼内容;4为登记的国家和城市。
(2)wc005_008数据库
在wc005_008数据库中存有MyWc_Message01表,该表记录用户参与过的朋友圈信息。通过分析表内容可知,Id字段相同的记录表示针对同一条朋友圈信息进行的评论。Id字段相同的记录行包含的微信用户与本机登录用户拥有某位共同的朋友。如图3所示,“猫老爷”、“Irene Han”、“Fei 飞”3个微信用户及本机登录用户共同针对Id=12514160625456656511的朋友圈信息发表评论,说明存在某个微信用户同时与“猫老爷”、“Irene Han”、“Fei 飞”3个微信用户及本机登录用户为朋友关系,由此看来存在该4位用户同属于某个朋友圈的可能性。
(3)wc005_008与MM数据库关联分析
MM数据库中以“Chat_”开头的数据表表名经过加密,表内存放聊天内容,但无法确定聊天对象。wc005_008数据库中以“MyWC01_”开头的数据表表名经过加密,表内存放聊天对象以wxid_开头的初始微信账号。在微信系统中每个微信用户的初始微信号是用户在微信数据库的唯一索引,用户可以自定义微信号和昵称,自定义微信号将取代以wxid_开头的初始微信号显示在微信用户“详细资料”栏中,但初始微信号仍然是用户在微信数据库中的唯一索引。由于微信系统屏蔽了用户通过初始微信号搜索微信用户,因此无法通过以上2个数据表确定微信用户聊天对象与聊天记录的对应关系。
本文通过对wc005_008数据库和MM数据库中的3个表之间数据的关联分析,确定了微信本地数据中用户的聊天对象与聊天信息的关联情况。以MM数据库中数据表“Chat_0c534c8e3835a0ea21 eacdfd7c6ee169”为例,操作过程如下:
步骤一:在wc005_008数据库中查找包含“Chat_0c534c8e3835a0ea21eacdfd7c6ee169”字符串的数据表,如图4所示第一步。找到“MyWC01_0c534c8e3835a0ea21eacdfd7 c6ee169”数据表。由于这两个文件除文件名开头不同外,后续字母数字串完全相同。由此可以推断该数字字母串为同一微信号加密后得到的密文,两个数据表应为微信用户与同一微信账号的聊天记录。
步骤二:查看“MyWC01_0c534c8e3835a0ea21 eacdfd7c6ee169”数据表,找到“FromUser”字段,存放以wxid_开头的发送方初始微信号,如“wxid_amqyi5qa6uir12”,由于无法通过初始微信号反查微信用户,本文从MM数据库的数据表“Hello_962df025475d4ce521192751df4ebbfc”中查找包含该初始微信号的加好友请求,如图4所示第二步。
步骤三:分析“Hello_962df025475d4ce521192751 df4ebbfc”中“Message”字段包含内容,“fromusername”为发送方初始微信号,“fromnickname”为发送方微信昵称。“content”为发送方加好友时的打招呼内容,从而获得微信用户聊天对象为“麥克魚”,如图4所示第3步。
步骤四:确定“Chat_0c534c8e3835a0ea21eacdfd 7c6ee169”的“Message”字段即為本机登录微信用户与“麥克魚”微信用户的聊天记录。
微信系统本地存储的用户数据绝大部分经过了加密,正常情况下难以直接读取。但分析MM数据库和wc005_008数据库,发现RSA 加密算法的缺陷:公钥和私钥生成后,加密或解密中的参数固定,导致同个明文加密后的密文总是相同[13]。通过查找相同密文数据表关联,分析出用户的聊天对像和聊天内容。虽然聊天时间加密,但数据库记录呈现仍以发生的时间前后为顺,因此可以分析出用户聊天对象和聊天内容。本文通过实验读取了不同手机平台上用户的微信数据,通过公开发布的工具软件读取了用户的微信聊天记录、微信联系人信息,属于不安全的数据存储(M2)和加密不足(M5),这说明微信系统在用户数据的本地存储方面存在泄漏个人隐私的风险。
3 结束语
本文从实验及研究工作,可以得出以下结论及建议:
微信登录方式及其安全性方面,如果不发生手机丢失的情况,微信登录方式是安全的,用户数据的本地存储风险也可以不作考虑。一旦手机丢失,微信涉及到个人隐私还是存在极大泄漏风险的。因此,人们提出修改微信系统同一账号同一设备可以自动登录的默认设置,借鉴微信用于保护用户财产安全的二次认证及授权。为兼顾用户的便捷体验,微信系统可以使用指纹、声音、手势等快捷的二次身份验证与登录授权,以进一步提高微信系统登录安全性。
微信数据本地存储及安全性方面,从用户角度,涉及隐私的聊天记录用户应及时删除销毁尽量避免信息被读取。从移动应用程序设计角度,微信系统对数据表加密时应从两方面考虑阻断信息被关联分析的可能性。首先,加密聊天记录时间的同时修改聊天记录索引,以防止根据语言逻辑性对聊天记录内容的猜解。其次,使用随机同态加密算法[13]加密数据表从而加大表与表之间关联性分析难度。最后,也是最有效方法是根据差分隐私保护算法,使用拉普拉斯噪音机制,向wc005_008数据库的“Chat_”表添加噪音数据实现噪音扰动,从而实现差分隐私保护以降低微信用户聊天记录被关联猜解机率。
微信用户间文字消息、图片消息是加密通讯的,但语音信息和视频信息未加密,存在不安全的通信(M3)和通讯信息加密不足(M5)的安全隐患。为防止语音和视频信息被截获,建议微信系统利用可分离的密文域可逆信息隐藏算法[14]对用户收发的语音和视频信息加密提升安全性。
本文研究中主要挖掘了微信用户的下载文件对用户身份信息的暗示,wc005_008数据库与MM数据库中3个部分加密的数据表中数据之间的关联性对用户聊天对象和聊天记录的暗示,但对用户在使用微信进行语音聊天数据分析没有涉及,对未出现在“Hello_”表中的微信账号进行分析。在未来研究中,将通过进一步分析未充分加密或未加密数据表之间的关联性测试微信系统的安全性,促进微信应用改进,提升用户信息的安全保障。
参考文献
[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] 范玲楠. 刍议微信技术架构及安全漏洞和防范技术[J]. 商,2015(25):207.
[5] 林珍.个人微信安全风险及防范[J]. 电脑迷,2016(4):162.
[6] 陈曦,李鹏薄. 微信朋友圈的安全保密隐患及防范 [J]. 保密科学技术,2017(1):66-70.
[7] 李燕军.微信的安全问题研究 [J]. 信息网络安全,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]李浪,余孝忠,杨娅琼,等. 同态加密研究进展综述 [J]. 计算机应用研究,2015,32(11):3209-3214.
[14]柯彦,张敏情,张英男.可分离的密文域可逆信息隐藏 [J]. 计算机应用研究,2016,33(11):3476-3479.