????????关注后回复 “进群” ,拉你进程序员交流群????????

作者丨车小胖谈网络

来源丨车小胖谈网络(ID:chexiaopangnetwork)

最近有朋友私信问我一个问题,在公司用微信聊天,用公司网络,公司能看到聊天内容吗?

坦率地说,以前从来没有分析过微信这类聊天软件,大概率使用私有协议。而私有协议在协议分析软件上的呈现,一般都是TCP封装一长串字节流,而这些字节流究竟是什么内容,协议软件无法给出答案!看看协议分析软件能否看到微信网页版、手机APP版和电脑版的聊天内容?

 

网页版微信

协议分析结果

不知道大家看到“美女好[玫瑰]”哇,这个就是协议分析软件分析出来的聊天内容。

真实聊天内容

一摸一样!

实验结论

协议分析软件可以将聊天内容解密出来!

实验分析

网页版微信通常是使用浏览器来与微信服务器通信的,而浏览器多种多样,有Chrome、Firefox、IE等等,要想与不同的厂商浏览器通信,必须使用标准协议,而标准协议在协议分析软件上是可以解开的。

考虑到网页版的微信,可能会使用SSL/TLS加密聊天内容,需要用Fiddle作为中间人,用Fiddle伪造的证书来欺骗浏览器,让浏览器误以为Fiddle就是微信服务器。Fiddle再与微信服务器建立SSL/TLS加密通道,传输聊天内容。

  • 浏览器与Fiddle建立SSL/TLS加密通道

  • Fiddle与微信服务器建立SSL/TLS加密通道

  • Fiddle做为二传手,将消息在两条通道上进行传递,先解密,再加密

  • Fiddle需要伪造微信服务器证书

  • 电脑需要安装、信任Fiddle自签名的根证书

手机版微信

协议分析结果

微信手机版没有使用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只能捕获到HTTPHTTPS,至于其它的协议压根不在其感兴趣范围!

于是,使用Wireshark捕获微信长连接的TCP报文,确实捕获到了,再怎么私有实现,总不能长翅膀飞!但是这些TCP报文没有展示的意义,TCP头之后字段全是杂乱无章的,这些都在预料之中!

MMTLS是什么样的存在?

MMTLSTLS1.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之所以可以实现私有协议,是因为服务器、客户端都是微信的代码,再怎么私有,理解起来也没有任何障碍!

老板能否监控到员工使用电脑版微信聊天内容?

揭晓答案:不能,各位放心大胆使用

大家那点小心思早就被微信之父“张小龙”看穿了,为了最大限度保护各位的隐私,只要是从腾讯官方下载的电脑版微信、手机APP,都是安全的、可靠的。

值得庆幸的是,第三方监控软件无法解密微信聊天,实验过程与实验图片略。

这个结论可能依然无法打消部分读者的疑虑,为何微信网页版可以监控,而其它的两种微信却无法监控?

网页版微信

客户端是形形色色的浏览器,有Chrome、Firefox、IE等等,这些浏览器之所以可以与微信服务器通信并下载聊天内容,是因为客户端、服务器端使用业界标准的TLS协议通信。

在此通信场景下,腾讯能够完全控制的代码是服务器端,而客户端的代码则鞭长莫及、无法控制。为了使通信成为可能,服务器必须严格遵守TLS协议标准。

监控软件一方面欺骗客户端,自己就是微信服务器;另一方面欺骗服务器,自己就是微信客户端。这样一来,监控软件一方面可以解密客户端的消息,又可以解密服务器的消息。

电脑版/手机APP微信

客户端的代码,完全是微信的代码;服务器的代码更不用说了,依然也是微信的代码。既然双方的代码都由微信完全控制,他们想使用什么私有加密协议来保护通信安全,那都是他们内部的私事,任何第三方几乎无法破解

其实微信并没有使用什么私有协议,依然使用TLS协议来加密数据。同学们可能会更迷惑了,既然使用标准的TLS协议通信,为何第三方却无法监控呢?

客户端预先嵌入(硬编码)了微信服务器的公钥,客户端抱着“一颗红心,两种准备”。如果服务器出示的公钥,与客户端预先嵌入的公钥完全相同(暗号比对成功),客户端立马晓得,这是来自于微信官方的大佬,接头成功,继续通信。

如果对方出示的公钥,与客户端预先嵌入的公钥不同。客户端立马意识到,遇到骗子了,“打死俺也不说” !对待骗子不理不睬,忽视他。。。

一位经常出差的好友,在酒店里拨公司VPN,尝试多次无法成功,打电话问我怎么回事?

酒店的监控软件,一直试图欺骗VPN客户端,而VPN客户端由于预先嵌入了VPN服务器的公钥,毫不费力地识别了骗子行为。而骗子却很有韧劲,一次次地尝试欺骗。VPN客户端则更偏执:“想骗老娘,想得美!

当然微信这种加密传输,只是为了防止在传输过程中泄密。毫无疑问,微信服务器还是可以看到各位聊天的明文数据。所以,最好不要在微信里明文传输非常非常隐私的数据,如果一定要传,可以先将数据加密之后再传,接收方解密数据之后,就可以得到明文的数据了。

最终结论

  • 微信网页版,使用公司网络,公司可以看到聊天内容,无论使用的是公司电脑还是个人电脑

  • 微信网页版,使用4G网络,流量没走公司,公司自然也无法看到聊天内容

  • 微信手机版,使用私有协议通信,手机APP嵌入了服务器的公钥,APP只认与这个公钥一一对应的私钥签名。使用其它私钥签名的一概不认,所以无法欺骗微信APP。使用微信手机版聊天是安全的,无论是使用公司网络还是4G网络,公司都无法看到聊天内容。

  • 电脑版微信,同手机版一样是安全的,公司无法看到聊天内容。

-End-

最近有一些小伙伴,让我帮忙找一些 面试题 资料,于是我翻遍了收藏的 5T 资料后,汇总整理出来,可以说是程序员面试必备!所有资料都整理到网盘了,欢迎下载!

点击????卡片,关注后回复【面试题】即可获取

在看点这里好文分享给更多人↓↓

公司能不能监控到你的微信聊天内容?相关推荐

  1. 公司能不能监控到大家的微信聊天内容?

    最近有朋友私信问我一个问题,在公司用微信聊天,用公司网络,公司能看到聊天内容吗? 坦率地说,以前从来没有分析过微信这类聊天软件,大概率使用私有协议.而私有协议在协议分析软件上的呈现,一般都是TCP封装 ...

  2. 公司能不能监控到我的微信聊天?

    最近有朋友私信问我,在公司用微信聊天,用公司网络,公司能看到聊天内容吗? 这个问题,很严重.直接关系着广大摸鱼达人摸鱼时的状态.整篇内容略硬核,所以我直接把结论放在前面: 最终结论 微信网页版,使用公 ...

  3. 老板到底能不能,监控到电脑版微信聊天?

    这是「进击的Coder」的第 423 篇技术分享 作者:车小胖 来源:车小胖谈网络 " 阅读本文大概需要 3 分钟. " 三个月前其实已经写了一篇,但是在那篇文章里只提到了网页版微 ...

  4. 微信聊天内容可以被监听吗?

    大家好,我是煎鱼. 大家在日常工作.摸鱼时会对网络安全比较担忧,其中的一个存疑问题:"微信的聊天记录内容,到底能不能被监听"? 这个问题许多人问过,是一个常常被话题了.今天看到锅叔 ...

  5. 微信聊天内容可以被监听吗

    大家好,我是老赵! 几个粉丝反馈, 自己的微信聊天记录就被公司截取过, "在那个群,和谁聊了什么,看的一清二楚,还可以搜索",并且使用的是自己的设备,着实让我觉得不可思议.先不论技 ...

  6. 利用 ChatGPT 简化微信聊天内容

    以下文章来源于蓝点网 ,作者山外的鸭子哥,侵删 各种聊天软件的群太多.消息太多压根没时间看怎么办?那试试使用 ChatGPT 帮你整理群聊记录提取重点和发个总结内容? ChatGPT目前已经在很多领域 ...

  7. java读取微信消息_android 读取微信聊天内容 示例源码(AccessibilityService)

    [实例简介] 微信聊天界面的布局,查看方法: AndroidStudio--Tools--Android--Android Device Monitor [实例截图] [核心代码] public cl ...

  8. IP-GUARD监控不到微信聊天内容了解决方案

    最近有人问我,为什么我的控制台历看不到某个人的微信聊天记录了,但是别的人可以看到.这个原因大部分是因为这个客户端安装老刘最新版的微信或体验版的微信,我们的IP-GUARD软件梅州都会更新,遇到这个问题 ...

  9. 微信语音聊天内容如何录制 如何录制通话内容

    微信的注册用户已破十亿,这一庞大的数字代表着其在人们生活和工作中的地位之重,使用微信一般都是用来交流聊天,但是现在随着电子商务的日益发展,微商也在日益壮大,最经常使用的功能还是聊天通话,那对于重要的通 ...

最新文章

  1. 程序员的十大谎言,你中了几个? | 每日趣闻
  2. 太拼了:谷歌第一编程语言小白也能学会!
  3. 谈谈Team Foundation Server Proxy
  4. 机器学习系列3:能量函数分析
  5. Oracle ASM 详解
  6. 京东java笔试_2017阿里,百度,京东java面试+笔试大合集,2018的你会吗?
  7. python nmap模块详解_python中的Nmap模块问题
  8. Spark的那些外部框架
  9. java使用ffmpeg进行视频处理
  10. mcgs组态软件中字体如果从左到右变化_MCGS全中文组态软件常见问题
  11. 基于大数据的主动科研管理模式与优化决策机制
  12. hadoop大数据平台搭建
  13. Landsat系列卫星
  14. 2023北京国际老年产业博览会/养老产业展/养老服务业展
  15. Math.cbrt() Math.sqrt() Math.pow()
  16. 数据传输方式串行快于并行
  17. Leetcode 309. Best Time to Buy and Sell Stock with Cooldown
  18. onmouseover、onmouseenter、onmouseleave、onmouseout的区别
  19. 想要学好大数据需掌握这十二大技术!
  20. 毕业设计记录 day(4)

热门文章

  1. ORA-00376、ORA-01110数据文件异常故障修复
  2. flowable适配达梦数据库自动建表失败的问题
  3. Java对象内存分析【基础版】
  4. stm32 mbed实现openmv追踪小车
  5. JavaEE开发的颠覆者 Spring Boot实战 学习总结一
  6. 《Java EE 开发的颠覆者:Spring Boot实战》读书笔记
  7. 阿里云服务器(CentOS 7.4)Jenkins(LTS 2.150.3)部署及简易配置
  8. 一起了解PCBA中,PCB打样的特殊工艺
  9. 2011MBA考试结束
  10. 开源SCI=水刊?1W+的版面费到底值不值得?