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

这个问题,很严重。直接关系着广大摸鱼达人摸鱼时的状态。整篇内容略硬核,所以我直接把结论放在前面:

最终结论

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

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

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

坦率地说,以前从来没有分析过微信这类聊天软件,大概率使用私有协议。而私有协议在协议分析软件上的呈现,一般都是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之所以可以实现私有协议,是因为服务器、客户端都是微信的代码,再怎么私有,理解起来也没有任何障碍!

呔,摸鱼还是得用手机啊!

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

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

    ????????关注后回复 "进群" ,拉你进程序员交流群???????? 作者丨车小胖谈网络 来源丨车小胖谈网络(ID:chexiaopangnetwork) 最近有朋友私信问我 ...

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

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

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

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

  4. 公司能不能监控你的微信聊天?

    最近有朋友私信问我一个问题,在公司用微信聊天,用公司网络,公司能看到聊天内容吗?提示:懒得看完请滑到最后看结论. 坦率地说,以前从来没有分析过微信这类聊天软件,大概率使用私有协议.而私有协议在协议分析 ...

  5. 新公司要上监控,我决定用Prometheus

    " 新公司要上监控,面试提到了 Prometheus 是公司需要的监控解决方案,作为喜新厌旧的程序员,我当然是选择跟风了. 图片来源:Pexels.com 之前主要做的是 Zabbix,既然 ...

  6. 运维监控-Zabbix Server 使用微信 WeChat 告警

    运维监控-Zabbix Server 使用微信 WeChat 告警 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 微信公众号告警每个一天只支持1000次告警,如果超出这个次数了就不 ...

  7. 公司要上监控,选型调研下 Zabbix 和 Prometheus

    作者 | 小雨淅淅o0 来源 | cnblogs.com/xiaoyuxixi/p/12235979.html 新公司要上监控,面试提到了 Prometheus 是公司需要的监控解决方案,我当然是选择 ...

  8. 基于python的视频监控系统_Python实现微信监控报警系统

    概述: 本文主要分享一下博主在学习wxpy 的过程中开发的一个小程序.博主在最近有一个监控报警的需求需要完成,然后刚好在学习wxpy 这个东西,因此很巧妙的将工作和学习联系在一起. 博文中主要使用到的 ...

  9. 公司的电脑监控软件一般能够监控到什么程度

    因为网络办公需求的不断增加,许多企业作业室逐步将电脑监控软件引入公司电脑.一些公司在职工的电脑上装置监控软件,以限制上网行为,保护公司信息安全. 那么,公司的电脑监控软件一般能够监控到什么程度呢? 以 ...

最新文章

  1. Java面试题及答案整理( 2022最新版,持续更新)
  2. 《Python程序设计》题库(2)
  3. 【C++】34. gflags中的 --flagfile= 用法
  4. Log4j的组件和配置文件介绍
  5. 2000年考研英语阅读理解文章一
  6. 3G应用上新闻联播 TD-SCDMA被内定?
  7. pic单片机选型手册_STM32F103单片机RTC及其晶振相关的官方资料整理
  8. wxpython textctrl_wxPython TextCtrl类
  9. Kubernetes集群部署1
  10. JAVA可以赋值分数吗_Java数据类型知多少?
  11. 如何解决微服务架构中的身份验证问题?
  12. Hbuilder:实现阴影透明背景特效
  13. 【Android Studio 3.5.3】蓝牙串口及USB串口例程
  14. DOE软件测试工资,如何进行实验设计(DOE)
  15. 程序员亲试,人体工学椅真的有用吗?
  16. django登录注册html页面,Django实现页面注册登录界面
  17. cmd命令查看计算机信息,cmd命令查看局域网内计算机信息
  18. matlab运行很多columns,columns函数的使用方法
  19. linux tcp 异常断开连接,TCP 异常断开
  20. Ceph学习——客户端读写操作分析

热门文章

  1. Metasploit入侵win7
  2. 多所高校官宣:寒假提前,延长假期!开启学生第一批返乡工作!
  3. IE和谷歌好像不是一个内核
  4. Spring JPA查询,JPA 根据方法名字查询详细介绍
  5. C++ 实现命令行画心形代码,有多个爱心代码,简单可调数据和字符,可装X,也可用于浪漫的表白,可实现跳动、保存等功能
  6. api接口怎么对接?你只需要注意这4点
  7. python写爬虫教程_用Python写爬虫程序基础教程(一)
  8. Oracle薪酬核算系统,薪酬核算系统具有哪些优点?
  9. 大功率宽带功率放大器-高压宽频
  10. Alien Skin Exposure X4.07汉化版|PS胶片滤镜Exposure X4中文版支持PSCC2019