常用抓包工具
- Charles
- Fiddler
TCP/IP分層
TCP/IP 的分層共有四層:應(yīng)用層、傳輸層授账、網(wǎng)絡(luò)層枯跑、數(shù)據(jù)鏈路層
- 應(yīng)用層:向用戶提供應(yīng)用服務(wù)時(shí)的通訊活動(dòng)(ftp、dns白热、http)
- 傳輸層:網(wǎng)絡(luò)連接中兩臺(tái)計(jì)算機(jī)的數(shù)據(jù)傳輸(tcp全肮、udp)
- 網(wǎng)絡(luò)層:處理網(wǎng)絡(luò)上流動(dòng)的數(shù)據(jù)包,通過(guò)怎樣的傳輸路徑把數(shù)據(jù)包傳送給對(duì)方(ip)
- 數(shù)據(jù)鏈路層:與硬件相關(guān)的網(wǎng)卡棘捣,設(shè)備驅(qū)動(dòng)等等
HTTP/HTTPS
- HTTP
HyperText Transfer Protocol(超文本傳輸協(xié)議)辜腺,用于在Web瀏覽器和網(wǎng)站服務(wù)器之間傳遞信息休建,在TCP/IP中處于應(yīng)用層。
1. 通信使用銘文评疗,內(nèi)容可能被竊聽
2. 不驗(yàn)證通信方的身份测砂,因此有可能遭遇偽裝
3. 無(wú)法證明報(bào)文的完整性,所以有坑呢遭到篡改
- HTTPS
HTTPS中的S表示SSL或者TLS百匆,就是在原HTTP的基礎(chǔ)上加上一層用于數(shù)據(jù)加密砌些、解密、身份認(rèn)證的安全層
HTTP + 加密 + 認(rèn)證 + 完整性保護(hù) = HTTPS
HTTPS單向認(rèn)證
https單向認(rèn)證
HTTPS雙向認(rèn)證
https雙向認(rèn)證
Charles抓包原理
charles抓包原理
防抓包策略
1.檢測(cè)代理
- 檢測(cè)是否使用網(wǎng)絡(luò)代理
- 將網(wǎng)絡(luò)庫(kù)(如okhttp庫(kù))設(shè)置為無(wú)代理模式加匈,不走系統(tǒng)代理
//HttpURLConnection:
URL url = new URL(urlStr);
urlCOnnection = (HttpURLConnection)url.openConnection(Proxy.NO_PROXY);
//OkHttp:
OkHttpClient client =
new OkHttpClient().newBuilder().proxy(Proxy.NO_PROXY).build();
- 攻防實(shí)例:防御破解(js hook腳本)
try{
var URL = Java.use("java.net.URL");
URL.openConnection.overload('java.net.Proxy').implementation = function(arg1){
return this.openConnection();
}
}catch(e){
console.log(""+e);
}
try{
var Builder = Java.use("okhttp3.OkHttpClient$Builder");
var myBuilder = Builder.$new();
Builder.proxy.overload('java.net.Proxy').implementation = function(arg1){
return myBuilder;
}
}catch(e){
console.log(""+e);
}
2.證書固定
- SSL-Pinning
- 證書鎖定(Certificate Pinning)
在客戶端代碼內(nèi)置僅接受指定域名的證書存璃,而不接受操作系統(tǒng)或?yàn)g覽器內(nèi)置的CA根證書對(duì)應(yīng)的任何證書。(缺陷:證書有效期問(wèn)題)- 公鑰鎖定(Public Key Pinning)
提取證書中的公鑰并內(nèi)置到客戶端中雕拼,通過(guò)與服務(wù)器對(duì)比公鑰值來(lái)驗(yàn)證連接的正確性
- 攻防實(shí)例:突破SSL-Pinning
- Xposed框架
Android上應(yīng)用廣泛的HOOK框架纵东,基于Xposed框架只做的外掛模塊可以hook任意應(yīng)用層的java函數(shù),修改函數(shù)實(shí)現(xiàn)- justTrustMe插件
justTrustMe是一個(gè)用來(lái)禁用啥寇、繞過(guò)SSL證書檢查的基于Xposed的模塊偎球。將Android系統(tǒng)中所有用于校驗(yàn)SSL證書的API都進(jìn)行了Hook,從而繞過(guò)證書檢查
3.總結(jié)
放抓包策略就是對(duì)抗hook辑甜,常見方法
- 檢測(cè)hook : 檢測(cè)Xposed衰絮、Frida、Substrate等Hook框架
- 使用socket連接 : 使用Socket走TCP/UDP磷醋,防止被應(yīng)用層抓包
- 傳輸數(shù)據(jù)加密 :協(xié)議字段加密傳輸猫牡,并隱藏秘鑰,應(yīng)用層加固
- native層傳輸 : 將網(wǎng)絡(luò)傳輸邏輯寫到j(luò)ni層實(shí)現(xiàn)邓线,提高反編譯門檻