findler mac 隐藏文件_Fiddler配合Proxifier抓包PC客户端HTTPS明文数据
正 文:
一般在瀏覽器場景下,我們可以利用Fiddler很好的完成抓包,對HTTP或HTTPS連接可以清晰地看到各種數(shù)據(jù)包。但是對于一些pc端的客戶端,比如各種exe可執(zhí)行文件,就很有可能無法直接使用fiddler抓包。
本文就來看下fiddler如何抓包windows系統(tǒng)里的pc軟件的通訊數(shù)據(jù)包。
一,Fiddler下載
關(guān)于Fiddler的基本使用,飄易就不再贅述,基本屬于即開即用,注意軟件的左下角Capturing狀態(tài),點擊這個小圖標(biāo)可以開啟或關(guān)閉抓包。
Fiddler抓包的原理,實際上就是相當(dāng)于給windows設(shè)置了一個HTTP/HTTPS代理,類似于在IE瀏覽器中設(shè)置代理,如[Internet 選項] — [連接] — [局域網(wǎng)設(shè)置] — [高級]中設(shè)置代理?[127.0.0.1:8888],Fiddler在8888端口提供HTTP/HTTPS代理服務(wù)。
二、監(jiān)聽HTTPS數(shù)據(jù)包
針對HTTPS的抓包,需要開啟Fiddler的HTTPS抓包功能,否則只能看到HTTP請求的內(nèi)容,因為HTTPS請求的是密文。
在Fiddler中點擊[Tools] — [Options] — [HTTPS]勾選如下設(shè)置:
點擊[Actions] — [Trust Root Certificate]讓系統(tǒng)信任Fiddler的根證書,這是HTTPS抓包解密的關(guān)鍵,接下來就可以愉快的觀看HTTPS請求明文內(nèi)容了。
在 [Tools] — [Options] — [Connections]勾選如下設(shè)置:
到這里,瀏覽器的https或部分軟件的https通訊請求基本可以看到明文了。但是有部分軟件,這樣設(shè)置后,依然還是無法抓到明文數(shù)據(jù)包,只會出現(xiàn)大量的 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
請求響應(yīng)的信息會提示和服務(wù)端的加密算法不一致,出錯。其實,這個錯誤是因為ssl的安全證書沒有設(shè)置或設(shè)置錯誤導(dǎo)致的,https的請求的證書未通過校驗。SecureClientPipeDirect?failed:?System.Security.Authentication.AuthenticationException?調(diào)用?SSPI?失敗,請參見內(nèi)部異常。?
三、為什么抓不到有些應(yīng)用程序的HTTP(s)的包?
開啟 [All Processes] 抓包后,我們運行第三方程序,會發(fā)現(xiàn)有的HTTP/HTTPS包可以抓到,而有的卻抓不到,這是怎么回事?那是因為Fiddler的這種設(shè)置全局代理的方式,只對以下幾種情況有效:IE、Chrome等瀏覽器。
程序使用Windows提供的WinInet庫進行HTTP/HTTPS通信。
程序內(nèi)嵌WebBrowser,比較常用的是IE控件和CEF。
例如如果應(yīng)用程序中使用的是libcurl庫進行HTTP(s)請求,則fiddler就抓不到包了,因為libcurl沒有使用windows的WinInet庫,而是自己實現(xiàn)了http(s)協(xié)議的封裝。
如果有程序源碼,可以在源碼中設(shè)置Libcurl使用fiddler作為本地代理。如果沒有,我們也可以實現(xiàn)將軟件的代理設(shè)置為fiddler的端口。
Fiddler之所以能抓到并解密HTTPS包的內(nèi)容,是因為Fiddler使用了中間人攻擊的手段,該手段要能成功實施,有一個前提條件,就是客戶端信任Fiddler提供的根證書,之前我們通過[Actions] — [Trust Root Certificate]讓系統(tǒng)信任Fiddler的根證書后,大部分瀏覽器以及基于WinInet庫進行HTTP通信的程序,都會信任操作系統(tǒng)中我們添加的Fiddler根證書。但如果第三方程序使用其它HTTP庫進行通信,比如libcurl,JAVA的URLConnection庫,C#的System.Net.Http,Python的requests,這些HTTP庫一般自帶了一套可信任的SSL根證書,它們不使用操作系統(tǒng)自帶的SSL根證書,更不會使用我們向操作系統(tǒng)中添加的Fiddler根證書,于是就驗證出錯了。
下面詳細給出解決這種問題的2種方法:在請求時禁用證書驗證。
在請求時,指定自己生成的證書。
1、請求時禁用證書驗證
以python為例:import?requests
requests.get("https://www.baidu.net",?verify?=?False)
2、請求時信任自己的證書,請查看下面的“設(shè)置代理”。
四,設(shè)置代理
1,軟件本身提供了設(shè)置代理的界面
比如迅雷下載、QQ等客戶端:
Fiddler抓包的原理是在本機的8888端口開啟HTTP/HTTPS代理,任何通過Fiddler代理的HTTP/HTTPS通信內(nèi)容都會被解析,那么只要能給目標(biāo)程序設(shè)置HTTP/HTTPS代理,目標(biāo)程序的HTTP(s)通訊內(nèi)容就可以被Fiddler抓到。
2,軟件沒有提供設(shè)置代理界面,但隱藏了代理功能
有些java開發(fā)的客戶端,并沒有提供設(shè)置代理的界面,但是軟件其實是有這個功能的,我們可以找到配置文件,比如 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
就可以設(shè)置軟件的代理為fiddler的端口了,并且使用fiddler的證書。注意,-Djavax.net.ssl.trustStore 這個證書的設(shè)置非常關(guān)鍵,如果沒有這個證書,HTTPS也是無法得到明文的。
那么這個證書是怎么來的呢?有2個途徑。
2.1、訪問 http://127.0.0.1:8888/,下載Fiddler的根證書
如圖:
點擊下載fiddlerroot 證書,得到?FiddlerRoot.cer 文件。
2.2、fiddler直接導(dǎo)出證書
也可以通過 fiddler - tools - options - HTTPS - actions - Export Root Certificate to Desktop 把證書導(dǎo)出到桌面,也一樣獲得?FiddlerRoot.cer 文件:
2.3、轉(zhuǎn)換cer證書格式
然后利用java的keytool.exe把這個證書轉(zhuǎn)換成需要的格式,比如java里需要jks證書,我們轉(zhuǎn)換命令為:"C:\Program?Files\Java\jdk1.8.0_152\bin\keytool.exe"?-import?-file?e:\cer\FiddlerRoot.cer?-keystore?e:\cer\FiddlerRoot.jks
轉(zhuǎn)換的時候,需要輸入密鑰,一般輸入 123456,如下圖:
3、也可以直接把java的代理設(shè)置為系統(tǒng)代理
這樣就可以讓客戶端和IE瀏覽器公用一個代理[JVMOptions]
-Djava.net.useSystemProxies=true
但是,請注意,這種方式可能無法對特定程序(非WinInet的HTTPS通訊請求)指定證書文件。
六、Proxifier設(shè)置全局代理
通過Proxifier設(shè)置全局sock5代理,并轉(zhuǎn)發(fā)給fiddler。這種方式,也可能無法對特定程序(非WinInet的HTTPS通訊請求)指定證書文件。
1、Proxifier 代理服務(wù)器
Proxifier - 配置文件 - 代理服務(wù)器 - 添加一條指向fiddler的端口的代理:
2、Proxifier 名稱解析
Proxifier -?配置文件 - 名稱解析 - 勾選“通過代理解析主機名稱”
這個主要是為了避免轉(zhuǎn)發(fā)到fiddler后,fiddler獲取的是proxifier解析后的ip地址,從而導(dǎo)致https的服務(wù)器端驗證ssl證書失敗。
讓域名解析的工作交給代理服務(wù)器,而不是在Proxifier上解析。默認情況下Proxifier自行解析域名,比如www.baidu.com解析為180.97.33.108,然后發(fā)請求給Fiddler:CONNECT?180.97.33.108:443?HTTP/1.1
這樣Fiddler并不知道它請求的是哪個域名,于是返回給客戶端的偽造證書時,偽造的是為180.97.33.108頒發(fā)的證書,有的客戶端會做校驗,發(fā)現(xiàn)這個證書是頒發(fā)給180.97.33.108的,而不是頒發(fā)給www.baidu.com的,然后報錯處理。
修改Proxifier設(shè)置后,把域名解析的工作交給代理服務(wù)器,Proxifier會直接向Fiddler發(fā)送請求:CONNECT?www.baidu.com:443?HTTP/1.1
這樣Fiddler就知道客戶端請求的是 www.baidu.com,從而返回客戶端偽造的www.baidu.com證書,客戶端不報錯,Fiddler才能順利抓包解密。
3、Proxifier 代理規(guī)則
Proxifier -?配置文件 - 代理規(guī)則:
代理規(guī)則需要把fiddler或chrome等特定的程序例外掉,不要走proxifier代理,讓他們直接聯(lián)網(wǎng),不然chrome等瀏覽器這些客戶端是無法打開網(wǎng)頁的。
本文結(jié)束。
參考:
總結(jié)
以上是生活随笔為你收集整理的findler mac 隐藏文件_Fiddler配合Proxifier抓包PC客户端HTTPS明文数据的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: saas java框架_XMReport
- 下一篇: mysql图片字符集_MySQL字符集介