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

正 文:

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

本文就来看下fiddler如何抓包windows系统里的pc软件的通讯数据包。

一,Fiddler下载

关于Fiddler的基本使用,飘易就不再赘述,基本属于即开即用,注意软件的左下角Capturing状态,点击这个小图标可以开启或关闭抓包。

Fiddler抓包的原理,实际上就是相当于给windows设置了一个HTTP/HTTPS代理,类似于在IE浏览器中设置代理,如[Internet 选项] — [连接] — [局域网设置] — [高级]中设置代理 [127.0.0.1:8888],Fiddler在8888端口提供HTTP/HTTPS代理服务。

二、监听HTTPS数据包

针对HTTPS的抓包,需要开启Fiddler的HTTPS抓包功能,否则只能看到HTTP请求的内容,因为HTTPS请求的是密文。

在Fiddler中点击[Tools] — [Options] — [HTTPS]勾选如下设置:

点击[Actions] — [Trust Root Certificate]让系统信任Fiddler的根证书,这是HTTPS抓包解密的关键,接下来就可以愉快的观看HTTPS请求明文内容了。

在 [Tools] — [Options] — [Connections]勾选如下设置:

到这里,浏览器的https或部分软件的https通讯请求基本可以看到明文了。但是有部分软件,这样设置后,依然还是无法抓到明文数据包,只会出现大量的 Tunnel to xx:443 错误,请求里的提示信息是:A SSLv3-compatible ClientHello handshake was found. Fiddler extracted the parameters below.

Version: 3.3 (TLS/1.2)

Random: 5F DC D3 69 67 7A E2 4E CB FA 53 FE FA 70 4B B2 16 85 9D 75 05 0D CC 1A C7 A0 32 E2 00 A6 B7 F5

"Time": 2026-04-07 00:16:31

SessionID: D3 17 00 00 00 B5 D9 A2 45 E4 A2 90 C9 F9 08 9F 1F 6E D4 74 EB 98 5C 47 61 5B 94 1C 65 05 3E 7D

Extensions:

supported_groupssecp256r1 [0x17], secp384r1 [0x18], secp521r1 [0x19], sect283k1 [0x9], sect283r1 [0xa], sect409k1 [0xb], sect409r1 [0xc], sect571k1 [0xd], sect571r1 [0xe], secp256k1 [0x16]

ec_point_formatsuncompressed [0x0]

signature_algsecdsa_secp521r1_sha512, rsa_pkcs1_sha512, ecdsa_secp384r1_sha384, rsa_pkcs1_sha384, ecdsa_secp256r1_sha256, rsa_pkcs1_sha256, dsa_sha256, ecdsa_sha1, rsa_pkcs1_sha1, dsa_sha1

extended_master_secretempty

server_namewww.***.com

Ciphers:

[C024]TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384

[C028]TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384

[003D]TLS_RSA_WITH_AES_256_CBC_SHA256

[C026]TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384

[C02A]TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384

[006B]TLS_DHE_RSA_WITH_AES_256_CBC_SHA256

[006A]TLS_DHE_DSS_WITH_AES_256_CBC_SHA256

[C00A]TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA

[C014]TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA

[0035]TLS_RSA_WITH_AES_256_CBC_SHA

[C005]TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA

[C00F]TLS_ECDH_RSA_WITH_AES_256_CBC_SHA

[0039]TLS_DHE_RSA_WITH_AES_256_CBC_SHA

[0038]TLS_DHE_DSS_WITH_AES_256_CBC_SHA

[C023]TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256

[C027]TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256

[003C]TLS_RSA_WITH_AES_128_CBC_SHA256

[C025]TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256

[C029]TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256

[0067]TLS_DHE_RSA_WITH_AES_128_CBC_SHA256

[0040]TLS_DHE_DSS_WITH_AES_128_CBC_SHA256

[C009]TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA

[C013]TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA

[002F]TLS_RSA_WITH_AES_128_CBC_SHA

[C004]TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA

[C00E]TLS_ECDH_RSA_WITH_AES_128_CBC_SHA

[0033]TLS_DHE_RSA_WITH_AES_128_CBC_SHA

[0032]TLS_DHE_DSS_WITH_AES_128_CBC_SHA

[C02C]TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384

[C02B]TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256

[C030]TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384

[009D]TLS_RSA_WITH_AES_256_GCM_SHA384

[C02E]TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384

[C032]TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384

[009F]TLS_DHE_RSA_WITH_AES_256_GCM_SHA384

[00A3]TLS_DHE_DSS_WITH_AES_256_GCM_SHA384

[C02F]TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256

[009C]TLS_RSA_WITH_AES_128_GCM_SHA256

[C02D]TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256

[C031]TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256

[009E]TLS_DHE_RSA_WITH_AES_128_GCM_SHA256

[00A2]TLS_DHE_DSS_WITH_AES_128_GCM_SHA256

[00FF]TLS_EMPTY_RENEGOTIATION_INFO_SCSV

Compression:

[00]NO_COMPRESSION

请求响应的信息会提示和服务端的加密算法不一致,出错。其实,这个错误是因为ssl的安全证书没有设置或设置错误导致的,https的请求的证书未通过校验。SecureClientPipeDirect failed: System.Security.Authentication.AuthenticationException 调用 SSPI 失败,请参见内部异常。 

三、为什么抓不到有些应用程序的HTTP(s)的包?

开启 [All Processes] 抓包后,我们运行第三方程序,会发现有的HTTP/HTTPS包可以抓到,而有的却抓不到,这是怎么回事?那是因为Fiddler的这种设置全局代理的方式,只对以下几种情况有效:IE、Chrome等浏览器。

程序使用Windows提供的WinInet库进行HTTP/HTTPS通信。

程序内嵌WebBrowser,比较常用的是IE控件和CEF。

例如如果应用程序中使用的是libcurl库进行HTTP(s)请求,则fiddler就抓不到包了,因为libcurl没有使用windows的WinInet库,而是自己实现了http(s)协议的封装。

如果有程序源码,可以在源码中设置Libcurl使用fiddler作为本地代理。如果没有,我们也可以实现将软件的代理设置为fiddler的端口。

Fiddler之所以能抓到并解密HTTPS包的内容,是因为Fiddler使用了中间人攻击的手段,该手段要能成功实施,有一个前提条件,就是客户端信任Fiddler提供的根证书,之前我们通过[Actions] — [Trust Root Certificate]让系统信任Fiddler的根证书后,大部分浏览器以及基于WinInet库进行HTTP通信的程序,都会信任操作系统中我们添加的Fiddler根证书。但如果第三方程序使用其它HTTP库进行通信,比如libcurl,JAVA的URLConnection库,C#的System.Net.Http,Python的requests,这些HTTP库一般自带了一套可信任的SSL根证书,它们不使用操作系统自带的SSL根证书,更不会使用我们向操作系统中添加的Fiddler根证书,于是就验证出错了。

下面详细给出解决这种问题的2种方法:在请求时禁用证书验证。

在请求时,指定自己生成的证书。

1、请求时禁用证书验证

以python为例:import requests

requests.get("https://www.baidu.net", verify = False)

2、请求时信任自己的证书,请查看下面的“设置代理”。

四,设置代理

1,软件本身提供了设置代理的界面

比如迅雷下载、QQ等客户端:

Fiddler抓包的原理是在本机的8888端口开启HTTP/HTTPS代理,任何通过Fiddler代理的HTTP/HTTPS通信内容都会被解析,那么只要能给目标程序设置HTTP/HTTPS代理,目标程序的HTTP(s)通讯内容就可以被Fiddler抓到。

2,软件没有提供设置代理界面,但隐藏了代理功能

有些java开发的客户端,并没有提供设置代理的界面,但是软件其实是有这个功能的,我们可以找到配置文件,比如 config.cfg,打开并编辑,添加如下配置:[JVMOptions]

-Dhttp.proxyHost=127.0.0.1

-Dhttp.proxyPort=8888

-Dhttps.proxyHost=127.0.0.1

-Dhttps.proxyPort=8888

-Djavax.net.ssl.trustStore=e:/cer/FiddlerRoot.jks

-Djavax.net.ssl.trustStorePassword=123456

就可以设置软件的代理为fiddler的端口了,并且使用fiddler的证书。注意,-Djavax.net.ssl.trustStore 这个证书的设置非常关键,如果没有这个证书,HTTPS也是无法得到明文的。

那么这个证书是怎么来的呢?有2个途径。

2.1、访问 http://127.0.0.1:8888/,下载Fiddler的根证书

如图:

点击下载fiddlerroot 证书,得到 FiddlerRoot.cer 文件。

2.2、fiddler直接导出证书

也可以通过 fiddler - tools - options - HTTPS - actions - Export Root Certificate to Desktop 把证书导出到桌面,也一样获得 FiddlerRoot.cer 文件:

2.3、转换cer证书格式

然后利用java的keytool.exe把这个证书转换成需要的格式,比如java里需要jks证书,我们转换命令为:"C:\Program Files\Java\jdk1.8.0_152\bin\keytool.exe" -import -file e:\cer\FiddlerRoot.cer -keystore e:\cer\FiddlerRoot.jks

转换的时候,需要输入密钥,一般输入 123456,如下图:

3、也可以直接把java的代理设置为系统代理

这样就可以让客户端和IE浏览器公用一个代理[JVMOptions]

-Djava.net.useSystemProxies=true

但是,请注意,这种方式可能无法对特定程序(非WinInet的HTTPS通讯请求)指定证书文件。

六、Proxifier设置全局代理

通过Proxifier设置全局sock5代理,并转发给fiddler。这种方式,也可能无法对特定程序(非WinInet的HTTPS通讯请求)指定证书文件。

1、Proxifier 代理服务器

Proxifier - 配置文件 - 代理服务器 - 添加一条指向fiddler的端口的代理:

2、Proxifier 名称解析

Proxifier - 配置文件 - 名称解析 - 勾选“通过代理解析主机名称”

这个主要是为了避免转发到fiddler后,fiddler获取的是proxifier解析后的ip地址,从而导致https的服务器端验证ssl证书失败。

让域名解析的工作交给代理服务器,而不是在Proxifier上解析。默认情况下Proxifier自行解析域名,比如www.baidu.com解析为180.97.33.108,然后发请求给Fiddler:CONNECT 180.97.33.108:443 HTTP/1.1

这样Fiddler并不知道它请求的是哪个域名,于是返回给客户端的伪造证书时,伪造的是为180.97.33.108颁发的证书,有的客户端会做校验,发现这个证书是颁发给180.97.33.108的,而不是颁发给www.baidu.com的,然后报错处理。

修改Proxifier设置后,把域名解析的工作交给代理服务器,Proxifier会直接向Fiddler发送请求:CONNECT www.baidu.com:443 HTTP/1.1

这样Fiddler就知道客户端请求的是 www.baidu.com,从而返回客户端伪造的www.baidu.com证书,客户端不报错,Fiddler才能顺利抓包解密。

3、Proxifier 代理规则

Proxifier - 配置文件 - 代理规则:

代理规则需要把fiddler或chrome等特定的程序例外掉,不要走proxifier代理,让他们直接联网,不然chrome等浏览器这些客户端是无法打开网页的。

本文结束。

参考:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/521497.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据可视化揭晓NBA球星顶薪背后的真相

戳蓝字“CSDN云计算”关注我们哦!作者 | pk哥责编 | 刘丹7月1日凌晨6点,2019年NBA自由市场正式拉开大幕。之后的故事,我们都知道了,很多球员都签了顶薪合同,在我们看来,这是一堆的天文数字。美媒统计了一个…

RabbitMQ的5种队列_简单队列_入门试炼_第4篇

Statement 文章目录一、队列总览1.1. 图示1.2. 说明二、简单队列2.1. 图示2.2. 导入RabbitMQ的客户端依赖2.3. 获取MQ的连接2.4. 生产者发送消息到队列2.5. 管理工具中查看消息2.6. 消费者从队列中获取消息一、队列总览 1.1. 图示 1.2. 说明 说明模式①简单队列②work模式 多…

阿里云操作审计 - 日志安全分析(一)

摘要: 阿里云操作审计ActionTrail审计日志已经与日志服务打通,提供准实时的审计分析、开箱机用的报表功能。本文介绍背景、配置和功能概览。背景安全形式与日志审计伴随着越来越多的企业采用信息化、云计算技术来提高效率与服务质量。针对企业组织的网络…

spark中local模式与cluster模式使用场景_不可不知的Spark调优点

不可不知的Spark调优点​mp.weixin.qq.com在利用Spark处理数据时,如果数据量不大,那么Spark的默认配置基本就能满足实际的业务场景。但是当数据量大的时候,就需要做一定的参数配置调整和优化,以保证业务的安全、稳定的运行。并且在…

阿里云IoT将举办第三届极客创新挑战赛,吸引全球极客参赛

摘要: 为支持和推动全球极客文化发展,近日,阿里云IoT宣布将举办第三届极客创新挑战赛(GXIC)。该赛事是阿里云旗下IoT事业部所主办的智能创新比赛,本届大赛将首次对外开放征集报名参赛队伍。比赛将召集所有在…

命令逐行显示_Linux命令和Shell脚本学习随笔3

一、处理目录创建目录:mkdir Test创建多级目录: mkdir -p Test1/testsub删除目录:rmdir 该命令只允许删除空目录,删除非空命令提示:Directory not empty,如果文件夹下有文件可以配合命令rm进行删除二、查看文件内容命令…

html5画布 文本无法显示,淡出HTML5画布中的文本效果

Ori..13如果使用rgba()表示法来设置fillStyle而不是十六进制表示法,则会更容易.这是一个工作示例(演示):// Create a canvas element and append it to var canvas document.createElement(canvas),context canvas.getContext(2d);document.body.appendChild(canvas);functio…

【图解分布式架构】看不懂直接面壁

戳蓝字“CSDN云计算”关注我们哦!作者 | 佚名责编 | 阿秃初始阶段架构初始阶段的小型系统、应用程序、数据库、文件等所有的资源都在一台服务器上。通俗称为LAMP。特征:应用程序、数据库、文件等所有的资源都在一台服务器上。描述:通常服务器…

RabbitMQ的5种队列_Work模式_入门试炼_第5篇

文章目录一、work模式1.1. 图示1.2. 消费者11.3. 消费者21.4. 生产者1.5. 测试二、Work模式的“能者多劳”2.1. 关键配置2.2. 测试:一、work模式 1.1. 图示 一个生产者、2个消费者。 一个消息只能被一个消费者获取。 1.2. 消费者1 package com.gblfy.rabbitmq.w…

阿里云云数据库RDS秒级监控功能解锁,通宵加班找故障将成为过去式

摘要: 每一个奋斗在前线的数据库管理员和运维人员似乎运气都不太好,这些人都绝对经历过的诡异事件就是:逢年过节必出故障,明明眼看着要休假了,又接到故障通知,只好通宵加班找问题。没问题的时候可能大家都不…

阿里云DDoS高防 - 访问与攻击日志实时分析(三)

摘要: 本文介绍了DDoS日志分析功能的日志报表的使用方法。概述本文介绍DDoS日志分析功能的日志报表的使用方法。前提配置刚进入DDoS高防控制台的全量日志下,在界面引导下开通日志服务并授权操作后。就可以给特定的网站启用日志分析功能了。报表界面介绍在…

vue获取输入框得内容_React入坑(四):获取输入框内的内容

方法一:通过event对象信息获取import React from react;class Show extends React.Component {//state 相当于是Vue里面的data state {text: "",//默认初始值 }; hanChange ev > {//onChange 为Change事件,ev是传递的参数 …

学计算机的用surface,11个高效利用Surface处理工作学习任务的方法 - Surface 使用教程...

在 Surface 上捕获屏幕截图同时按下“电源”按钮 “调高音量”按钮来捕获全屏幕的截图,然后即可将其粘贴到文档、电子邮件或应用中。 屏幕截图同时也会保存在“屏幕截图”文件夹中。在网页上做笔记在 Microsoft Edge 中,选择“设置及更多” >“更多工…

RabbitMQ的5种队列_消息确认模式_入门试炼_第6篇

消费者从队列中获取消息,服务端如何知道消息已经被消费呢? 模式1:自动确认 只要消息从队列中获取,无论消费者获取到消息后是否成功消息,都认为是消息已经成功消费。 模式2:手动确认 消费者从队列中获取消息…

5分钟了解什么是真正的深度学习

人工智能(AI)和机器学习(ML)在当下的火热程度我就不多说了,但是真正懂这方面的人又有多少呢?本文将带你了解人工智能和机器学习的基本知识。同时,你也会了解到机器学习中最火的方法——深度学习…

柱状图中xy轴怎么出现_如果制砂机设备在工作中出现堵料现象该怎么办?

制砂机设备作为砂石生产线中常用的设备,在整条生产线中起着举足轻重的作用,为我国的基础建设的发展提供了巨大的贡献。但是不管技术工艺如何不断的改革完善,在制砂机设备工作中还是会出现堵料的现象。当出现这种情况我们应该怎么办呢?下面我…

阿里云DDoS高防 - 访问与攻击日志实时分析(四)

摘要: 本文介绍了DDoS日志实时分析功能的费用计量细节与案例。概述本文介绍了DDoS日志的费用计量细节与案例。费用概述DDoS日志分析与报表功能依赖日志服务提供日志数据的实时查询与分析功能。当您开通DDoS访问与攻击日志实时分析功能时, 需要您根据界面提示开通日志…

html5录音怎么保存到本地,详解HTML5 录音遇到的坑

本文恩主要介绍了详解HTML5 录音的踩坑之旅,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能帮助到大家。说实话,一开始都没接触过 HTML5 的 Audio API,而且要基于在我们…

c++检测输入是否为数字_Go64 for Mac(检测应用是否为64位)

“一种快速的方法来全面了解您的64位应用程序兼容性,并在安装macOS Catalina之前避免意外。”Go64 可以帮你检测出你的应用是否 64 位,以及软件版本号,开发商以及官网,甚至可以为你计算出软件升级所需要花费的金额。应用介绍从 ma…

阿里云DDoS高防 - 访问与攻击日志实时分析(二)

摘要: 本文介绍了如何配置DDoS日志分析功能,结合实际场景详细介绍了如何使用日志对DDoS访问与攻击日志进行分析与图形化操作。概述本文介绍了如何配置DDoS日志分析功能,结合实际场景详细介绍了如何使用日志对DDoS访问与攻击日志进行分析与图形…