当前位置: 首页 > 科技观察

惨不忍睹,原来HTTPS没用了

时间:2023-03-19 14:38:07 科技观察

背景最近发生了好几件事,你一定见过其中的一些:一位拼多多员工在匿名社区发布同事被抬上救护车的照片被抓,发送到互联网。解雇?试用期间,一位运营同学因为工作期间访问了某1024网站,所以试用期不合格。(今天正好浏览了一个知乎的问题)试用期只是因为在公司访问1024网站的前两天看到了很多公众号的推文。大意是:看小电影之前,一定要注意网址是不是HTTPS,因为HTTPS是经过加密的,别人是不会知道的。看到上面的问题,不禁要问(这脑回路也是。。。):通过浏览器访问HTTPS站点,别人真的不知道吗?公司如何知道通过Apps访问匿名论坛(HTTPS)?(他有连上公司的WiFi吗?)总之,你上班时间上网钓鱼吗?即使你用HTTPS访问,如果公司知道,通过什么方式访问?这篇文章说说我的看法,主要分为以下几个方面:为什么HTTPS是安全的。HTTPS真的安全吗?APP如何保证信息安全不被爬取?公司可能的监控方式有哪些?如何确保我们的隐私不被泄露?SSL,会有各种版本。TCP/IP协议栈中TLS协议的关系上图描述了TCP/IP协议栈中TLS(子协议)和HTTP的关系。HTTP+TLS也就是HTTPS。与HTTP相比,HTTPS具有以下优点:数据完整性:内容传输经过完整性验证数据隐私:内容对称加密,每次连接生成唯一的加密密钥身份验证:否。三方无法伪造服务器身份(client)以上内容参考HTTPS[1]的工作原理。(石头很早以前就用印象笔记收藏的,现在很多原文都不能访问了。)HTTPS原理上图大致介绍了HTTPS的握手过程。有兴趣的同学可以使用WireShark抓包详细查看每一步。有助于理解HTTPS的完整流程。粗略地说,客户端和服务端通过“握手会谈”协商出双方都支持的加密算法和相应的随机参数,得到一对密钥,后续的传输内容通过这对密钥进行加密和解密。这对钥匙非常简单。例如,加密传输一条消息“tangleithu”,客户端发送公钥加密得到的密文“xyyaabbccdd”,服务端用自己的私钥解密密文,正好得到“tangleithu”。.中间有没有错位也没关系,这样数据的完整性和隐私性都有保障。这个过程比较复杂,本文不再详细介绍。类似的原理可以参考Stone多年前写的这篇文章——RSA算法。因此,当你通过HTTPS访问网站时,即使流量被拦截监控,获取的信息也是加密的,你看不到任何实质内容。比如下图,我在访问某个网站时,通过wireshark抓包得到的信息只是一些通信的IP地址。HTTPS加密传输你放心了吗?在钓鱼的过程中,即使知道访问的IP地址,似乎也无关紧要?实际上,您可以通过IP地址获取很多信息。还好这个查出来的IP是github,不是……你可能会高兴,连个网站域名都看不到,可以放心钓鱼了。然而,这是真的吗?HTTPS真的安全吗?HTTPS真的绝对安全吗?连访问的域名都获取不到?答案是不。上面的HTTPS在握手阶段有一个很重要的东西——证书。SNI——域名裸奔当访问一个HTTPS站点时,首先会与服务器建立SSL连接,第一步就是请求服务器的证书。当一个ServerIP只对应一个域名(站点)时,就很方便了。任何客户端请求它,想都没想就返回域名(服务)对应的证书。但是IP地址(IPv4)是有限的。多个域名重复使用同一个IP地址怎么办?服务器在发送证书的时候并不知道浏览器访问的是哪个域名,所以不能根据不同的域名发送不同的证书。.因此升级了TLS协议,增加了SNI。SNI即ServerNameIndication,是为了解决一个服务器使用多个域名和证书的SSL/TLS扩展。现在所有的主流客户端都支持这个协议。不要问我是怎么知道这一点的,我之前的工作中也因为这件事费了很大功夫……它的原理是:在与服务器建立SSL连接之前,先发送域名(Hostname)要访问的站点的名称,以便服务器根据域名返回适当的证书。这个时候是没有办法加解密的,所以至少这个域名是裸奔的。如下图所示,上面的截图其实是我个人博客(www.tanglei.name)的抓包。客户端在发送握手请求时,有意识地带上自己的域名。HTTPSSNI因此,即使是HTTPS,访问的域名信息也是裸奔的。当你在工作期间访问小电影网站时,你会留下痕迹。如果你访问公司网络,你自然会被抓到。除了域名裸奔,其实还有一个更严重的风险,那就是中间人攻击。前面提到的中间人攻击,其实HTTPS的关键就在于这个证书。顾名思义,中间人攻击就是在客户端和服务器之间多了一个“中介”。“中介”假装是客户端和服务器之间的另一方。欺骗:中间人攻击,evil0x的来源可以安装MitmProxy或者Fiddler等抓包软件试试,然后开启代理。这时我用手机访问百度,得到的信息如下:信任证书前提示,连接不是私密连接。事实上,浏览器认为证书不对,没有信任。而如果此时手机上安装了Fiddler证书,则可以正常访问。证书被信任后,就可以正常访问了。因此,当你信任证书时,你可以再次看到中间人面前的一切。而如果你用的是公司电脑,估计有相应的操作信任证书,或者手机上有没有安装类似的客户端软件?花时间查看手机的证书安装详情(比如在我的手机上)。我以前的公司在信息安全方面非常谨慎。手机会有工作手机,任何未经授权的APP都不能安装。谁知道应用程序会悄悄做什么。(最新热点,QQ扫描浏览器历史,你懂的)当然,各种APP肯定不是吃素的,不会让“中间人攻击”轻易得逞的,我们继续往下看。如何防止信息安全,前面提到的防爬,实施中间人攻击,关键在于证书是否可信。浏览器的行为是证书可以让用户授权是否信任,APP可以由开发者自己控制。例如,我尝试用类似的方式抓包解密匿名社区的HTTPS,但最终失败了。为什么?这是关于“SSLPinning”技术的。App可以验证SSL握手时服务器返回的证书是否合法。“SSLpinning”技术意味着只有固定的证书或公钥在应用程序中是可信的。因为在握手阶段必须把服务器的证书返回给客户端,如果客户端在打包,把服务器的证书放在本地,在握手验证证书链接中比对,服务器返回的证书和本地内置的证书一模一样,发起网络请求。否则直接掉线不可用。当然,一般情况下,这种技术也可以防止HTTPS信息被解密。但是还有其他的技术可以破解这个方法,比如Android下的一些Hook技术,具体来说就是绕过本地证书强校验的逻辑。有兴趣的同学可以带着学习的目的研究一下。不过据说这个方法需要对系统进行root、越狱等操作,需要一些更高权限的设置。因此,也告诫我们一定不要胡乱安装一些软件。一不小心,就有可能被中招,让自己在网络上裸奔。一方面是个人隐私信息等被泄露,另一方面,一些非常重要的信息比如账号密码也有可能被盗取。可能的监测方法有哪些?办公电脑当然要连上公司网络。通过上面介绍的内容,你应该也知道自己在什么时间浏览了哪些网站。公司实际上什么都知道。如果你的手机连上了公司网络,就完全一样了(连Agent软件都不用安装)。这提醒我们尽量使用自己的移动网络进行私密上网。浏览记录,上面提到的来源知乎,比如一些涉及隐私的敏感信息,比如一些PC软件和手机APP,如果内部加密传输,内容加密(包括但不限于HTTPS)的话问题不大它没有破裂。不过,这当然取决于这些软件设计者的水平。比如,同一个匿名用户显示的ID不能相同,如果相同,就暴露了一个逻辑漏洞。当然,我们不应该冒险。在监管要求下,如果确实有一些违法、不当的言论,总会有办法找到你的。更何况一般的办公电脑都会预装一些公司的安全软件。至于这些软件是干什么的,有没有偷偷截图,这个因人(公司)而异。(不讨论类似行为是否涉及侵犯员工隐私等问题)图源知乎不过,我个人认为,我们不必过于担心。一般的公司不会因为你上班偶尔抓个鱼,刷个淘宝,刷个微博就来找你麻烦。毕竟,没必要为了这种小事“大打出手”。不过最好还是看看员工手册,看看有没有明文禁止的行为?是不是我的行为太过分了,免得被抓到,俗话说“常在河边走,不湿鞋”,“欲加罪,无所顾忌”。后记本人是个见多识广的人才,文章中难免有疏漏之处,如有相应的问题,希望大家多多指教。最后祝大家余生不要因为文中提到的类似事情而掉坑里。如果觉得本号分享的文章有价值,记得加个star。周庚很累,别浪费了,需要一些正反馈,安排一个“一键三连”(点赞、观看、分享)如何?😝这将是我继续输出优质文章的最强动力。作者简介:程序猿石石(ID:tangleithu),阿里P7,清华学渣,前DJIBackendLeader。分享不同视角的优质技术文章,欢迎关注、交流、指导!扫描二维码回复关键字“1024”,获取程序员大厂面试指南。参考资料:HTTPS的工作原理:https://cattail.me/tech/2015/11/30/how-https-works.html如何评价互联网公司监控员工日常上网行为?:https://www.知乎。com/question/46818840/answer/103329958据悉,拼多多一名员工因在网上发布同事被抬上救护车的照片,被管理层强制辞职并被赶出公司?事件的真实性如何?:https://www.zhihu.com/question/438581129/answer/1670519587HTTPS工作原理:https://cattail.me/tech/2015/11/30/how-https-works.htmlHTTPS中间人攻击及证书分析验证:http://www.evil0x.com/posts/26569.htmlMac/WindowsWireshark/tcpdump抓取TCP3次握手,4次挥手示例:https://www.tanglei.name/blog/example-show-3-times-handshaking-of-tcp-in-mac-or-windows.html本文转载自微信公众号“程序猿石”,可通过以下二维码关注。转载本文请联系程序员公众号。