公司能不能监控你的微信聊天?
最近有朋友私信问我一个问题,在公司用微信聊天,用公司网络,公司能看到聊天内容吗?提示:懒得看完请滑到最后看结论。
坦率地说,以前从来没有分析过微信这类聊天软件,大概率使用私有协议。而私有协议在协议分析软件上的呈现,一般都是TCP封装一长串字节流,而这些字节流究竟是什么内容,协议软件无法给出答案!看看协议分析软件能否看到微信网页版、手机APP版的聊天内容?
ONE. 网页版微信
协议分析结果
不知道大家看到“美女好[玫瑰]”哇,这个就是协议分析软件分析出来的聊天内容。
真实聊天内容
一摸一样!
实验结论
协议分析软件可以将聊天内容解密出来!
实验分析
网页版微信通常是使用浏览器来与微信服务器通信的,而浏览器多种多样,有Chrome、Firefox、IE等等,要想与不同的厂商浏览器通信,必须使用标准协议,而标准协议在协议分析软件上是可以解开的。
考虑到网页版的微信,可能会使用SSL/TLS加密聊天内容,需要用Fiddle作为中间人,用Fiddle伪造的证书来欺骗浏览器,让浏览器误以为Fiddle就是微信服务器。Fiddle再与微信服务器建立SSL/TLS加密通道,传输聊天内容。
浏览器与Fiddle建立SSL/TLS加密通道
Fiddle与微信服务器建立SSL/TLS加密通道
Fiddle做为二传手,将消息在两条通道上进行传递,先解密,再加密
Fiddle需要伪造微信服务器证书
电脑需要安装、信任Fiddle自签名的根证书
TWO. 手机版微信
协议分析结果
微信手机版没有使用TLS + HTTP= HTTPS的加密传输方式,而是使用了HTTP的传输方式,如上图所示。
每一个报文大概是这个样子的:
除了HTTP 报文头(HTTP Header)是明文的,HTTP报文体(HTTP Body)看起来是一堆杂乱无章的字节流。
没有找到聊天的任何内容。最最滑稽的是,当发送聊天内容时,Fiddle没有任何反应!
意味着发送聊天内容的报文既不是HTTP,也不是HTTPS,那很可能是TCP、或UDP协议原始(Raw)封装。
为了确认到底是TCP还是UDP传输报文,特意去了微信研发公众号去确认,得到的确认是采用TCP传输。分为两种连接方式:
长连接:TCP + 私有协议 + MMTLS + 业务层
短连接:TCP + HTTP + MMTLS + 业务层
官方的口径是,短连接是为了兼容老版本的软件,而长连接完全是私有实现,所以造成Fiddle没有捕获到,毕竟Fiddle只能捕获到HTTP或HTTPS,至于其它的协议压根不在其感兴趣范围!
于是,使用Wireshark捕获微信长连接的TCP报文,确实捕获到了,再怎么私有实现,总不能长翅膀飞!但是这些TCP报文没有展示的意义,TCP头之后字段全是杂乱无章的,这些都在预料之中!
MMTLS是什么样的存在?
MMTLS是TLS1.3版本的改良版,或者说简化版。在微信决定使用MMTLS之前,TLS1.3版本长期逗留在草案状态,没有形成一个最终标准。于是微信决定采用TLS1.3草案中的标准,大刀阔斧砍掉客户端认证这个环节,只保留服务器认证。
手机微信APP里预置了微信服务器的两件秘密武器:
ECDSA公钥
静态ECDH公钥
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之所以可以实现私有协议,是因为服务器、客户端都是微信的代码,再怎么私有,理解起来也没有任何障碍!
THREE. 最终结论
微信网页版,使用公司网络,公司可以看到聊天内容,无论使用的是公司电脑还是个人电脑。
微信网页版,使用4G网络,流量没走公司,公司自然也无法看到聊天内容。
微信手机版,使用私有协议通信,手机APP嵌入了服务器的公钥,APP只认与这个公钥一一对应的私钥签名。使用其它私钥签名的一概不认,所以无法欺骗微信APP。使用微信手机版聊天是安全的,无论是使用公司网络还是4G网络,公司都无法看到聊天内容。
最近整理一份资料《程序员学习手册》,覆盖了 Java技术、面试题精选、操作系统基础知识、计算机基础知识、Linux教程、计算机网络等等。获取方式:点“ 在看,关注公众号 Java后端 并回复 777 领取,更多内容陆续奉上。推荐阅读 1. 为啥查询那么慢?2. Elasticsearch 从入门到实战3. 拒绝 ! = null4. MyBatis 如何找到要执行的 SQL ?5. 推荐一款 Java 对象映射神器喜欢文章,点个在看
公司能不能监控你的微信聊天?相关推荐
- 【深度学习】利用深度学习监控女朋友的微信聊天?
效果 1.概要 利用深度学习模型Seq2Seq模型搭建拼音转中文模型,利用python键盘监控事件模块PyHook3监控女朋友的发送的拼音数据并发送给模型进行中文预测存储到本地日志中. 2.结构 ...
- IP-GUARD监控不到微信聊天内容了解决方案
最近有人问我,为什么我的控制台历看不到某个人的微信聊天记录了,但是别的人可以看到.这个原因大部分是因为这个客户端安装老刘最新版的微信或体验版的微信,我们的IP-GUARD软件梅州都会更新,遇到这个问题 ...
- 公司能不能监控到你的微信聊天内容?
????????关注后回复 "进群" ,拉你进程序员交流群???????? 作者丨车小胖谈网络 来源丨车小胖谈网络(ID:chexiaopangnetwork) 最近有朋友私信问我 ...
- 公司能不能监控到大家的微信聊天内容?
最近有朋友私信问我一个问题,在公司用微信聊天,用公司网络,公司能看到聊天内容吗? 坦率地说,以前从来没有分析过微信这类聊天软件,大概率使用私有协议.而私有协议在协议分析软件上的呈现,一般都是TCP封装 ...
- 公司能不能监控到我的微信聊天?
最近有朋友私信问我,在公司用微信聊天,用公司网络,公司能看到聊天内容吗? 这个问题,很严重.直接关系着广大摸鱼达人摸鱼时的状态.整篇内容略硬核,所以我直接把结论放在前面: 最终结论 微信网页版,使用公 ...
- 老板到底能不能,监控到电脑版微信聊天?
这是「进击的Coder」的第 423 篇技术分享 作者:车小胖 来源:车小胖谈网络 " 阅读本文大概需要 3 分钟. " 三个月前其实已经写了一篇,但是在那篇文章里只提到了网页版微 ...
- 电脑监控软件可以监控到企业微信吗?
对于公司监控员工的微信这种行为一直存在着很多争议,员工觉得这样会侵犯个人隐私,属于违法行为:然而对于公司来说,则担心员工在微信上的很多操作,会对公司造成影响.比如: 员工利用公司的资源给客户推广自己的 ...
- 微信聊天内容可以被监听吗?
大家好,我是煎鱼. 大家在日常工作.摸鱼时会对网络安全比较担忧,其中的一个存疑问题:"微信的聊天记录内容,到底能不能被监听"? 这个问题许多人问过,是一个常常被话题了.今天看到锅叔 ...
- 微信聊天内容可以被监听吗
大家好,我是老赵! 几个粉丝反馈, 自己的微信聊天记录就被公司截取过, "在那个群,和谁聊了什么,看的一清二楚,还可以搜索",并且使用的是自己的设备,着实让我觉得不可思议.先不论技 ...
最新文章
- Spring MVC全局异常后返回JSON异常数据
- 有限个极限运算及常见错误小结
- centos7防火墙操作
- CodeForces - 1369E DeadLee(贪心+拓扑)
- pl/sql中文显示为乱码解决
- 第14、15教学周作业
- HTML5和CSS3:游戏的变革Flexbox
- JVM进阶之路, 不然又要被面试官吊打了
- Git命令行本地库基本操作流程
- 【NOIP2010】【Luogu1179】数字统计(模拟,多位数分离)
- 如何加载和保存TXT、CSV、DAT文本文件
- 如何把word ppt 思维导图这类文件转化为高清晰度的图片(要干货只看粗体黑字)...
- 2018年面经大合集
- 5G工业无线路由器的优势和应用场景
- JMX 和 管理系统简介(一)
- dad my_My dad,my hero!
- python lambda 判断_Python lambda
- Eclipse各版本下载地址
- VQA(Visual Question Answering)技术
- JSON基础入门实战讲解在线视频课程-JSON语法规则,json对象,json数组的定义和使用