安卓脫殼&&協議分析&&burp輔助分析插件編寫
前言
本文由 本人 首發於 先知安全技術社區: https://xianzhi.aliyun.com/forum/user/5274
本文以一個 app
為例,演示對 app
脫殼,然後分析其 協議加密和簽名方法,然後編寫 burp
腳本以方便後面的測試。
文中涉及的文件,脫殼後的 dex 都在:
鏈接: https://pan.baidu.com/s/1nvmUdq5 密碼: isrr
對於 burp 擴展和後面加解密登錄數據包工具的的源碼,直接用 jd-gui
反編譯 jar
包即可。
正文
首先下載目標 apk
,然後拖到 GDA
裏面看看有沒有殼。
發現是騰訊加固,可以通過修改 dex2oat
的源碼進行脫殼。
具體可以看: https://bbs.pediy.com/thread-210275.htm
脫完殼 dex
文件,扔到 jeb
裏面進行分析(GDA分析能力還是不太強,不過速度快)
類和方法都出來了,脫殼成功。
首先看看協議抓取,建議自己電腦起一個 ap
(熱點), 然後用手機連接熱點,對於 http
的數據包,可以使用 burp
進行抓取(對於 https
還要記得先安裝 burp
的證書),對於 tcp
的數據包,由於我們是連接的 電腦的 wifi
所以我們可以直接用 wireshark
抓取我們網卡的數據包就能抓到手機的數據包。對於筆記本,可以買個無線網卡。
首先看看註冊數據包的抓取,設置好代理,選擇註冊功能,然後去 burp
對於登錄數據包,點擊登錄功能,去發現 burp
無法抓到數據包, 懷疑使用了 tcp
發送請求數據,於是開啟 wireshark
抓取 手機連接的熱點到的網卡的數據包。抓取時間要短一些,不然找信息就很麻煩了。
然後我們一個一個 tcp
數據包查看,看看有沒有什麽特殊的。
發現一個數據包裏面有 base64
加密的數據,猜測這個應該就是登陸的數據包。查了一下 ip
,應該就是了。
下面針對不同類型的協議加密措施進行分析。
HTTP協議
協議分析關鍵是找到加密解密的函數,可以使用關鍵字搜索定位。為了方便搜索,先把 dex
轉成 smali
然後用文本搜索工具搜索就行了,我使用 android killer
sn
, verify
等關鍵詞進行搜索,定位關鍵代碼。我選擇了 verify
,因為它搜出的結果較少。
函數沒經過混淆,看函數名就可以大概猜出了作用,找到關鍵方法,拿起 jeb
分析之。
先來看看 LoginReg2_Activity
的 onCreate
方法。
獲取手機號進入了 XHttpApi.getVerify
方法,跟進
先調用了 XHttpApi.addSnToParams(params)
(看名稱估計他就是增加簽名的函數了),然後發送 post
請求。
繼續跟進 XHttpApi.addSnToParams
至此簽名方案非常清晰了。
- 獲取時間戳,新增一個
t
的參數,值為 時間戳 md5("AndroidWear65cbcdeef24de25e5ed45338f06a1b37" + time_stamp)
為sn
由於有時間戳和簽名的存在,而且服務器會檢測時間戳,後續如果我們想測試一些東西,就需要過一段時間就要計算一下 簽名和時間戳,這樣非常麻煩,我們可以使用 burp
編寫插件,自動的修改 時間戳和 簽名,這樣可以大大的減少我們的工作量。
看看關鍵的源代碼
首先註冊一個 HttpListener
, 這樣 burp
的流量就會經過我們的擴展。
然後看看 processHttpMessage
對流經擴展的流量進行處理的邏輯。只處理 http
請求的數據,然後根據域名過濾處理的數據包,只對 wear.readboy.com
進行處理。接著對於數據包中的 t
參數和 sn
參數進行重新計算,並且修改 數據包中的對應值。
加載擴展,以後重放數據包,就不用管簽名的問題了。
TCP
對於 tcp
的協議可以通過搜索 端口號,ip
地址等進行定位,這裏搜索 端口號
(這裏是8866
, 可以在 wireshark
中查看),有一點要註意,程序中可能會用 16
進制或者 10
進制表示端口號為了,保險起見建議兩種表示方式都搜一下。
通過搜索 0x22a2
(8866
的 16
進制表示)找到兩個可能的位置。分別檢查發現 第二個沒啥用,在 jeb
中查找交叉引用都沒有,於是忽略之。然後看看第一個。
可以看到 jeb
把端口號都轉成了 10
進制數,這裏與服務器進行了連接,沒有什麽有用的信息。於是上下翻翻了這個類裏面的函數發現一個有意思的函數。
用於發送數據,裏面還用了另外一個類的方法,一個一個看,找到了加密方法。
就是簡單的 rc4
加密,然後在 base64
編碼。
為了測試的方便寫了個圖形化的解密軟件。
用 nc
測試之
正確。
總結
不要怕麻煩,一些東西盡早腳本化,自動化,減輕工作量。逆向分析,搜索關鍵字,定位關鍵代碼。
參考
http://www.vuln.cn/6100
http://www.freebuf.com/articles/terminal/106673.html
安卓脫殼&&協議分析&&burp輔助分析插件編寫