Android安全/應用逆向--28--使用IDA動態除錯.so檔案
7-5、使用IDA動態除錯.so檔案
一、應用體系架構:動態分析分析什麼?
程式碼安全分析。有無被篡改,盜版等風險,是否容易被反編譯,重打包。
元件安全分析。四大元件和通訊Intent分析,以及他們許可權使用不當帶來的問題。
儲存安全分析。對儲存的私有檔案,證書檔案,資料庫檔案進行安全驗證分析,尤其是明文資料。
通訊安全分析。通訊傳輸中的加密等問題。
漏洞分析。有無安全漏洞以及漏洞危害。
系統安全分析。有無系統缺陷。
工具:IDA(32位/非常重要)。以下步驟基本可以繞過反除錯了,反除錯在後邊有說明
一、架設除錯橋
1、上傳IDA除錯伺服器地址:
G:\xxxxxx\IDAPro70\dbgsrv\android_server //保證IDA和裝置的正常通訊
2、cmd進入到該目錄下: G:\xxxxxxx\IDAPro70\dbgsrv\
3、匯入IDA除錯伺服器:adb push android_server /data/local/tmp
4、adb shell
5、cd到/data/local/tmp下:chmod 777 android_server
6、./android_server(如果失敗重啟手機)
二、部署安卓
1、埠轉發:
adb forward tcp:23946 tcp:23946
2、檢視23946埠的使用情況:
netstat -ano | findstr 23946 //實際中不用檢視,成功轉發了即可
3、adb shell下執行:
am start -D -n com.e.te/com.e.te.MainActivity(包名/啟動頁面) //啟動頁面不一定是這樣
4、會彈出框
5、抓包進行資訊蒐集,包括關鍵URL、關鍵欄位等。
三、部署IDA(此時開啟IDA就行,點選“go”,不要新增任何東西)
建議開啟兩個IDA介面,一個用於動態除錯,另一個使用者靜態查詢
1、IDA-debugger-Attach-remote ARMlinux/Android debugger
2、填入IP(localhost/127.0.0.1)、密碼沒有不用填,儲存預設網路設定
3、高階設定:左邊345,右邊:235,下面:3。儲存設定
4、點選要除錯的包名選入
5、此時相關的應用程式將顯示紅色蜘蛛
四、開始除錯
1、在IDA中點選執行(此步驟非常重要) //也可以先執行第二步
2、輸入命令:
jdb -connect com.sun.jdi.SocketAttach:port=8700,hostname=localhost
//新建命令執行
3、點選debugger-debugger windows-module list
,並在視窗找到要除錯的程式
4、在IDA中暫停除錯按鈕,暫停當前除錯。F9重新開始除錯
5、在找到的要除錯的程式下,繼續尋找我們需要下斷點的函式處。此時so已經載入進來,先獲取JNI_OnLoad函式的絕對地址。Ctrl+s即可找到基地址,靜態搜尋關鍵字即可得到先相對地址,相加即可得到絕對地址,然後跳轉到絕對地址即可。注意下斷點
6、在彙編程式碼處,按下alt+T,搜尋斷點函式名
7、下斷點,執行IDA,如果在斷點處停止,說明已經可以進行斷點動態除錯
8、重點在libc.so中下斷點,因為該檔案是C層中最基本的函式庫,libc中封裝了io、檔案、socket等系統基本呼叫。也可以是linker.so或者libdvm.so中下斷點
五、除錯WebViewApp
1、chrome外掛除錯,類似於firebug。按F12可以召喚該工具
2、WebView已知漏洞
A、遠端程式碼執行漏洞。
是webview中使用了javascriptInterface造成的,讓遠端網頁執行本地命令。
B、UXSS漏洞。
通用型XSS是一種利用瀏覽器或瀏覽器擴充套件漏洞來製造產生XSS的條件並執行程式碼的一種攻擊型別,導致瀏覽器全域性遠端執行命令,繞過同源策略,竊取使用者資料,劫持使用者等危害。
3、網路釣魚(涉及二維碼安全)。SQL注入攻擊。