Linux下HTTPS抓包教程 (linuxhttps抓包)

HTTPS是目前最常用的加密通信协议,它可以确保通信过程中的数据安全。然而,有时候我们需要对HTTPS通信进行抓包分析,以便于调试和排查问题。在Linux下进行HTTPS抓包也并不复杂,下面是HTTPS抓包的详细教程。

前置条件

1. 安装wireshark

Wireshark是一款开源的网络协议分析工具,可以抓取网络上的数据包并解析出各个协议的内容。在Ubuntu下,安装Wireshark只需要在终端输入以下命令即可:

“`

sudo apt-get update

sudo apt-get install wireshark

“`

2. 安装openssl

OpenSSL是一个开源的加密库,用来保护网络通信的安全性。在Ubuntu下,可以使用以下命令进行安装:

“`

sudo apt-get install openssl

“`

3. 安装mitmproxy

mitmproxy是一个基于Python的中间人代理工具,可以拦截HTTP和HTTPS流量并进行分析和修改。在Ubuntu下,使用以下命令进行安装:

“`

sudo apt-get install python3-pip

sudo pip3 install mitmproxy

“`

进行HTTPS抓包

1. 配置mitmproxy

在终端输入以下命令启动mitmproxy:

“`

mitmproxy

“`

启动之后,可以看到类似如下的输出:

“`

Proxy server listening at http://*:8080

“`

默认情况下,mitmproxy监听的端口是8080,在后面的步骤中需要用到。

2. 配置iptables

iptables是Linux下的一个防火墙软件,可以限制网络流量的传输规则。在这里,我们用iptables来将HTTPS流量转发到mitmproxy上。

输入以下命令开启iptables:

“`

sudo iptables -t nat -A OUTPUT -p tcp –dport 443 -j REDIRECT –to-port 8080

“`

此时,iptables会将所有的HTTPS流量重定向到mitmproxy监听的8080端口。

3. 安装证书

为了实现中间人攻击,mitmproxy需要向客户端发送自己的根证书。在mitmproxy的配置输出中,可以看到如下的一句话:

“`

Certificate Authority chn:

mitmproxy

“`

这表示mitmproxy已经为我们生成了一个CA证书。但是,为了让客户端能够识别这个证书,我们需要将它安装在系统中。

我们需要将mitmproxy的根证书导出到一个文件中,输入以下命令:

“`

openssl x509 -in $(echo $HOME)/.mitmproxy/mitmproxy-ca.pem -out ca.crt

“`

接着,我们将生成的ca.crt文件复制到指定的目录中,例如:

“`

sudo cp ca.crt /usr/local/share/ca-certificates/mitmproxy.crt

“`

输入以下命令刷新证书:

“`

sudo update-ca-certificates

“`

此时,mitmproxy的根证书已经被成功安装到系统中。

4. 进行HTTPS抓包

现在,我们可以启动浏览器,访问https://www.bdu.com,并在mitmproxy的控制台中查看抓包情况了。在控制台中,可以看到如下输出:

“`

GET https://www.bdu.com/

Accept-Encoding: gzip, deflate, br

Host: www.bdu.com

User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:75.0) Gecko/20230101 Firefox/75.0

HTTP/1.1 200 OK

Content-Type: text/html;charset=utf-8

“`

这表示我们已经成功抓取到了HTTPS通信的数据包,并且可以对这些数据包进行分析和修改。

结束语

通过上述步骤,我们可以在Linux下实现HTTPS抓包。当然,在实际的应用中,中间人攻击是一种非常危险的行为,需要特别注意。此外,在进行HTTPS抓包的过程中,为了避免出现安全风险,应该遵守公司或组织的安全规范,不要进行非法或未经授权的行为。

相关问题拓展阅读:

HTTP/HTTPS抓包工具Charles

http抓包比较简单,基本上只要打开了charles,然后随便一个网络请求,就可以在charles中看到抓取的信息了

那么我们怎么抓取iOS真机设备上的http呢?

在电脑上抓包https,例如百度的,首先就是安装Charles的根证书,Help – SSL Proxying – Install Charles Root Certificate ,会打开 钥匙 应用,安装进去

这样,证书是不可用的,你还是不能抓包https,怎么做呢?

在证书上 右键 – 显示详情 ,展开信任 选择 始终信任

然后点击左上角的关闭,系统会弹出授权提示框,授权同意修改,回到列表,稍等,证书就刷新了

这个时候就可以用了

就可以抓包这个host了

其实这一步等返高价于

在host中可以输入 * 表示 匹配所有的

当然启世侍,Port 也可以输入 *

:

这样就是匹配所有的了

这个时候,你悄吵访问https网络请求,就可以在charles上看到了!

Wireshark抓包图解HTTPS连接过程

图1.1是通过Wireshark抓到的HTTPS(TLS1.2)连接过程的数据包

数据包中的client端ip地址是192.168.1.51,是一部iOS手机;server端ip地址是54.213.131.0,是AWS的某台服务器。

数据包主要分为三部分:

红色标记部分:TCP三次握手

绿色标记部分:TLS1.2握手交换密钥并确定加密方式

蓝色标记部分:HTTPS正式通信

Wireshark的抓包展示栏从左至右分别是: 消息ID(no.),消息时间戳(time),消息请求端ip地址(source),消息目标端ip地址(destination), 使用协议(protocol),消息长度(length),消息描述(info),下面会对数据包进行逐条解释

no.89 client向server发起的TCP连接请求的之一次握手,发送一个SYN包,Seq=0,TCP连接有两个基本要素:ip和port,443是HTTPS的端口号

no.91 server向client回复的TCP第二次握手,发送一个SYN包和ACK包,Seq=0, Ack=no.89的Seq+1, 所以Ack=0+1

no.92 client向server端发起的TCP第三次握手,发送一个ACK包,Ack=no.91的Seq+1,所以Ack=0+1

以上三个消息就完成了HTTPS中的TCP握手阶段,由此可兄哗丛以看出HTTPS是基于TCP的连接成功的。

HTTPS = HTTP + SSL,如果是HTTP协议,则没有SSL握手过程,直接进入第三步

no.93 client向server发起Hello消息,这里面主要包含五种信息(图2.1):

    1. client的TLS版本

    2. client支持的加密方式(图2.2)

    3. client支持的压缩方式

    4. 会话ID

    5. 客户端随机数 Random1

no.98 server向client回复一个Ack表示no.93的包已经收到,这个是基于TCP的确认收到。

no.99 server向client发送Hello消息, 这里面主要包含五种信息(图2.3)

    1. 采用TLS的版本

    2. 在no.93中client支持的加密方法列表选取的加密方式

    3. 在no.93中client支持的压缩方式列表选取的芦姿压缩方式

    4. 服务器的随机数 Random2

    5. 会话ID

no.102 server向client发出三个包(见图2.4):

    1.Certificate 服务器的公钥

    2.Server Key Exchange Server端计算加密的参数,如果是DH加密则需要这一步(见图2.5)

    3.Server Hello Done 握手结束事件

no.对TCP包的ACK

no.106 client向server发出三个包(见图2.6):

    1. Client Key Exchange   客户端验证no.102的公钥的合法性后,生成一个随机数 Random3, 通过公钥对Random3进行 非对称加密 发送给server端,server端通过私钥进行解密;至此client和server都存在Random1,2,3 三个变量,通过同一种加密算法计算出相同的加密密钥。

    2. Change Cipher Spec  client通知server进入对称加密模式

    3. Encrypted Handshake Message client将之前握手消息通过计算出的密钥加密发给server, 如果server能解析出来则说明密钥一致; 这是client之一条加密消息

no.109 server向client发送两个包羡樱(见图2.7)

    1. Change Cipher Spec server通知client进入对称加密模式

    2. Encrypted Handshake Message server将之前握手消息通过计算出的密钥加密发给client, 如果client能解析出来则说明密钥一致; 这是server之一条加密消息

直到no.109消息,整体HTTPS的连接过程已经结束,剩下为正式通信数据

最后,附上整个的HTTPS连接过程的时序图(图3.1)

linuxhttps抓包的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linuxhttps抓包,Linux下HTTPS抓包教程,HTTP/HTTPS抓包工具Charles,Wireshark抓包图解HTTPS连接过程的信息别忘了在本站进行查找喔。


数据运维技术 » Linux下HTTPS抓包教程 (linuxhttps抓包)