揭秘HTTPS:抓包与反抓包

一、前言

如今,网络环境复杂多变,尤其是在数据隐私日益受到关注的时代,HTTPS作为加密传输协议,已成为我们保护数据安全的关键武器。但,HTTPS的保护到底是如何实现的?抓包和反抓包,又是如何与之较量?今天这篇文章会对这些问题进行解析。

二、HTTPS是如何保护我们的数据的?

HTTPS,即超文本传输安全协议,它是在HTTP的基础上加入了SSL/TLS加密层,从而实现了数据传输过程中的机密性、完整性和身份验证。在进行HTTPS连接时,客户端和服务器之间会进行一系列的握手操作,以便交换加密密钥并确认彼此身份。

基础概念理解

在理解HTTPS之前,先了解几个概念:

1、数字证书 (digital certificate)

在非对称加密通信过程中,服务器需要将公钥发送给客户端,在这一过程中,公钥很可能会被第三方拦截并替换,然后这个第三方就可以冒充服务器与客户端进行通信,这就是传说中的“中间人攻击”(man in the middle attack)。解决此问题的方法是通过受信任的第三方交换公钥,具体做法就是服务器不直接向客户端发送公钥,而是要求受信任的第三方,也就是证书认证机构 (Certificate Authority, 简称 CA)将公钥合并到数字证书中,然后服务器会把公钥连同证书一起发送给客户端,私钥则由服务器自己保存以确保安全。

2、数字签名 (digital signature)

这个概念很好理解,其实跟人的手写签名类似,是为了确保数据发送者的合法身份,也可以确保数据内容未遭到篡改,保证数据完整性。与手写签名不同的是,数字签名会随着文本数据的变化而变化。

3、证书链 (certificate chain)

证书链,也称为证书路径,是用于认证实体合法身份的证书列表,具体到 HTTPS 通信中,就是为了验证服务器的合法身份。之所以使用证书链,是为了保证根证书 (root CA certificate)的安全

握手过程的细节

1、"client hello"消息

客户端通过发送"client hello"消息向服务器发起握手请求,该消息包含了客户端所支持的 TLS 版本和密码组合以供服务器进行选择,还有一个"client random"随机字符串。
2、"server hello"消息

服务器发送"server hello"消息对客户端进行回应,该消息包含了数字证书,服务器选择的密码组合和"server random"随机字符串。
3、验证

客户端对服务器发来的证书进行验证,确保对方的合法身份,验证过程可以细化为以下几个步骤:

(1)检查数字签名
(2)验证证书链
(3)检查证书的有效期
(4)检查证书的撤回状态 (撤回代表证书已失效)
4、"premaster secret"字符串

客户端向服务器发送另一个随机字符串"premaster secret (预主密钥)",这个字符串是经过服务器的公钥加密过的,只有对应的私钥才能解密。
5、使用私钥

服务器使用私钥解密"premaster secret"。
6、生成共享密钥

客户端和服务器均使用 client random,server random 和 premaster secret,并通过相同的算法生成相同的共享密钥 KEY。
7、客户端就绪

客户端发送经过共享密钥 KEY加密过的"finished"信号。
8、服务器就绪

服务器发送经过共享密钥 KEY加密过的"finished"信号。
9、达成安全通信

握手完成,双方使用对称加密进行安全通信。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

三、抓包:了解数据传输的过程

抓包,顾名思义,就是拦截并分析网络中的数据包。常用的抓包工具有Wireshark、Fiddler等,它们通过监控网络接口,可以捕获到网络传输中的原始数据包,帮助开发者或安全人员调试网络问题、分析数据流等。

然而,在抓取HTTPS数据包时,我们会发现抓包工具无法直接查看加密后的数据。原因显而易见:HTTPS协议使用了对称加密的会话密钥来保护传输数据,而这个密钥只有通信双方知晓。因此,即便抓到数据包,我们看到的也只是一堆无法理解的密文。

抓包工具的工作原理

抓包工具通常工作在网络层,它通过抓取经过设备的网络流量来获取数据包。这些数据包可能包括HTTP请求、响应、DNS查询等。然而,HTTPS流量由于经过了SSL/TLS加密,普通的抓包工具无法直接解密其中的内容。

如果想解密HTTPS流量,我们可以借助中间人攻击(MITM)的方式,通过伪造服务器证书,从而拦截并解密客户端与服务器之间的通信。具体操作方式是在客户端和服务器之间插入一个代理,使得客户端与代理建立加密连接,而代理再与服务器建立另一条加密连接。抓包工具通过代理的角色,可以解密并查看其中的明文数据。

具体简述起来就是对客户端设置抓包工具(Charles/Fiddler等)的代理,作为客户端的代理,由抓包工具连接到实际服务器。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

四、中间人攻击:HTTPS的致命弱点?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

尽管HTTPS在理论上提供了较为完善的安全保护,但在现实环境中,中间人攻击仍然是一大威胁。这种攻击的基本思路就是在客户端和服务器之间充当“中间人”,拦截并修改双方传输的数据。

中间人攻击的成功往往依赖于不严格的证书校验。例如,用户连接到不安全的Wi-Fi网络时,攻击者可以通过伪造证书,劫持客户端与服务器的通信。一旦客户端接受了伪造的证书,攻击者便可以解密并修改双方传输的所有数据。

五、反抓包:如何保护数据不被窃取?

上文介绍了中间人攻击,黑客可以通过充当中间人窃取数据,那么开发者如何防范这种“偷窥”行为?反抓包技术,就是为了防止网络通信被恶意拦截和分析,特别是在金融、支付等敏感领域,反抓包的需求更为强烈。

HTTPS 的反抓包机制

HTTPS 本身是一道强大的防线。由于数据是加密的,即使抓包工具截获了数据包,也无法直接读取其中的内容,尤其是 HTTPS 下的对称加密让加密强度进一步提升。

但除了加密,现代应用还会通过多种方法来增强反抓包的能力。最常见的反抓包技术包括:

1、SSL-Pinning技术

它包含证书锁定(Certificate Pinning)公钥锁定(Public Key Pinning)两种方式:

(1)证书锁定
证书锁定是SSL/TLS加密的额外保证手段。它会将服务器的证书公钥预先保存在客户端。在建立安全连接的过程中,客户端会将预置的公钥和接受的证书做比较。如果一致,就建立连接,否则就拒绝连接。在客户端设置证书只允许设置指定域名的证书,而不接受操作系统或浏览器内置的CA根证书对应的任何证书。

(2)公钥锁定

HTTP公钥锁定是HTTPS网站防止攻击者CA机构错误签发的证书进行中间人攻击的一种安全机制,用于预防CA遭受入侵或其他会造成CA签发未授权证书的情况。采用公钥锁定时,网站会提供已授权公钥的哈希列表,指示客户端在后续通讯中只接受列表上的公钥。提取证书中的公钥并内置到客户端中,通过与服务器对比公钥值来验证连接的正确性。

2、代码混淆与加固

开发者通过混淆和加固代码,增加分析的难度,使得抓包工具在分析过程中难以追踪请求的真正逻辑。

3、加密数据流

即便在应用层,开发者也可以对关键的数据进行二次加密或进行序列化处理,增加数据破解的难度。

4、使用HSTS

HTTP Strict Transport Security是一种机制,强制客户端只能通过HTTPS连接到服务器,并且禁止接受任何HTTP连接或降级的请求。即便攻击者试图强制客户端降级到HTTP,也会被HSTS阻止。

5、完善的证书管理

确保证书及时更新,并且证书的签发与管理过程严格规范,防止证书被伪造或滥用。

动态反抓包技术与攻防战

随着抓包技术和工具的进步,反抓包技术也逐渐演化,形成了一场“攻防战”。有些反抓包技术会动态生成加密密钥,这意味着每次请求的密钥都是不同的,甚至在加密数据时会加入一些随机值或哈希操作,增加数据解密的难度。

还有一些更为复杂的方式,借助于机器学习,系统会监控网络请求的行为,一旦发现可疑的抓包行为,如流量异常、请求频率异常等,就会自动触发防护机制,拒绝后续请求,或者让数据返回变为乱码。

六、HTTPS性能的隐患:为什么有时会变慢?

HTTPS虽好,但在性能上确实有不小的隐患。由于SSL/TLS握手的复杂性,以及加解密过程带来的开销,HTTPS连接相比于HTTP连接有时会显得“慢”一些。

尤其在高并发场景下,频繁的握手与加解密会对服务器资源带来较大压力。为了解决这一问题,业界提出了不少优化方案,例如TLS 1.3的引入便大大简化了握手过程,减少了连接的延迟。

此外,CDN(内容分发网络)的应用也在一定程度上缓解了HTTPS的性能瓶颈。通过在全球范围内分布服务器节点,CDN可以帮助减小用户与服务器之间的物理距离,从而提升数据传输速度。

七、抓包工具的演进

随着技术的发展,抓包工具也在不断进化。除了传统的抓包分析功能,现代的抓包工具还引入了自动化分析、流量回放等高级功能。Fiddler、Burp Suite等工具可以帮助开发者更好地分析复杂的网络通信,甚至可以通过插件扩展,进行自动化的安全测试。

当然,抓包工具不仅限于开发和调试,它们在网络安全中的作用同样不可忽视。安全研究人员常常利用抓包工具,发现应用中的漏洞和安全隐患,帮助提升整体的网络安全水平。

八、总结

在网络安全的战场上,HTTPS无疑是保护数据安全的重要屏障。然而,随着技术的进步,抓包与反抓包的攻防较量也在不断升级。我们不仅要了解HTTPS的工作原理,还需深入掌握如何通过抓包工具分析数据,防范中间人攻击和其他安全威胁。网络的世界虽然隐秘,但我们可以通过技术的力量,守护每一份隐私。

学习网络安全技术的方法无非三种:

第一种是报网络安全专业,现在叫网络空间安全专业,主要专业课程:程序设计、计算机组成原理原理、数据结构、操作系统原理、数据库系统、 计算机网络、人工智能、自然语言处理、社会计算、网络安全法律法规、网络安全、内容安全、数字取证、机器学习,多媒体技术,信息检索、舆情分析等。

第二种是自学,就是在网上找资源、找教程,或者是想办法认识一-些大佬,抱紧大腿,不过这种方法很耗时间,而且学习没有规划,可能很长一段时间感觉自己没有进步,容易劝退。

第三种就是去找培训。

image.png

接下来,我会教你零基础入门快速入门上手网络安全。

网络安全入门到底是先学编程还是先学计算机基础?这是一个争议比较大的问题,有的人会建议先学编程,而有的人会建议先学计算机基础,其实这都是要学的。而且这些对学习网络安全来说非常重要。但是对于完全零基础的人来说又或者急于转行的人来说,学习编程或者计算机基础对他们来说都有一定的难度,并且花费时间太长。

第一阶段:基础准备 4周~6周

这个阶段是所有准备进入安全行业必学的部分,俗话说:基础不劳,地动山摇
image.png

第二阶段:web渗透

学习基础 时间:1周 ~ 2周:

① 了解基本概念:(SQL注入、XSS、上传、CSRF、一句话木马、等)为之后的WEB渗透测试打下基础。
② 查看一些论坛的一些Web渗透,学一学案例的思路,每一个站点都不一样,所以思路是主要的。
③ 学会提问的艺术,如果遇到不懂得要善于提问。
image.png

配置渗透环境 时间:3周 ~ 4周:

① 了解渗透测试常用的工具,例如(AWVS、SQLMAP、NMAP、BURP、中国菜刀等)。
② 下载这些工具无后门版本并且安装到计算机上。
③ 了解这些工具的使用场景,懂得基本的使用,推荐在Google上查找。

渗透实战操作 时间:约6周:

① 在网上搜索渗透实战案例,深入了解SQL注入、文件上传、解析漏洞等在实战中的使用。
② 自己搭建漏洞环境测试,推荐DWVA,SQLi-labs,Upload-labs,bWAPP。
③ 懂得渗透测试的阶段,每一个阶段需要做那些动作:例如PTES渗透测试执行标准。
④ 深入研究手工SQL注入,寻找绕过waf的方法,制作自己的脚本。
⑤ 研究文件上传的原理,如何进行截断、双重后缀欺骗(IIS、PHP)、解析漏洞利用(IIS、Nignix、Apache)等,参照:上传攻击框架。
⑥ 了解XSS形成原理和种类,在DWVA中进行实践,使用一个含有XSS漏洞的cms,安装安全狗等进行测试。
⑦ 了解一句话木马,并尝试编写过狗一句话。
⑧ 研究在Windows和Linux下的提升权限,Google关键词:提权
image.png
以上就是入门阶段

第三阶段:进阶

已经入门并且找到工作之后又该怎么进阶?详情看下图
image.png

给新手小白的入门建议:
新手入门学习最好还是从视频入手进行学习,视频的浅显易懂相比起晦涩的文字而言更容易吸收,这里我给大家准备了一套网络安全从入门到精通的视频学习资料包免费领取哦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值