Burp证书那点事

本文详细解释了如何通过Burp添加证书抓取HTTPS流量,涉及中间人攻击原理,以及如何处理单向和双向认证,包括如何导入客户端证书进行双向认证。还介绍了如何设置Burp进行内网攻击的流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:

        都知道Burp可以通过设置代理并添加证书来抓取https流量,但是具体的原理可能还有些不理解,这里把具体的原理进行讲解,我们访问网站时https单向认证,属于服务端对客户端进行认证,另外延申可以通过app添加证书对服务端进行认证,进行https双向认证校验。

Burp添加证书:

首先看下如何通过Burp添加证书来抓取https流量:

首先下载插件FoxyProxy添加代理到burp,然后浏览器访问127.0.0.1:8080

点击后可以下载burp的内置证书到本地,然后将证书导入到浏览器中:

导入成功后其中ProtSwigger就是我们导入的BURP证书,然后我们访问我们要抓取的https网站,会提示是否信任证书,我们选择信任就可以抓取到对应的流量了。为什么我们添加了证书就可以抓取到https证书,下面进行讲解:

中间人抓取https:

        首先我们要知道https=http+SSL,在之前使用http的时候,数据在传输过程中是不加密的,所以只要我们中间放任意一个流量设备,就可以获取到完整的内容,拿到这些流量可以干什么,首先可以盗取其中的敏感信息,其次我可以往里面穿插数据,将一堆的广告信息插入到正常流量里,这样我们访问正规网站的时候却发现有大量的低俗的广告信息,更严重的会添加钓鱼信息,诱骗访问者进入钓鱼网站进行诈骗,这些问题就出在流量没有加密,只要在链路中间架设任意一个流量设备就可以对内容进行修改,如何解决这个问题就出现了https,就是对流量进行加密,这样中间人拿到流量也是加密的,如果没有对应的密钥没有办法解开内容,自然就不能进行上述违规操作。下面简单讲解下https的原理:

        先看一张网上的流程图:

具体的过程如下: 

1 客户端访问https连接
这一步,就是相当于我们在浏览器上输入url回车的过程。这个时候浏览器或者客户端(接下来统一为客户端)会把我们客户端支持的加密算法Cipher Suite(密钥算法套件)带给服务端。

2 - 3 服务端发送证书(公钥)给客户端
服务端接收Cipher后,和自己支持的加密算法进行比对,目前TLS算法有1,1,1,1,2,1,3,其中1和1.1是存在漏洞的,存在被中间人伪造证书的风险。这里会判断客户端要求的Cipher服务器是否支持,如果不符合,则断开连接。否则,服务端会把符合的算法和证书发给客户端,包括证书时间、证书日期、证书颁发的机构。

4- 5 客户端验证服务端的证书
1、客户端验证证书,包括颁发证书的机构是否合法与是否过期,证书中包含的网站地址是否与正在访问的地址一致等,类似如下就是验证通过的证书,可以看到详细的证书信息。

2、验证通过后(或者用户接受了不信任的证书),客户端会生成一个随机字符串,然后用服务端的公钥进行加密。这里就保证了只有服务端才能看到这串随机字符串(因为服务端拥有公钥对应的私钥,RSA解密,可以知道客户端的随机字符串)。

3、生成握手信息 用约定好的HASH算法,对握手信息进行取HASH,然后用随机字符串加密握手信息和握手信息的签名HASH值,把结果发给服务端。这里之所以要带上握手信息的HASH是因为,防止信息被篡改。如果信息被篡改,那么服务端接收到信息进行HASH时,就会发现HASH值和客户端传回来的不一样。这里就保证了信息不会被篡改。

6 - 7 服务端接收加密信息,解密得到客户端提供的随机字符串
服务端接收到加密信息后,首先用私钥解密得到随机字符串。然后用随机字符串解密握手信息,获得握手信息和握手信息的HASH值,服务端对握手信息进行HASH,比对客户端传回来的HASH。如果相同,则说明信息没有被篡改。

服务端验证完客户端的信息以后,同样使用随机字符串加密握手信息和握手信息的HASH值发给客户端。

8 客户端验证服务端返回的握手信息,完成握手
客户端接收到服务端发回来的握手信息后,用一开始生成的随机字符串对密文进行解密,得到握手信息和握手信息的HASH值,像一步服务端验证一样对握手信息进行校验,校验通过后,握手完毕。从这里开始,客户端和服务端的通信就使用那串随机字符串进行AES对称加密通信。

以上就完成了https的认证和通信,所以整个https最重要的就是对于证书的验证,如果证书可以被伪造,则整个加密将被破解。

Burp中间人原理:

上面说了https的原理,下面说说Burp是如果对https进行中间人劫持的,先看张图网上的图:

         其实这个图已经说的很细了,简单点说我们的BURP就是在中间变换身份来实现,首先我们需要向浏览器导入BURP的证书,为什么要这样,因为当客户端访问服务器中,我们添加了burp代理,客户端就会将burp认为是服务端,burp在向服务器发送数据时,服务端又会认定burp为客户端,所以本来客户端和服务端进行一次的https认证,通过Burp变成了两次https认证,

        首先是客户端到服务端,客户端首先访问到burp,burp模仿服务器进行https认证,需要返回一个burp的证书进行验证,这里如果没有事先将burp证书导入到浏览器为证书颁发机构证书则会认证失败,所以一定需要导入证书到浏览器原因就在这,由于证书被导入到浏览器,则证书验证成功,这里可以看到浏览器证书变成了burp证书。

这样就完成了客户端到burp的证书校验,我们就可以抓取到客户端的流量。

下面burp就需要扮演客户端将数据发送给服务器,这里就会进行第二次https认证,通过burp的Server TLS证书我们可以看到在burp中存储了服务器的tls证书

这样大家也就理解了burp是如何实现对https数据的抓取和重放的,通过扮演不同的身份来实现偷梁换柱抓取流量,我们没有办法获取到服务器的证书,所以只能采用这种办法对两端进行欺骗,通过上述办法实现对https单向认证的绕过。

Burp TLS双向认证:

        上面讲解了如何绕过https的单向认证,下面我们说下如何绕过https的双向认证,单向认证主要是客户端对服务端进行认证,双向认证则加入了服务端对客户端的认证,这样就需要客户端存在自己的证书,通过浏览器访问的是办不到的,因为没有办法通过访问网站的形式将证书放到浏览器中,所以双向认证多在app或者独立的客户端中,所以如果碰到app抓取流量没有办法抓取到的时候要考虑是否存在双向认证,这个时候我们需要去客户端中寻找对应的客户端证书。

        当找到对应的客户端证书后可以导入到burp中:

导入成功后就可以进行流量的抓取。

Burp添加SOCK: 

        当我们需要攻击环境内网数据进行测试中,我们需要对burp进行设置,这样可以完成浏览器->burp->SOCK服务器->服务器,这样的攻击流程:

首先我们可以看到我们工具的sock端口为7890

​​​​​​​

然后对burp进行设置,添加sock:

这样流量就会被burp发送到工具然后通过SOCK服务器转发到对应服务器。 

### Burp Suite 证书安装教程 对于旧版BurpSuite,在浏览器中配置本地代理以及导入证书是必要的操作,这确实给用户带来了不便[^1]。然而,随着版本更新,部分流程得到了简化。 #### 安装Burp Suite CA证书到操作系统或特定应用环境 当涉及到像火狐这样的第三方浏览器时,则仍然需要手动将BurpSuite产生的CA证书添加进去以确保HTTPS流量能够被成功拦截和解析[^2]。具体步骤如下: - 打开BurpSuite Professional软件; - 导航至`Proxy`选项卡下的`Options`子菜单; - 查看HTTP Listener设置中的Port数值,默认情况下可能是8080端口; - 访问http://localhost:指定端口号/burp地址获取由BurpSuite签发的根证书文件(通常为.der格式); - 对于Firefox而言,进入浏览器内部的安全模块管理界面完成对该自签名证书的信任授权过程; ```bash # 使用openssl工具转换der格式为pem格式以便某些平台支持 openssl x509 -inform DER -in burp.cer -out burp.pem ``` #### 处理私钥相关问题 关于私钥方面的工作主要集中在两个场景:一是为了实现更高级别的加密通信而创建新的SSL/TLS会话密钥对;二是针对已经存在的服务端公私钥组合做兼容适配工作。如果遇到私钥丢失或者损坏的情况,可能不得不重新生成一对匹配的新钥匙,并相应调整服务器端配置使其生效。 需要注意的是,任何涉及敏感信息安全的操作都应当谨慎行,遵循最佳实践指南来保护数据隐私不泄露风险。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值