自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

利用 Burp Suite 劫持 Android App 的流量(一)

安全 網站安全
在本文中,我將使用PortSwigger的Burp 套件代理,但是相同的步驟當然可以用于任何HTTP代理。

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

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

[[384502]]

設置設備

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

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

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

(2) 完整性檢查

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

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

利用 Burp Suite 劫持 Android App 的流量(一)

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

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

(1) 完整性檢查

在你的主機上導航到http://192.168.1.100:8080,應該會出現歡迎界面。

(2) 解決方案

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

利用 Burp Suite 劫持 Android App 的流量(一)

你的設備可以連接到代理嗎?

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

(1) 完整性檢查

在該設備上打開瀏覽器,導航到http://192.168.1.100:8080。你應該會看到Burp的歡迎屏幕。如果你在前面的檢查中已經配置了代理,你還應該能夠導航到http://burp。

(2) 解決方案

這里有一些選擇:

a.設置一個禁用主機/客戶端隔離的自定義無線網絡;

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

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

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

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

你可以代理HTTP流量嗎?

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

(1) 完整性檢查

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

(2) 解決方案

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

設備上是否已安裝Burp證書?

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

(1) 完整性檢查

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

(2) 解決方案

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

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

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

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

(1) 完整性檢查

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

(2) 解決方案

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

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

或者,你可以:

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

你的Burp證書有適當的有效期嗎?

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

(1) 完整性檢查

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

(2) 解決方案

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

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

設置應用程序

現在設備可以使用了,現在該看看應用程序的詳細信息了。

應用程序代理可以識別嗎?

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

(1) 完整性檢查

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

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

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

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

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

利用 Burp Suite 劫持 Android App 的流量(一)

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

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

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

 

責任編輯:趙寧寧 來源: 嘶吼網
相關推薦

2015-06-16 13:37:03

2017-01-23 10:10:09

2020-10-23 07:36:19

安全工具OWASP ZAPweb安全

2010-12-15 17:22:59

2016-03-16 09:47:55

2016-12-13 08:45:48

2014-04-16 15:56:17

2021-12-09 09:51:30

插件安全工具lazyCSRF

2014-06-09 17:07:44

2013-07-27 20:08:24

2016-08-18 15:45:35

2012-12-25 13:45:37

2017-03-27 16:08:58

2014-06-27 09:25:24

2017-02-14 21:15:48

2021-03-29 12:01:51

流量劫持瀏覽器漏洞

2021-02-09 00:43:40

瀏覽器擴展劫持網絡攻擊

2009-02-11 09:41:00

寬帶流量vnStat

2012-02-17 17:07:30

Android安全Activity劫持

2015-04-03 09:35:57

點贊
收藏

51CTO技術棧公眾號