【轉】Wireshark和Fiddler分析Android中的TLS協議包數據(附帶案例樣本)

本文轉自:http://www.wjdiankong.cn/wireshark%E5%92%8Cfiddler%E5%88%86%E6%9E%90android%E4%B8%AD%E7%9A%84tls%E5%8D%8F%E8%AE%AE%E5%8C%85%E6%95%B0%E6%8D%AE%E9%99%84%E5%B8%A6%E6%A1%88%E4%BE%8B%E6%A0%B7%E6%9C%AC/android

1、前言

在以前一篇文章已經介紹了一款網絡訪問軟件的破解教程,當時採用的突破口是應用程序自己的一個漏洞,就是沒有關閉日誌信息,咱們經過抓取日誌獲取到關鍵信息來找到突破口進行破解的。那篇文章也說到了,若是這個app應用沒有日誌信息,咱們該怎麼辦呢?那麼這時候就須要採用抓包來尋找突破口了。json

2、安裝Fiddler證書

咱們經過Fiddler鏈接手機進行抓包查看,應用訪問數據信息都是用的HTTPS協議,也就是加密的數據,咱們可能沒法查看,比較麻煩,本文就來說解如何查看這些加密數據了。瀏覽器

首先咱們知道Fiddler抓包工具是能夠抓HTTPS數據的,就是把Fiddler證書安裝到設備中便可。安裝過程也很簡單:安全

第一步:導出Fidder的證書文件網絡

進入Fiddler選項中:app

而後直接選擇導出證書到桌面便可。tcp

第二步:把證書安裝到設備中工具

先把上一步導出來的證書文件,放到設備的SD目錄下,而後在設備中直接打開這個證書文件,會提示安裝信息,固然這裏在老版本系統中,可能還須要去設置頁面進行操做:學習

在設置中,選擇安全,而後選擇從SD卡安裝證書,就能夠正常安裝了。安裝成功以後,能夠查看這個證書信息:編碼

3、抓取樣本app的數據包

這樣,咱們的設備就有了Fiddler證書,這時候在用Fiddler抓包會看到正常的HTTPS協議數據了:

咱們能夠查看返回的數據信息:

惋惜的是,這裏的數據顯示是不全的。因此這時候,咱們得想辦法獲取返回的所有數據,能夠藉助Wireshark工具進行操做了,而Wireshark工具相對於Fiddler工具來講會分析的更加詳細,可是Fiddler更加方便快捷。可是Wireshark工具只能在PC端抓包運行,因此若是想用這個工具抓取手機端數據的話,能夠用兩種方式:

第一種:Wireshark+Fiddler工具

Fiddler做爲手機端的代理在PC上訪問流量。而後Wireshark能夠抓取PC上的請求,這樣來作到用Wireshark抓取手機端的請求。

第二種:Wireshark+tcpdump工具

固然咱們還能夠利用tcpdump工具來直接抓取手機端的請求數據,通常保存爲pcap文件格式,而後在PC端用Wireshark來分析pcap文件格式便可。關於tcpdump如何抓包生成pcap文件,能夠自行搜索便可。這裏不作解釋了。

不少同窗會考慮第二種,可是第二種會失敗的,由於這裏須要抓取HTTPS協議的數據,因此有證書相關的信息,若是直接用tcpdump工具抓包生成文件,而後用Wireshark工具分析是會失敗的。由於Wireshark分析TLS協議數據是須要設置證書信息的,否則是解析失敗的。因此這裏採用第一種方式進行操做。

4、Wireshark分析TLS數據包

由於Wireshark分析TLS協議的數據是須要設置證書信息的,否則看到的也是加密數據信息:

那麼這裏的問題其實就轉化成,如何利用Wireshark來解密TLS數據信息了,這個就比較簡單了,咱們能夠藉助瀏覽器自動生成的證書信息,來做爲解密的工具。這裏須要藉助一個知識點:就是瀏覽器在訪問HTTPS協議信息的時候都會有這麼個提示:

讓咱們信任這個證書:

而後,咱們確認安全,這時候,若是設置了一個系統環境變量。瀏覽器會把證書信息保存到指定文件中的,這個系統環境變量就是:SSLKEYLOGFILE,而後自定義一個SSLKEY的保存文件名稱便可。

由於咱們在上面用Fiddler能夠抓到HTTPS請求連接的,這時候咱們把這個連接放到瀏覽器中訪問一次:

而後就會有相對應的SSLKEY數據保存下來了,能夠去看看這個信息:

這樣咱們就弄到了這個url對應的證書信息了,這裏能夠看到實際上是藉助瀏覽器的功能獲取到的,下面就來Wireshark中設置這個證書信息:

在Wireshark的Edit->Preferences->Protocols->SSL,設置剛剛保存的SSLKEY信息文件位置,保存便可。

下面就來開始抓包分析吧,在啓動Wireshark抓包的時候,可能有的同窗沒法看到抓包的網絡接口信息:

這個就須要啓動系統的npf服務了,咱們能夠這麼作:

0一、在開始–>運行
0二、輸入:%windir%/system32
0三、將會開啓一個文件夾窗口,在裏面找到CMD.EXE(cmd.exe)
0四、點擊右鍵,選擇」以管理員身份運行」
0五、輸入命令:net start npf
0六、系統提示NetGroup Packet Filter Driver 服務已經啓動成功。
0七、至此,Wireshark再點擊Interfaces list就能夠正常選擇須要捕捉的接口了。
0八、若是須要關閉此服務,是要在命令行輸入命令:net stop npf 便可。

操做成功以後,再去Wireshark選擇接口列表信息就有了網絡接口信息了:

這裏運行的時候,必定要記得把本地鏈接和無線網絡鏈接都選擇上,以避免請求被遺漏:

點擊開始以後,就會發現不少請求在刷屏,爲了想看到咱們關心的數據,能夠利用一些過濾規則來進行過濾,而這裏其實有不少過濾規則命令的,感興趣的同窗能夠自行搜索操做實驗便可,這裏咱們只想看到SSL協議的請求信息:

而後咱們在利用瀏覽器去刷新剛剛那個HTTPS的請求,會發現多了不少TLS協議請求,若是這裏沒有設置上面的SSLKEY信息的話,看到的都是加密信息:

這裏簡單說一下TLS協議的原理,直接盜了網上的一張圖:

設置了SSLKEY信息以後,就能夠看到Application Data會被解密:

並且,這時候,底部會多出一個Decrypted SSL選項卡。這裏解密以後會發如今SSL層後面多了一個超文本傳輸層,也就是HTTP等信息了。而後咱們在選中這條信息,右鍵查看他的HTTP信息流:

記得是有OK字樣的那條HTTP協議數據信息條目,這裏是由於已經解密了,因此看到的是HTTP協議:

5、解密返回數據信息

這裏就能夠清晰的看到此次請求信息和返回信息了。而後咱們把這部分的數據,在用AES進行解密:

看到打印的結果就是一個返回json信息:

關於這裏的解密方法,以前一篇文章在用Jadx分析樣本已經看到了:

咱們直接把這個方法拷貝出來,寫一個簡單的Java成功就可解密了。不瞭解的同窗去回顧上一篇介紹的內容吧。

6、TLS知識點總結

好了,到這裏咱們就介紹完了,如何利用Wireshark和Fiddler這兩個抓包神器,解密HTTPS請求信息。關於TLS協議可能有的同窗還不太瞭解,並且他和SSL的區別是啥,其實TLS是SSL的升級版:

如今不少協議都會用到TLS了,並且TLS1.3版本已經出來了。好比WX就採用了這個協議進行數據加密的。咱們有了這個技能以後,後面就能夠很輕鬆的分析TLS協議數據了,固然咱們必定要熟練掌握Wireshark這個工具的用法,咱們在學習過網絡工程課的時候,都知道網絡協議棧,好比物理層,網絡層,傳輸層,應用層:

咱們在上面看到Wireshark的底部信息欄中也是有這麼幾層信息的:

在SSL層,須要解密才能看到後面的超文本傳輸層協議的詳細信息了,也就是上面的解密方法進行操做的結果。

7、問題解惑

其實看到這裏有的同窗會有好奇的地方:

  • 第一個:開始利用Fiddler能夠直接進行解密數據了,爲什麼還要用Wireshark去抓包呢?由於咱們能夠看到Fiddler抓取的信息是不全的。固然有時候多是全的,那麼就不須要在用Wireshark進行抓包分析了。
  • 第二個:在把Fiddler中抓取到的連接放到瀏覽器中訪問,生成對應的SSLKEY信息文件。在瀏覽器中不是直接能夠看到返回數據了嗎?爲何還要用Wireshark進行抓包呢?這個的確是能夠看到所有的返回信息在瀏覽器中訪問的話,可是利用Wireshark抓包是爲了更加信息的看到TLS協議的訪問流程。這個也是爲了之後熟練操做作準備。

在逆向研究中,有時候抓包是一個很是重要的一個突破口點。因此抓包分析包信息也是相當重要的技能。

 

嚴重聲明

本文介紹的內容只是爲了逆向技術探討,絕對不容許不法分子進行惡意用途。而涉及到安全隱患,本文提到的樣本,加編碼美麗技術圈,留言個人真實姓名,發放僅供參考分析而已。

相關文章
相關標籤/搜索