1. 程式人生 > >android黑科技系列——Wireshark和Fiddler分析Android中的TLS協議包數據(附帶案例樣本)

android黑科技系列——Wireshark和Fiddler分析Android中的TLS協議包數據(附帶案例樣本)

以管理員身份運行 inter pca lar stop 解析失敗 dash 獲取 程序

一、前言

在之前一篇文章已經介紹了一款網絡訪問軟件的破解教程,當時采用的突破口是應用程序本身的一個漏洞,就是沒有關閉日誌信息,我們通過抓取日誌獲取到關鍵信息來找到突破口進行破解的。那篇文章也說到了,如果這個app應用沒有日誌信息,我們該怎麽辦呢?那麽這時候就需要采用抓包來尋找突破口了。

二、安裝Fiddler證書

我們通過Fiddler連接手機進行抓包查看,應用訪問數據信息都是用的HTTPS協議,也就是加密的數據,我們可能無法查看,比較麻煩,本文就來講解如何查看這些加密數據了。

技術分享

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

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

技術分享

進入Fiddler選項中:

技術分享

然後直接選擇導出證書到桌面即可。

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

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

技術分享

在設置中,選擇安全,然後選擇從SD卡安裝證書,就可以正常安裝了。安裝成功之後,可以查看這個證書信息:

技術分享

三、抓取樣本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協議數據是需要設置證書信息的,不然是解析失敗的。所以這裏采用第一種方式進行操作。

四、Wireshark分析TLS數據包

因為Wireshark分析TLS協議的數據是需要設置證書信息的,不然看到的也是加密數據信息:

技術分享

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

技術分享

讓我們信任這個證書:

技術分享

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

技術分享

因為我們在上面用Fiddler可以抓到HTTPS請求鏈接的,這時候我們把這個鏈接放到瀏覽器中訪問一次:

技術分享

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

技術分享

這樣我們就弄到了這個url對應的證書信息了,這裏可以看到其實是借助瀏覽器的功能獲取到的,下面就來Wireshark中設置這個證書信息:

技術分享

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

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

技術分享

這個就需要啟動系統的npf服務了,我們可以這麽做:

01、在開始–>運行
02、輸入:%windir%/system32
03、將會開啟一個文件夾窗口,在裏面找到CMD.EXE(cmd.exe)
04、點擊右鍵,選擇”以管理員身份運行”
05、輸入命令:net start npf
06、系統提示NetGroup Packet Filter Driver 服務已經啟動成功。
07、至此,Wireshark再點擊Interfaces list就可以正常選擇需要捕捉的接口了。
08、如果需要關閉此服務,是要在命令行輸入命令:net stop npf 即可。

技術分享

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

技術分享

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

技術分享

點擊開始之後,就會發現很多請求在刷屏,為了想看到我們關心的數據,可以利用一些過濾規則來進行過濾,而這裏其實有很多過濾規則命令的,感興趣的同學可以自行搜索操作實驗即可,這裏我們只想看到SSL協議的請求信息:

技術分享

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

技術分享

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

技術分享

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

技術分享

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

技術分享

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

技術分享

五、解密返回數據信息

這裏就可以清晰的看到這次請求信息和返回信息了。然後我們把這部分的數據,在用AES進行解密:

技術分享

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

技術分享

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

技術分享

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

六、TLS知識點總結

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

技術分享

現在很多協議都會用到TLS了,而且TLS1.3版本已經出來了。比如WX就采用了這個協議進行數據加密的。我們有了這個技能之後,後面就可以很輕松的分析TLS協議數據了,當然我們一定要熟練掌握Wireshark這個工具的用法,我們在學習過網絡工程課的時候,都知道網絡協議棧,比如物理層,網絡層,傳輸層,應用層:

技術分享

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

技術分享

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

七、問題解惑

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

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

在逆向研究中,有時候抓包是一個非常重要的一個突破口點。所以抓包分析包信息也是至關重要的技能。

轉載自:http://www.wjdiankong.cn/category/android%e6%8a%80%e6%9c%af%e7%af%87/

android黑科技系列——Wireshark和Fiddler分析Android中的TLS協議包數據(附帶案例樣本)