av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

利用BurpSuite劫持AndroidApp的流量(一)

在Android應(yīng)用程序進行安全評估時,通常會進行兩方面的評估:移動前端和后端API。為了檢查API的安全性,你將需要大量的文檔,例如Swagger或Postman文件,或者可以讓移動應(yīng)用程序為你生成所有流量,并簡單地通過代理(MitM攻擊)攔截和修改流量。

成都創(chuàng)新互聯(lián)長期為上1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為新豐企業(yè)提供專業(yè)的網(wǎng)站設(shè)計、網(wǎng)站建設(shè),新豐網(wǎng)站改版等技術(shù)服務(wù)。擁有十余年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

有時候設(shè)置代理確實很容易,在本文中,我將使用PortSwigger的Burp 套件代理,但是相同的步驟當然可以用于任何HTTP代理。在所有示例中,代理將托管在端口8080上的192.168.1.100。檢查從最基本的開始,越到后來越復(fù)雜。

設(shè)置設(shè)備

首先,我們需要確保設(shè)備上的所有設(shè)置都是正確的。無論你嘗試使用MitM的應(yīng)用程序如何,這些步驟均適用。

(1) 是否在設(shè)備上配置了代理?

很明顯,第一步是在設(shè)備上配置代理。使用者介面會因你的Android版本而有所不同,但找起來并不難。

(2) 完整性檢查

進入“設(shè)置”>“連接”>“Wi-Fi”,選擇你所使用Wi-Fi網(wǎng)絡(luò),點擊“高級”>“代理”>“手動”,然后輸入你的代理詳細信息:

  • 代理主機名:192.168.1.100;
  • 代理端口:8080;

Burp是否監(jiān)聽所有接口?

默認情況下,Burp只監(jiān)聽本地接口(127.0.0.1),但是由于我們想要從不同的設(shè)備連接,Burp需要監(jiān)聽已經(jīng)加入Wi-Fi網(wǎng)絡(luò)的特定接口。你可以監(jiān)聽所有接口,也可以監(jiān)聽特定接口(如果你知道需要哪個接口)。作為完整性檢查,我通常使用“監(jiān)聽所有接口”。請注意,Burp有一個API,它可以允許其他使用相同Wi-Fi網(wǎng)絡(luò)的人查詢你的代理并從中檢索信息。

(1) 完整性檢查

在你的主機上導(dǎo)航到http://192.168.1.100:8080,應(yīng)該會出現(xiàn)歡迎界面。

(2) 解決方案

在Burp中,進入“代理”>“選項”>在“代理監(jiān)聽器”窗口中單擊你的代理,然后在“綁定到地址”配置上選中“所有接口”。

你的設(shè)備可以連接到代理嗎?

有些網(wǎng)絡(luò)具有主機/客戶端隔離,不允許客戶端相互通信。在這種情況下,你的設(shè)備將不能連接到代理,因為路由器不允許。

(1) 完整性檢查

在該設(shè)備上打開瀏覽器,導(dǎo)航到http://192.168.1.100:8080。你應(yīng)該會看到Burp的歡迎屏幕。如果你在前面的檢查中已經(jīng)配置了代理,你還應(yīng)該能夠?qū)Ш降絟ttp://burp。

(2) 解決方案

這里有一些選擇:

a.設(shè)置一個禁用主機/客戶端隔離的自定義無線網(wǎng)絡(luò);

b.將代理托管在可訪問的設(shè)備上,例如AWS ec2實例;

c.執(zhí)行一個ARP欺騙攻擊,以欺騙移動設(shè)備,使其相信你是路由器;

d.使用adb反向代理通過USB的流量:

  • 將設(shè)備上的代理配置為在端口8080上轉(zhuǎn)到127.0.0.1;
  • 通過USB連接設(shè)備,并確保adb設(shè)備顯示你的設(shè)備;
  • 執(zhí)行adb reverse tcp:8080 tcp:8080,它將
  • 現(xiàn)在,你應(yīng)該能夠瀏覽到http://127.0.0.1:8080并看到Burp的歡迎屏幕;

你可以代理HTTP流量嗎?

HTTP流量的步驟通常比HTTPS流量容易得多,因此此處的快速狀態(tài)檢查可確保你的代理正確設(shè)置且可被設(shè)備訪問。

(1) 完整性檢查

導(dǎo)航到http://neverssl.com并確保你在Burp中看到了該請求。 Neverssl.com是一個不使用HSTS的網(wǎng)站,并且永遠不會將你發(fā)送到HTTPS版本,從而使其成為測試純文本流量的理想選擇。

(2) 解決方案

  • 把以前的檢查再檢查一遍,可能有些地方不對;
  • Burp的攔截已啟用,請求正在等待你的批準;

設(shè)備上是否已安裝Burp證書?

為了攔截HTTPS流量,需要在設(shè)備上安裝代理的證書。

(1) 完整性檢查

進入設(shè)置>安全性>受信任的憑據(jù)>用戶,并確保列出了你的證書。另外,你可以嘗試攔截來自設(shè)備瀏覽器的HTTPS流量。

(2) 解決方案

許多地方都有記錄,但是這里有一個簡短的摘要:

  • 在瀏覽器中導(dǎo)航到http://burp;
  • 點擊右上方的“CA證書”,將開始下載;
  • 使用adb或文件管理器將擴展名從der更改為crt:adb shell mv /sdcard/Download/cacert.der /sdcard/Download/cacert.crt;
  • 使用文件管理器導(dǎo)航到該文件并打開該文件以啟動安裝;

你的Burp證書是否已安裝為根證書?

Android最新版本的應(yīng)用程序默認不相信用戶證書,至于具體原因請點此https://blog.nviso.eu/2017/12/22/intercepting-https-traffic-from-apps-on-android-7-using-magisk-burp/。或者,你可以重新打包應(yīng)用程序,將相關(guān)的控件添加到network_security_policy.xml文件中,但是將根CA保存在系統(tǒng)CA存儲中可以避免其他步驟(如第三方框架)的麻煩,因此這是我的首選方法。

(1) 完整性檢查

進入設(shè)置>安全性>受信任的憑據(jù)>系統(tǒng),并確保列出了你的證書。

(2) 解決方案

為了將你的證書列為根證書,你的設(shè)備需要使用Magisk作為根目錄:

  • 正常安裝客戶端證書(請參閱以前的檢查);
  • 安裝MagiskTrustUser模塊;
  • 重新啟動設(shè)備以啟用模塊;
  • 再次重啟以觸發(fā)文件復(fù)制;

或者,你可以:

  • 確保證書的格式正確,然后將其復(fù)制/粘貼到/ system / etc / security / cacerts目錄中。但是,要使其正常工作,你的/ system分區(qū)需要是可寫的。一些根方法允許這樣做,但它非常復(fù)雜,而Magisk更好,獲得正確格式的證書也有點復(fù)雜。
  • 修改networkSecurityConfig,以將用戶證書包括為信任錨(請參見下文)。不過,將你的證書作為系統(tǒng)證書會更好,所以我很少采用這種方法。

你的Burp證書有適當?shù)挠行趩?

Google以及Android正在積極縮短leaf證書的最長接受期限,如果你的leaf證書的有效日期過長,Android / Chrome將不會接受它。

(1) 完整性檢查

使用瀏覽器連接到你的代理,并調(diào)查根CA和leaf證書的證書有效期。如果短于1年,那就好了。如果證書的有效期較長,我喜歡安全一點,創(chuàng)建一個新的CA,你也可以使用Android上最新版本的Chrome瀏覽器來驗證證書的有效期。如果有錯誤,Chrome將顯示以下錯誤:ERR_CERT_VALIDITY_TOO_LONG

(2) 解決方案

這里有兩種可能的解決方案:

  • 確保你安裝了最新版本的Burp,這會減少生成的leaf證書的有效期;
  • 創(chuàng)建自己的根CA,它的有效期僅為365天。這個根CA生成的證書也將小于365天。這是我的首選選項,因為證書可以與團隊成員共享,并且可以安裝在約定期間使用的所有設(shè)備上。

設(shè)置應(yīng)用程序

現(xiàn)在設(shè)備可以使用了,現(xiàn)在該看看應(yīng)用程序的詳細信息了。

應(yīng)用程序代理可以識別嗎?

許多應(yīng)用程序簡單地忽略了系統(tǒng)的代理設(shè)置,使用標準庫的應(yīng)用程序通常會使用系統(tǒng)代理設(shè)置,但是依賴于解釋語言的應(yīng)用程序(例如Xamarin和Unity)或本地編譯的應(yīng)用程序(例如Flutter)通常要求開發(fā)人員將代理支持明確地編程到應(yīng)用程序中。

(1) 完整性檢查

在運行應(yīng)用程序時,你應(yīng)該在Burp的Proxy選項卡中看到你的HTTPS數(shù)據(jù),或者應(yīng)該在儀表板面板上Burp的事件日志中看到HTTPS連接錯誤。由于整個設(shè)備都是代理的,你會看到許多來自使用SSL鎖定的應(yīng)用程序的被阻止的請求(例如谷歌Play),所以看看你是否能找到一個與應(yīng)用程序相關(guān)的域。如果你沒有看到任何相關(guān)的失敗連接, 則說明你的應(yīng)用程序很可能沒有代理。

作為額外的完整性檢查,你可以查看應(yīng)用程序是否使用了第三方框架。如果應(yīng)用程序是用Flutter編寫的,它肯定沒有代理意識,而如果它是用Xamarin或Unity編寫的,它很有可能會忽略系統(tǒng)的代理設(shè)置。

用apktool反編譯:apktool d myapp.apk;

通過已知的位置:

  • Flutter: myapp/lib/arm64-v8a/libflutter.so
  • Xamarin: myapp/unknown/assemblies/Mono.Android.dll
  • Unity: myapp/lib/arm64-v8a/libunity.so

(2) 解決方案

有幾件事可以嘗試:

  • 使用ProxyDroid(僅限r(nóng)oot用戶),盡管它是一個舊應(yīng)用,但仍然可以很好地運行。 ProxyDroid使用iptables來強制將流量重定向到你的代理;
  • 通過第二個無線接口設(shè)置自定義熱點,并使用iptables自己重定向流量。你可以在mitmproxy文檔中找到設(shè)置,它是另一個有用的HTTP代理,同樣的設(shè)置也適用于Burp。

在這兩種情況下,你都已從“代理意識”設(shè)置轉(zhuǎn)換為“透明代理”設(shè)置。你必須做兩件事:

  • 在設(shè)備上禁用代理。如果你不這樣做,那么Burp將同時收到代理請求和透明請求,二者互不兼容;
  • 配置Burp以支持透明代理通過代理>選項>活動代理>編輯>請求處理>支持不可見代理;

再次執(zhí)行完整性檢查,現(xiàn)在希望能在Burp的事件日志中看到SSL錯誤。

在下一篇文章中,我還會詳細介紹“應(yīng)用程序是否使用了自定義端口?”,“應(yīng)用程序是否使用SSL鎖定?”等問題。

本文翻譯自:https://blog.nviso.eu/2020/11/19/proxying-android-app-traffic-common-issues-checklist/


網(wǎng)頁題目:利用BurpSuite劫持AndroidApp的流量(一)
分享地址:http://uogjgqi.cn/article/dhdjcsg.html
掃二維碼與項目經(jīng)理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流