一、前言
在之前一篇文章已經介紹了一款網絡訪問軟件的破解教程,當時采用的突破口是應用程序本身的一個漏洞,就是沒有關閉日志信息,我們通過抓取日志獲取到關鍵信息來找到突破口進行破解的。那篇文章也說到了,如果這個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%/system3203、將會開啟一個文件夾窗口,在里面找到CMD.EXE(cmd.exe)04、點擊右鍵,選擇"以管理員身份運行"05、輸入命令:net start npf06、系統提示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協議的訪問流程。這個也是為了以后熟練操作做準備。
在逆向研究中,有時候抓包是一個非常重要的一個突破口點。所以抓包分析包信息也是至關重要的技能。
嚴重聲明
本文介紹的內容只是為了逆向技術探討,絕對不允許不法分子進行惡意用途。而涉及到安全隱患,本文提到的樣本,加編碼美麗技術圈,留言我的真實姓名,發放僅供參考分析而已。
更多內容:點擊這里
關注微信公眾號,最新技術干貨實時推送
編碼美麗技術圈
微信掃一掃進入我的"技術圈"世界
掃一掃加小編微信添加時請注明:“編碼美麗”非常感謝!