Android安全技術揭秘與防範——APK動態分析
1 四大權限組件權限和安全檢測,特別是廣播容易被惡意發送,可以采用應用內部廣播LocalBroadcastManager來規避
2 存儲安全檢測,內存存儲不設置全局可讀可寫,不將隱私數據明文保存在外部存儲。
3 通信安全,采用HTTPS+證書+強加密傳輸來保證安全
調試安全
關閉debuggable
項目發布前需要在application節點或者release配置中設置debuggable屬性為true,否則會顯示出Log並且可被外界調試。
發布之前最好進行測試,使用aapt工具:
aapt list -v -a myfile.apk
這個命令將會打印和apk相關的所有詳細信息,找到“android:debuggable",它的值分為:
0xffffffff: debugabble true
例如打印結果:
android ebuggable(0x0101000f)=(type 0x12)0x0
說明Release Build已經關閉了debuggable
註入Log調試
為了動態逆向分析其他APP,可以修改smali,加入invoke語句調試
性能分析工具
TraceView
函數性能分析
代碼前後加入語句(可以註入其他應用smail分析)
Debug.startMethodTracing("loveworld");
Debug.stopMethodTracing();
在sd卡根目錄可以獲得圖形化表,展示了方法調用的時間和CPU消耗等信息
而DDMS中的Method Profiling則可以手動控制時間段內的性能變化
Android網絡抓包工具——Fiddler
Fiddler 支持瀏覽器和智能設備抓包
實質是中間使用了一個Web代理服務器,所以可以中途攔截請求和修改請求,甚至可以改變本地返回結果
Android抓包:要求設備與PC同一局域網,設備設置為本地地址,PC修改抓包配置即可。
Request斷點:選擇Before Requests-disabled,可以攔截住請求並修改,包括修改請求地址和所有參數
AutoResponse:重新設定返回結果,例如將百度網頁的圖標替換為本地圖標。
註意:非正常退出可能會影響網頁正常瀏覽,重啟Fiddler可修復
無源碼應用調試工具——AndBug
環境:android開發環境、bottle庫、python
AndBug可以在不擁有項目源碼的情況下hookDalvik方法,進行斷點。
運用範例:破解一個未知源碼的應用內部參數加密方式
1 通過dumpsys命令可以獲得包名、類名、方法名
2 猜測加密方法,設置方法斷點,跳到斷點將打印出線程參數信息
3 可以推測出簡單加密算法規則,例如 字符串+ID+密碼的總和來MD5
IDA pro 動態調試
可以調試原生so庫,獲取設備root權限後遠程運行android_server,通過端口轉發數據到PC進行調試
需要深入理解硬件、虛擬機、C、C++、linux
WebView安全問題
遠程代碼執行漏洞
android 4.2以前網頁可以通過addJavaScriptInterface方法執行本地命令
後加入@JavaScriptInterface已修復
UXSS漏洞
android 4.4之前的Webkit出現的瀏覽器同源策略漏洞,危害極大,可竊取用戶隱私,之後轉chromium內核解決
二位
二維碼釣魚
通過生成虛假二維碼替換應用二維碼竊取資料,人們一般無法分辨二維碼的區別,應用會跳轉到相應釣魚網址
SQL註入***
把SQL命令插入Web表單或者請求字符串,欺騙服務器執行惡意SQL
例如巧妙替換登錄查詢語句達到強行登陸賬號
Android安全技術揭秘與防範——APK動態分析