Android7.0用什么工具進(jìn)行抓包

本篇內(nèi)容主要講解“Android7.0用什么工具進(jìn)行抓包”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Android7.0用什么工具進(jìn)行抓包”吧!

我們提供的服務(wù)有:成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、察雅ssl等。為千余家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的察雅網(wǎng)站制作公司

前言

最近在對(duì)一個(gè)app進(jìn)行測(cè)試的時(shí)候,嘗試抓取數(shù)據(jù)包,發(fā)現(xiàn)以前的使用方法失效了,原因是隨著安卓版本的提高,對(duì)證書的限制越發(fā)嚴(yán)格,而我身邊的老機(jī)子放在學(xué),不在身邊,沒得辦法,只好研究一下怎么繞過這種限制。

經(jīng)過一方查找,終于發(fā)現(xiàn)了一個(gè)相對(duì)比較簡(jiǎn)單的辦法,這里就開一篇文章,記錄一下。

過程

首先下載所需要的工具:

  • Charles——https://www.charlesproxy.com/download/

  • Charles-Crack(有能力的同學(xué)請(qǐng)支持正版)——https://github.com/8enet/Charles-Crack

  • VirtualXposed——https://github.com/android-hacker/VirtualXposed/releases

  • TrustMeAlready——https://github.com/ViRb3/TrustMeAlready/releases

PC端

PC端下載并安裝好之后,運(yùn)行Charles。

依次點(diǎn)擊菜單欄的:Proxy→Proxy Settings,并按如下進(jìn)行勾選。Android7.0用什么工具進(jìn)行抓包

接著點(diǎn)擊菜單欄:Proxy→SSL Proxying Settings

按照下圖進(jìn)行配置:Android7.0用什么工具進(jìn)行抓包

若事先確定要抓取的Host和Port信息,可自行進(jìn)行更改。

接著點(diǎn)擊Proxy→Windows Proxy (注:不同版本名稱不同),將不再抓取本地流量。

然后點(diǎn)擊Help→SSL Proxying→Install Charles Root Certificate on a Mobile Device or Remote Browser,將證書掛載到chls.pro/ssl這個(gè)地址上。

手機(jī)端用瀏覽器打開上述地址,將證書下載到本地。這步也可以選擇點(diǎn)擊菜單欄:Help→SSL Proxying→Save Charles Root Certificate...,來將證書下載到PC,通過數(shù)據(jù)線、QQ等方法傳到手機(jī)。

手機(jī)端

首先需要把手機(jī)與電腦連接到同一個(gè)網(wǎng)絡(luò)內(nèi)。

打開WLAN,選擇對(duì)應(yīng)的WIFI,進(jìn)行代理配置。如下圖所示:Android7.0用什么工具進(jìn)行抓包

主機(jī)名為PC端的內(nèi)網(wǎng)IP,端口為配置Charles時(shí)Proxy Settings配置中的Http Proxy里的Port內(nèi)容。

PC端內(nèi)容不清楚的同學(xué)可以打開終端運(yùn)行如下命令:

  • Windows: ipconfig

  • Linux: ifconfig

  • Mac: ifconfig

成功代理上之后,手機(jī)端的流量都會(huì)經(jīng)過PC端的Charles。如果是第一次配置,則Charles會(huì)彈出一個(gè)窗口,提示有新的連接,點(diǎn)擊Allow按鈕。

其次需要將電腦端Charles的證書給安裝上。

若在PC端選擇的是Install Charles Root Certificate on a Mobile Device or Remote Browse,則先需要通過手機(jī)瀏覽器訪問chls.pro/ssl這個(gè)網(wǎng)址獲得證書文件。

這里我使用的手機(jī)為小米8 Lite,不同的手機(jī)品牌/型號(hào)安裝證書的方法可能有所不同,具體可通過搜索引擎來獲得安裝的方法。

依次點(diǎn)擊:設(shè)置→更多設(shè)置→系統(tǒng)安全→加密與憑據(jù)→從SD卡安裝,接著在文件瀏覽器中選擇你下載好的證書。

然后給證書憑據(jù)起個(gè)名字,可隨意填寫,憑據(jù)用途選擇VPN和應(yīng)用。

安裝完畢后依次點(diǎn)擊:信任的憑證→用戶,即可查看到剛剛添加進(jìn)來的Charles證書——XK72 Ltd。

以往我們只需要執(zhí)行到這里,便可以成功抓取到數(shù)據(jù)包。不過由于Android的版本更新,對(duì)用戶自身添加的證書進(jìn)行了限制,導(dǎo)致我們直接地?zé)o法抓取的HTTPS數(shù)據(jù)包,在Charles里會(huì)發(fā)現(xiàn)HTTPS的流量都顯示Unknown。Android7.0用什么工具進(jìn)行抓包

這里我選擇的辦法是用VirtualXposed工具進(jìn)行繞過,如果你不想使用這個(gè)方法,也可以考慮通過將手機(jī)進(jìn)行Root處理,并將Charles的證書添加到系統(tǒng)級(jí)的證書中,不過這并不在本文討論的范疇。

手機(jī)下載好VirtualXposed和TrustMeAlready兩個(gè)apk文件,安裝VirtualXposed.apk之后運(yùn)行。

在VirtualXposed中,先進(jìn)入設(shè)置頁面,點(diǎn)擊添加應(yīng)用,選擇你想抓取流量的應(yīng)用,以及TrustMeAlready.apk文件進(jìn)行安裝。注意:由于TrustMeAlready.apk未安裝,需要點(diǎn)擊+號(hào)按鈕,在對(duì)應(yīng)的目錄選擇apk文件即可。

然后再回到設(shè)置頁面,點(diǎn)擊模塊管理,可以看到我們剛剛添加的TrustMeAlready便在其中,點(diǎn)擊右邊的框框進(jìn)行勾選,接著回到設(shè)置頁面,在最下方點(diǎn)擊重啟、確定。

到這里我們便已經(jīng)完成了全部的操作,之后你可以在VirtualXposed框架內(nèi)打開任意的app都可以成功取到HTTPS流量。Android7.0用什么工具進(jìn)行抓包

關(guān)于Charles的使用方法,本文不再贅述,網(wǎng)絡(luò)上已有許多教程,稍微花點(diǎn)時(shí)間搜索即可。

分析

Android7.0+為何無法直接截取HTTPS流量

在Android開發(fā)者平臺(tái)文檔,我們可以查到這么一段話:

默認(rèn)情況下,來自所有應(yīng)用的安全連接(使用 TLS 和 HTTPS 之類的協(xié)議)均信任預(yù)裝的系統(tǒng) CA,而面向 Android 6.0(API 級(jí)別 23)及更低版本的應(yīng)用默認(rèn)情況下還會(huì)信任用戶添加的 CA 存儲(chǔ)區(qū)。應(yīng)用可以使用 base-config(應(yīng)用范圍的自定義)或 domain-config(網(wǎng)域范圍的自定義)自定義自己的連接。

自定義可信 CA|Android Developer

以上說明了安卓6.0以上的版本,在默認(rèn)情況下應(yīng)用是不會(huì)相信用戶添加的CA證書,導(dǎo)致我們使用老方法無法完整地獲取到應(yīng)用發(fā)出的HTTPS數(shù)據(jù)。

VirtualXposed+TrustMeAlready實(shí)現(xiàn)原理

簡(jiǎn)單的說,VXP相當(dāng)于手機(jī)上的虛擬機(jī),在手機(jī)原有的系統(tǒng)上創(chuàng)建一塊虛擬空間,類似沙盒般的效果,而通過TrustMeAlready插件,便可HOOK到 APK 中所有用于校驗(yàn) SSL 證書的 API (詳情可以點(diǎn)擊參考里的《JustTrustMe原理分析》),從而繞過證書校驗(yàn),故此達(dá)到https抓包的效果。

一、什么是Virtual Xposed?

Xposed

眾所周知Xposed是來自國外XDA論壇的rovo89開發(fā)的一款開源的安卓系統(tǒng)框架。 它是一款特殊的安卓App,其主要功能是提供一個(gè)新的應(yīng)用平臺(tái),玩家們安裝Xposed框架后,就能夠通過Xposed框架搭建起的平臺(tái)安裝更多系統(tǒng)級(jí)的應(yīng)用,實(shí)現(xiàn)諸多神奇的功能。

Xposed框架的原理是修改系統(tǒng)文件,替換了/system/bin/app_process可執(zhí)行文件,在啟動(dòng)Zygote時(shí)加載額外的jar文件(/data/data/de.robv.android.xposed.installer/bin/XposedBridge.jar),并執(zhí)行一些初始化操作(執(zhí)行XposedBridge的main方法)。然后我們就可以在這個(gè)Zygote上下文中進(jìn)行某些hook操作。

Xposed真正強(qiáng)大的是它可以hook調(diào)用的方法.當(dāng)你反編譯修改apk時(shí),你可以在里面插入xposed的命令,于是你就可以在方法調(diào)用前后注入自己的代碼. Github開源地址: https://github.com/rovo89/Xposed 由于Xposed最大的弊端在于設(shè)備需要root,并且編寫插件模塊后需要重啟手機(jī)(當(dāng)然也有辦法可以不用重啟),所以有了VirtualApp。

VirtualApp

VirtualApp是一個(gè)App虛擬化引擎(簡(jiǎn)稱VA)。

VirtualApp在你的App內(nèi)創(chuàng)建一個(gè)虛擬空間(構(gòu)造了一個(gè)虛擬的systemserver),你可以在虛擬空間內(nèi)任意的安裝、啟動(dòng)和卸載APK,這一切都與外部隔離,如同一個(gè)沙盒。

運(yùn)行在VA中的APK無需在外部安裝,即VA支持免安裝運(yùn)行APK。

熟悉android系統(tǒng)開機(jī)流程的應(yīng)該知道各services是由system server啟動(dòng)一系列的系統(tǒng)核心服務(wù)(AMS,WMS,PMS等等)ViratualApp就是構(gòu)建了一個(gè)虛擬system_process進(jìn)程,這里面也有一系列的核心服務(wù)。

VirtualApp主要技術(shù)用到了反射和動(dòng)態(tài)代理來實(shí)現(xiàn)的

Github開源地址:https://github.com/asLody/VirtualApp

VirtualXposed

VirtualXposed就是基于VirtualApp和epic 在非ROOT環(huán)境下運(yùn)行Xposed模塊的實(shí)現(xiàn)(支持5.0~8.1)。

Github開源地址:https://github.com/android-hacker/VirtualXposed 來源:http://jackzhang.info/2018/04/09/VirtualXposed/

HTTPS抓包為何需要安裝抓包工具的CA證書

為了弄清楚這個(gè)問題,我們首先得清楚SSL/TLS加密的原理。

通常來說,SSL與TLS都是非對(duì)稱加密的,有一個(gè)公鑰與私鑰。公鑰是公開的,私鑰是私密的,存在于服務(wù)端。服務(wù)器返回的內(nèi)容會(huì)被私鑰加密,客戶端需要使用公鑰進(jìn)行解密。同樣的,用戶端的數(shù)據(jù)便有公鑰加密,私鑰來解密。

而我們都知道,使用了SSL之后我們便可以保護(hù)我們的站點(diǎn)免受中間人攻擊。那又何為中間人攻擊呢?

舉個(gè)例子,用戶A要使用電腦訪問網(wǎng)站http://example.com,而這臺(tái)電腦已被攻擊者B攻陷,那么攻擊者B可通過修改A電腦上的hosts文件,將example.com的解析指向B自己的服務(wù)器,這樣A用戶就在”不知情“的情況下中了招。而如果該網(wǎng)站使用了SSL/TLS加密時(shí),用戶A在訪問https://example.com的時(shí)候,需要向服務(wù)器請(qǐng)求公鑰的內(nèi)容,又因?yàn)楣€是放在CA證書里的,且CA證書通常是由相關(guān)的權(quán)威CA機(jī)構(gòu)(權(quán)威性由微軟等操作系統(tǒng)巨頭決定)才能發(fā)布,類似我們的民政局才能發(fā)布shenfenzheng。這使得攻擊者無法偽造CA證書,因?yàn)榭蛻舳嗽谑盏紺A證書之后會(huì)根據(jù)不同的權(quán)威CA機(jī)構(gòu)進(jìn)行相應(yīng)的驗(yàn)證,而若頒發(fā)該證書的機(jī)構(gòu)不夠權(quán)威(這使得權(quán)威機(jī)構(gòu)也不會(huì)隨意頒發(fā)CA證書,以免自身的權(quán)威性被取消),是不會(huì)被系統(tǒng)所信任的。這一連串的操作,使得使用了SSL/TLS的網(wǎng)站可以不受中間人攻擊的影響。

OK回歸正題,那這HTTPS抓包與中間人攻擊有何關(guān)系呢?其實(shí)這兩者的原理都是一樣的,只不過攻擊者的角色變成了抓包工具。

So,這次的問題就變成了中間人攻擊如何在HTTPS通信中生效?

我們注意到,中間人攻擊的最大難點(diǎn)就在于CA證書的權(quán)威性,而我們?cè)跊]有域名解析權(quán)的情況下是不能去向權(quán)威CA機(jī)構(gòu)申請(qǐng)證書的。那么既然如此,為何我們不考慮自己“開”一家權(quán)威機(jī)構(gòu)呢,這樣我們生成的證書不就會(huì)被信任了嘛。

這時(shí)候,就得需要安裝我們抓包工具的CA證書了,這個(gè)證書與域名所有者向權(quán)威機(jī)構(gòu)申請(qǐng)的證書不同,他是根證書。

因?yàn)橛蛎腃A證書的驗(yàn)證過程也是非對(duì)稱加密驗(yàn)證,也就說,CA證書的驗(yàn)證是由根證書里的公鑰來解密驗(yàn)證的。通常操作系統(tǒng)里已經(jīng)默認(rèn)信任了一批權(quán)威機(jī)構(gòu)的根證書。

所以,當(dāng)我們把我們自己的根證書添加到操作系統(tǒng)中時(shí),相當(dāng)于我們自己“開”了一家權(quán)威CA機(jī)構(gòu),這樣便可以解決了之前的難題。

借一張網(wǎng)圖:

Android7.0用什么工具進(jìn)行抓包

到此,相信大家對(duì)“Android7.0用什么工具進(jìn)行抓包”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

本文標(biāo)題:Android7.0用什么工具進(jìn)行抓包
分享鏈接:http://muchs.cn/article40/johiho.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、靜態(tài)網(wǎng)站、網(wǎng)站設(shè)計(jì)、品牌網(wǎng)站設(shè)計(jì)虛擬主機(jī)、品牌網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)