简介

抓包是一种网络分析技术,可以用于捕获和分析数据包,通常用于网络故障排查、协议分析、安全审计等。网络上所有的数据包都是以二进制的形式在网络上传输的,抓包工具可以捕获到这些数据包并将其转换为可读的格式,方便进行分析。

抓包的基本原理是,通过在网络中插入一个抓包工具或者在计算机上安装网络适配器软件,在将数据包从网络上传输到下一跳之前拦截所有的数据包。拦截的数据包可以进行导出和分析,以便深入研究网络通信和协议。

HTTPS中间人抓包

HTTPS(Hypertext Transfer Protocol Secure)是一种安全的网络传输协议,为了保护数据流,HTTPS通信基于SSL/TLS协议来加密和解密网络传输的数据。在HTTPS通信中,双方的客户端和服务器之间进行的数据传输是经过加密的,因此在网络中进行抓包分析需要进行“HTTPS中间人”攻击。

HTTPS中间人攻击是指攻击者让客户端和服务器之间的通信经过攻击者控制的中间节点,攻击者对数据进行捕获、修改和转发。在HTTP通信中,攻击者可以轻松地捕获和查看通信中的数据,但在HTTPS通信中,由于通信数据是经过SSL/TLS加密的,攻击者无法直接查看。因此,攻击者需要让客户端认为攻击者控制的中间节点是服务器,同时让服务器认为攻击者控制的中间节点是客户端。这样攻击者就可以将客户端与服务器之间加密的通信流经过自己的中间节点进行解密,并查看其中的数据。

以下是HTTPS中间人攻击的一般步骤:

  1. 攻击者通过DNS欺骗等方式,让客户端将攻击者伪装成服务器的IP地址。
  2. 客户端向攻击者伪装成的服务器发送SSL握手请求。
  3. 攻击者将伪装的SSL握手请求转发给真正的服务器。
  4. 服务器返回数字证书以及自己的公钥给客户端。
  5. 一旦客户端接受了数字证书并验证通过了,它将使用服务器的公钥加密Session key,然后使用服务器的公钥加密发送给服务器以建立会话。
  6. 攻击者在客户端和服务器之间注入他自己的数字证书和公钥,伪装成客户端,发送加密数据给服务器。
  7. 服务器接收到数据,使用伪造的公钥解密Session Key,用Session Key重新加密数据并发送给实际客户端。
  8. 实际客户端使用自己的私钥解密数据。

攻击者在这个过程中就可以中间拦截通信,并通过自己的伪造证书让客户端和服务器都认为是正在与对方之间进行通信。中间拦截的通信可以通过各种抓包工具进行进行分析。

HTTPS 中间人抓包解析

HTTPS(Hyper Text Transfer Protocol Secure)是一种比HTTP更加安全的网络通信协议,采用加密传输和验证机制来保护数据的隐私和安全。但是,为了实现加密传输,HTTPS使用了SSL/TLS证书验证,会对证书进行验证,所以如果想要在HTTPS中间人攻击中抓取数据,需要先建立证书伪造的方式进行劫持,并进行代理转发。以下是HTTPS中间人攻击的详细步骤和代码解析:

建立代理服务器

中间人攻击需要建立一个代理服务器,所有的客户端流量都要先经过该代理服务器进行转发。可以使用Python编写一个代理服务器程序,并监听客户端的进入请求,如下所示:

import socket
import threading
​
class ProxyServer:def __init__(self, host, port):self.host = hostself.port = port
​def start(self):server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)server.bind((self.host, self.port))server.listen(5)print(f"Proxy server is listening on {self.host}:{self.port}")while True:client_socket, client_address = server.accept()print(f"Receive client connection from {client_address}")# 创建子线程来处理客户端请求proxy_thread = threading.Thread(target=self.handle_request, args=(client_socket,))proxy_thread.daemon = Trueproxy_thread.start()
​def handle_request(self, client_socket):# 获取客户端请求头request_header = client_socket.recv(4096)# 可以对请求头进行修改和过滤,如去除一些敏感信息等# 修改之后需要重新设置请求头# 代理服务器需要将请求头发送给目标服务器# 目标服务器的地址可以从请求头中解析得到target_address = self.get_target_address(request_header)target_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)target_socket.connect(target_address)# 可以对请求体进行修改和过滤# 修改之后需要重新设置请求体target_socket.sendall(request_header)# 获取目标服务器响应并发送给客户端while True:# 接收目标服务器响应response = target_socket.recv(4096)if not response:break# 可以对响应进行修改和过滤# 修改之后需要重新设置响应client_socket.sendall(response)# 关闭套接字target_socket.close()client_socket.close()
​def get_target_address(self, request_header):# 解析请求头获取目标服务器地址# 返回由目标服务器地址和端口号组成的元组pass
​
​
if __name__ == "__main__":proxy_server = ProxyServer("0.0.0.0", 8080)proxy_server.start()

证书伪造

在HTTPS中,客户端和服务器之间会进行SSL/TLS协议握手,获取证书并进行验证,以保证传输的安全性。但是,中间人攻击需要伪造证书,以替换原本的证书,从而可以劫持数据流量,因此需要使用如mitmproxy等的中间人代理工具(或编写代码自行实现)来自动化生成伪造证书。例如:

from mitmproxy import certs
​
# 伪造证书
def fake_cert(site_name):fake_ca = certs.CertStore.load_ca_cert("fake_ca.pem") # 导入伪造CA证书ca_private_key = certs.CertStore.load_ca_key("fake_ca_key.pem") # 导入伪造CA证书私钥# 使用mitmproxy的证书工具生成伪造证书return certs.CertGenerator().generate_ca_signed_cert(site_name, fake_ca, ca_private_key)
​
# 安装伪造证书
def request(flow):flow.client_connection.tls_server_name = flow.request.host # 获取请求域名flow.request.scheme = "https" # 修改请求协议为HTTPSflow.server_conn.certstore = certs.CertStore() # 使用自定义证书库# 将伪造的证书装载到证书库中fake = fake_cert(flow.client_connection.servername)flow.server_conn.certstore.add_cert(fake)

代码运行

运行代理服务器程序,让客户端连接代理服务器,然后可以使用mitmproxy等中间人代理工具,通过运行代理进行HTTPS流量捕获和分析。可以在浏览器中设置代理服务器地址和端口号为代理服务器地址和端口号,并确保客户端证书验证被禁用。在运行代理服务器程序时,可以通过参数 -v 来启用详细模式,以看到更多的调试信息。

以上就是HTTPS中间人抓包的详细步骤和代码解析,但是需要注意的是,进行中间人攻击可能违反当地法律法规和道德规范,因此应该谨慎使用,并遵守相关规定和标准。

在Android逆向开发中,抓包是重要的部分,其中就包含了HTTPS中间人抓包 ,想了解更多Android 逆向知识。大家可以参考《Android核心技术手册》点击查看详细内容获取相关文档。

结尾

抓包是指截获网络数据包并分析其中的内容,包括网络协议和其它数据。HTTPS中间人攻击是指攻击者能够以伪造的身份介入通信,从而能够查看网络通信的内容。以下是HTTPS中间人抓包的总结,包括以下内容:

  • 工具选择:常用抓包工具包括Fiddler、Charles、Burp Suite等。
  • 安装证书:为了让中间人攻击者能够伪装成目标网站与客户端进行通信,攻击者需要先在目标客户端上安装一个伪造的SSL证书。常见的办法是在设备上安装自签名证书或信任由攻击者签名的证书。
  • 正常访问:在安装证书之后,攻击者将可以在客户端和服务端之间插入自己并伪装成服务端与客户端通信。此时,在通信过程中,攻击者可以进行抓包分析。为了不引起怀疑,攻击者需要模拟正常的网络访问行为,在浏览器中打开目标网站,登录或执行其它操作等。
  • 抓包分析:在正常访问中,攻击者可以运用抓包工具捕获来自服务端和客户端的通信流量。其中最重要的是HTTPS的加密流量。攻击者可以解密这些流量,从而分析敏感信息,包括用户名、密码、信用卡信息等敏感数据。
  • 防御措施:为了防止HTTPS中间人攻击,客户端应该仔细检查所使用的SSL证书的有效性。特别是对于自签名证书,应该细心审核,并且不要将信任整个证书颁发机构。此外,网站可以采用HSTS技术来防止攻击。通过强制客户端只能安全地访问网站,防止安全漏洞的利用。

抓包!抓包! HTTPS中间人抓包相关推荐

  1. Fiddler手机抓包,及HTTPS协议抓包【手机如何安装fiddler证书,以华为为例】

    [推荐使用]使用安卓模拟器手机抓包配置[夜神模拟器为例]: 第一步:只要你在本地电脑可以访问ip地址:端口8888[如:http://192.168.2.102:8888/]可以访问,那么在模拟器就直 ...

  2. HTTPS中间人攻击,HTTPS被抓包了怎么办?

    目录 一.写在前面 二.什么是中间人攻击 三.https 是绝对安全的吗 四.中间人攻击的初步了解 五.中间人攻击的深入了解 六.https 是如何防止中间人攻击的 SSL-Pinning 七.浏览器 ...

  3. 如何使用charles对Android Https进行抓包

    2019独角兽企业重金招聘Python工程师标准>>> 如何使用charles对Android Https进行抓包 博客分类: 搜索引擎,爬虫 原理 man-in-the-middl ...

  4. findler mac 隐藏文件_Fiddler配合Proxifier抓包PC客户端HTTPS明文数据

    正 文: 一般在浏览器场景下,我们可以利用Fiddler很好的完成抓包,对HTTP或HTTPS连接可以清晰地看到各种数据包.但是对于一些pc端的客户端,比如各种exe可执行文件,就很有可能无法直接使用 ...

  5. 为什么用抓包工具看HTTPS包是明文的

    目录 HTTPS 到底是什么 TLS 抓包工具抓包的原理 总结 测试或者开发调试的过程中,经常会进行抓包分析,并且装上抓包工具的证书就能抓取 HTTPS 的数据包并显示.由此就产生了一个疑问,为什么抓 ...

  6. Https/Tcp抓包工具Charles、fiddler,ping (网络诊断工具),Android平台HTTPS抓包解决方案及问题分析HttpCanary

    市面上已经有一些弱网络模拟工具,比如微软的Network Emulator for Windows Toolkit(NEWT),Facebook的Augmented Traffic Control(A ...

  7. 面试官系列 - https 真的安全吗,可以抓包吗,如何防止抓包吗

    文章目录 前言 背景 什么是 https 什么是SSL https 的连接过程 证书验证阶段 数据传输阶段 https 的加密方式是怎样的,对称加密和非对称加密,为什么要这样设计 内容传输为什么要使用 ...

  8. Fiddler抓包1-抓firefox上https请求

    前言 fiddler是一个很好的抓包工具,默认是抓http请求的,对于pc上的https请求,会提示网页不安全,这时候需要在浏览器上安装证书. 一.网页不安全 1.用fiddler抓包时候,打开百度网 ...

  9. Fiddler抓包使用教程-Https

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/72956016 本文出自[赵彦军的博客] 开启 Https 抓包 Fiddler 默 ...

最新文章

  1. ds90ub934 i2c 配置_DS90UB948-Q1:1080p 双路 FPD-Link III 解串器
  2. 【NLP-NER】命名实体识别中最常用的两种深度学习模型
  3. oracle11g nid,Oracle工具之nid命令的使用
  4. 滑动窗口最大值-leetcode 239题
  5. 简单读取Properties文件的方法
  6. Django【基础篇】
  7. 以命令行的格式读取音频文件信息,并将读取的内容写到输出文件中
  8. java 下划线_Java SE 9:“ _”(下划线)更改
  9. rs485全双工中只接一组_关于RS485接口的十八个经典问答!看你能答出几个!
  10. js代码实现点击按钮出现60秒倒计时
  11. 华尔街日报评亚洲10大商界人物 王建宙等上榜
  12. 字节序——Big Endian和Little Endian
  13. 老男孩Day9作业:高级FTP
  14. 【UE4】联网游戏开发的正确姿势
  15. 如何向App Store提交应用
  16. 网络标准(从一类线到八类线)
  17. 数据库中的三种完整性:域、实体、参照完整性
  18. 全国青少年编程等级考试scratch二级真题2019年3月(含题库答题软件账号)
  19. STM32F103 TFTLCD显示实验(一)
  20. Bnd教程(1):如何用命令行安装bnd

热门文章

  1. 使用第三方包mongoose来操作MongoDB数据库,解决报错:MongooseError
  2. 在Linux系统下玩《炉石传说:魔兽英雄传》
  3. 如何下载广西壮族自治区卫星地图高清版大图
  4. Ubuntu20.04解决安装synergy失败问题
  5. N1试卷常考词汇总结
  6. 目前使用AS400核心系统的银行列表
  7. 无线电监测接收机是干什么的?目前都有哪些品牌在售
  8. 我们有理由相信,中国将进入一个全面的刷脸支付新时代
  9. ImageNet准确率超过90%!谷歌大脑开源V-MoE,用稀疏条件计算来训练目前最大的视觉模型!(NeurIPS 2021)...
  10. 好用的在线调试摄像头的网址