坦率地说,以前从来没有分析过微信这类聊天软件,大概率使用私有协议。
而私有协议在协议分析软件上的呈现,一般都是 TCP 封装一长串字节流,而这些字节流究竟是什么内容,协议软件无法给出答案!
看看协议分析软件能否看到微信网页版、手机 APP 版及电脑版的聊天内容?
①协议分析结果
不知道大家看到“美女好[玫瑰]”哇,这个就是协议分析软件分析出来的聊天内容。
真实聊天内容:
一摸一样!
②实验结论
协议分析软件可以将聊天内容解密出来!
③实验分析
网页版微信通常是使用浏览器来与微信服务器通信的,而浏览器多种多样,有 Chrome、Firefox、IE 等等,要想与不同的厂商浏览器通信,必须使用标准协议,而标准协议在协议分析软件上是可以解开的。
考虑到网页版的微信,可能会使用 SSL/TLS 加密聊天内容,需要用 Fiddle 作为中间人,用 Fiddle 伪造的证书来欺骗浏览器,让浏览器误以为 Fiddle 就是微信服务器。
Fiddle 再与微信服务器建立 SSL/TLS 加密通道,传输聊天内容:
协议分析结果:
微信手机版没有使用 TLS+HTTP=HTTPS 的加密传输方式,而是使用了 HTTP 的传输方式,如上图所示。
每一个报文大概是这个样子的:
除了 HTTP 报文头(HTTP Header)是明文的,HTTP 报文体(HTTP Body)看起来是一堆杂乱无章的字节流。
没有找到聊天的任何内容。最最滑稽的是,当发送聊天内容时,Fiddle 没有任何反应!
意味着发送聊天内容的报文既不是 HTTP,也不是 HTTPS,那很可能是 TCP、或 UDP 协议原始(Raw)封装。
为了确认到底是 TCP 还是 UDP 传输报文,特意去了微信研发公众号去确认,得到的确认是采用 TCP 传输。
分为两种连接方式:
官方的口径是,短连接是为了兼容老版本的软件,而长连接完全是私有实现,所以造成 Fiddle 没有捕获到,毕竟 Fiddle 只能捕获到 HTTP 或 HTTPS,至于其它的协议压根不在其感兴趣范围!
于是,使用 Wireshark 捕获微信长连接的 TCP 报文,确实捕获到了,再怎么私有实现,总不能长翅膀飞!
但是这些 TCP 报文没有展示的意义,TCP 头之后字段全是杂乱无章的,这些都在预料之中!
①MMTLS 是什么样的存在?
MMTLS 是 TLS1.3 版本的改良版,或者说简化版。在微信决定使用 MMTLS 之前,TLS1.3 版本长期逗留在草案状态,没有形成一个最终标准。
于是微信决定采用 TLS1.3 草案中的标准,大刀阔斧砍掉客户端认证这个环节,只保留服务器认证。
手机微信 APP 里预置了微信服务器的两件秘密武器:
②ECDSA 公钥是干嘛的?
ECDSA 用于验证服务器的真实身份,任何来自于服务器的 MMTLS 协商报文,只要使用 ECDSA 私钥签名的,ECDSA 公钥都可以解密。
换句话说,如果签名部分可以使用 ECDSA 公钥解密,那就证明是真正微信服务器发送的!
在微信的私有实现里,不需要 CA,微信客户端凭借预置的 ECDSA 公钥完成服务器的认证!
③静态 ECDH 公钥又是干嘛的?
如果微信客户端想最小延迟(0 RTT)发消息,可以直接生成自己的 ECDH 私钥、公钥、Nonce,再加上服务器预置的 Nonce。
就可以单方面计算出 Pre-Master Key,Master Key,Session Key,进而将消息加密发出。
微信服务器收到消息的同时,一同收到的还有客户端的 ECDH 公钥、客户端Nonce,服务器用自己的 ECDH 私钥、预留在客户端的 Nonce,这四个参数,计算出可以解密消息的 Key,并将消息解密出。
MMTLS 没有给消息增加额外的延迟,称这种通信为 0 RTT 通信。
由于微信客户端,强制使用服务器的 ECDSA 公钥来认证服务器的身份,所以 Fiddle 压根没法欺骗微信 APP。
如果 Fiddle 强制替换,微信客户端会放弃连接服务器,造成的后果就是微信永远登录不了服务器!
微信 APP 之所以可以实现私有协议,是因为服务器、客户端都是微信的代码,再怎么私有,理解起来也没有任何障碍!
前面只提到了网页版微信、手机 APP 微信,但是唯独没有提到电脑版微信,究竟老板能否监控到员工使用电脑版微信聊天内容?
揭晓答案:不能,各位放心大胆使用!
大家那点小心思早就被微信之父“张小龙”看穿了,为了最大限度保护各位的隐私,只要是从腾讯官方下载的电脑版微信、手机 APP,都是安全的、可靠的。
我带着这个疑问又做了一次实验。值得庆幸的是,第三方监控软件无法解密微信聊天,实验过程与实验图片略。
这个结论可能依然无法打消部分读者的疑虑,为何微信网页版可以监控,而其他的两种微信却无法监控?
①网页版微信
客户端是形形色色的浏览器,有 Chrome、Firefox、IE 等等,这些浏览器之所以可以与微信服务器通信并下载聊天内容,是因为客户端、服务器端使用业界标准的 TLS 协议通信。
在此通信场景下,腾讯能够完全控制的代码是服务器端,而客户端的代码则鞭长莫及、无法控制。为了使通信成为可能,服务器必须严格遵守 TLS 协议标准。
监控软件一方面欺骗客户端,自己就是微信服务器;另一方面欺骗服务器,自己就是微信客户端。
这样一来,监控软件一方面可以解密客户端的消息,又可以解密服务器的消息。
②电脑版/手机 APP 微信
客户端的代码,完全是微信的代码;服务器的代码更不用说了,依然也是微信的代码。
既然双方的代码都由微信完全控制,他们想使用什么私有加密协议来保护通信安全,那都是他们内部的私事,任何第三方几乎无法破解。
其实微信并没有使用什么私有协议,依然使用 TLS 协议来加密数据。同学们可能会更迷惑了,既然使用标准的 TLS 协议通信,为何第三方却无法监控呢?
客户端预先嵌入(硬编码)了微信服务器的公钥,客户端抱着“一颗红心,两种准备”。
如果服务器出示的公钥,与客户端预先嵌入的公钥完全相同(暗号比对成功),客户端立马晓得,这是来自于微信官方的大佬,接头成功,继续通信。
如果对方出示的公钥,与客户端预先嵌入的公钥不同。客户端立马意识到,遇到骗子了,“打死俺也不说” !对待骗子不理不睬,忽视他。。。
当然微信这种加密传输,只是为了防止在传输过程中泄密。毫无疑问,微信服务器还是可以看到各位聊天的明文数据。
所以,最好不要在微信里明文传输非常非常隐私的数据,如果一定要传,可以先将数据加密之后再传,接收方解密数据之后,就可以得到明文的数据了。
微信网页版,使用公司网络,公司可以看到聊天内容,无论使用的是公司电脑还是个人电脑。
微信网页版,使用 4G 网络,流量没走公司,公司自然也无法看到聊天内容。
微信手机版,使用私有协议通信,手机 APP 嵌入了服务器的公钥,APP 只认与这个公钥一一对应的私钥签名。
使用其他私钥签名的一概不认,所以无法欺骗微信 APP。使用微信手机版聊天是安全的,无论是使用公司网络还是 4G 网络,公司都无法看到聊天内容。
电脑版微信:公司依然无法监控到聊天内容。[来源:车小胖谈网络]
当青岛*测控技术有限公司遇上安企神,测控技术数据安全将迎来哪些新变化?
海*测控技术有限公司是海*微电子有限公司100%控股子公司,是由青岛市政府、山东省政府及行业领军企业共同出资成立的第三方检测平台。旨在集成电路可靠性验证及测试分析领域打造国内一流集成电路检测、分析、设计开发及技术解决方案等集成电路产业共性技术服务平台。海*以海洋装备和高端设备集成电路可靠性验证和测试分析为特色,主要为海...
"聚势谋远:重庆*医药集团与安企神达成战略合作,探索医药+科技融合发展新路径!
重庆*医药集团有限公司成立于2017年8月,是在重庆市*区医药(集团)有限责任公司基础上组建成立的大型医药产业企业。是重庆*经济技术开发(集团)有限公司控股的混合所有制企业和市级重点项目三峡国际健康产业园投资单位,位列全国百强医药流通企业。公司下辖重庆*制药有限公司、*医药科技重庆有限公司、重庆*肿瘤医院等十余家子公司...
聚焦核心数据安全:山东卫禾*股份有限公司携手安企神软件构建防泄密屏障!
项目背景山东卫禾*股份有限公司于2015年注册成立,公司拥有总资产1.5亿元,公司具有齿轮检测中心、三坐标测量仪、全谱直读光谱仪等关键研发设备。运用UGNX7.5、MASTA5.4等研发软件进行研发,具有强大的技术研发能力,拥有31项专利,坚持产学研结合,设有山东卫禾*技术研究院,并不断加强研发平台建设,打造创新型企业...
安全+智造双升级!江阴*电子有限公司携手安企神开启企业防护新时代!
江阴*电子有限公司成立于1989年,是一家电子元器件集成设计和生产服务的领先供应商。产品应用包括数据采集、计算机外围设备和其他电子产品。还进入了汽车电子行业、航空航天行业、工业控制行业、医疗器械行业和消费电子行业,为客户提供更广泛的高附加值产品和服务。随着科技产业的快速发展和市场需求的增加,现已成功转型为一家提供完整解...
福建*医药公司联手安企神软件,成功落地应用程序、网站黑名单设置与USB管控方案!
项目背景福建*医药有限公司前身是福建*工贸责任有限公司,2015年重组后成为中国五百强企业——*医药集团的子公司。 系中国最大的民营医药集团,是在中国医药商业行业处于领先地位的上市公司。公司成立于2015年08月04日,经营范围包括中药饮片、中成药、化学原料药、化学药制剂等。应用需求管控公司电脑安装程序和使用程序,禁...