<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    太干了,Android 抓包姿勢總結!

    VSole2021-09-24 08:30:00

    App 服務端測試基本就是 Web 安全那一套,但如果抓不到服務器的包?哎~就很難受,空報告?

    本篇文章總結了幾個比較好用點的 Android 端抓包的姿勢,當然遠不止這幾種。

    0x01 知識點總結

    因為圖比較多,可能翻起來有點麻煩,所以先在這做個簡單的知識點總結

    • 繞過 root 檢測
    • 繞過 SSL Pinning
    • BurpSuite 抓包
    • Fiddler+BurpSuite 聯動
    • Charles+Burp 聯動
    • Proxifier+ 夜神模擬器 + BurpSuite 聯動
    • Drony+BurpSuite 聯動
    • 繞過雙向驗證
    • 小程序抓包

    0x02 繞過 root 檢測

    一些插件需要在開啟 root 的情況下使用,但部分安全措施做的較好的 app 又會對 root 環境做檢測,所以嘗試繞過 root 檢測。

    模擬器和測試手機的安卓版本建議在 7 以下,生態較好。

    比較常見的是利用 xposed/VitualXposed 的插件來繞過(模擬器中的應用商店也可以安裝 xposed 框架)

    比如 xposed hide 插件

    Magisk 環境下也可以安裝 EdXposed 框架

    Magisk 面具框架自帶 MagiskHide 功能,可以開啟來繞過 root 檢測

    同時也需要在具體抓包的 App 中設置 Hide 屬性

    0x03 BurpSuite 抓包

    BurpSuite 就不多介紹了,先安裝證書

    瀏覽器掛上 BurpSuite 代理后,訪問 http://burpsuite,下載證書

    并把 der、crt 等格式證書轉換成 pem 格式

    x509 -inform der -in test.cer -out test.pem (記得添加路徑)

    之后再安裝到手機當中

    設置>安全>從 SD 卡安裝證書

    并為證書命名

    查看信任的憑據,在用戶一欄中查看已安裝的證書

    成功使用 BurpSuite 抓取流量

    Magisk 有個插件叫做 Move Certificates ,該插件可以一鍵將所有用戶證書自動轉換為系統區證書

    使用方法:所有證書安裝為用戶證書后,安裝此插件,并重啟。

    后續各軟件與 BurpSuite 聯動的時候,都需要注意各軟件之間的 IP 及端口保持一致。

    0x04 繞過SSL Pinning

    4.1 什么是 SSL Pinning:

    開發者預先把證書相關信息預置到 App 中再打包,這樣在 https 通訊過程中 App 本地可以與服務器返回的 CA 證書可以做合法性校驗,如果發現不一致,那么可能就是由于中間人攻擊(比如 Fiddler/Charles 抓包工具),App 客戶端可以終止 https 鏈接。而在新版本的系統規則中,應用只信任系統默認預置的 CA 證書,如果是第三方安裝的證書(比如 Fiddler 安裝的)則不會信任

    4.2 一句話總結 SSL Pinning 原理:

    將服務端證書相關信息打包在客戶端里,在進行通信時,對比客戶端和服務端證書是否一致。

    4.3 繞過 SSL Pinning 驗證

    4.3.1 Xposed插件

    下載 JustTrustMe 安裝包并安裝到手機里,在 Xposted 中激活并重啟手機,就可以抓取手機中的流量。

    SSLUnpinning 2.0 插件和 JustMePlush 插件當然也可以

    4.3.2 使用 Objection 繞過

    Objection 是一個基于 Frida 開發的命令行工具,它可以很方便的 Hook Java 函數和類,并輸出參數,調用棧,返回值。

    因為 Objection 是基于 Frida 的所以必須先安裝 Frida 然后才能安裝 Objection

    數據線連接手機后打開調試模式(PC 端已有 adb 環境的前提下)

    先用 adb 命令查看有幾臺設備

    把下載好的 frida-server 拷貝到手機中

    進入到手機中,并提升為 root 權限,啟動 frida-server 腳本

    frida-ps -U命令查看,下圖所示即為正常啟動

    使用adb shell pm list packages查看手機中的包名及數量

    需要關閉手機上 Magisk 的 magisk hide 功能(不關閉會有沖突)

    使用命令:objection —gadget 包名 explore

    此時 Objection 將注入到目標應用程序上

    關閉 app 的 SSL 校驗:android sslpinning disable

    上圖所示即為關閉成功,下圖所示為成功抓取流量

    0x05 Fiddler+BurpSuite 聯動

    Fiddler 是一款非常專業的 http 協議調試代理工具,這款軟件支持眾多的 http 調試任務,包括通過捕獲瀏覽器的會話以及使用它捕獲 HTTPS 會話等

    利用 Fiddler 與 BurpSuite 聯動連抓取流量

    首先對 Fiddler 進行設置,在 HTTPS →解密 HTTPS 流量→操作→根證書導出到桌面

    接著將 FiddlerRoot.pem 安裝到手機中

    可以看到,Fiddler 的根證書安裝好了

    接著需要信任根證書

    然后在連接→ Fiddler 在端口上偵聽,默認為 8888 即可

    接著在手機中,把網絡的 IP 設置為 10.170.0.246,端口設置為 8888

    在 Fiddler 的網關→手動代理配置,設置代理為 10.170.2.246:8080

    BurpSuite 的 IP 及端口號與 Fiddler 保持一致

    成功接收到轉發的流量

    0x06 Charles+BurpSuite 聯動

    Charles 是常用的網絡封包截取工具,Charles 通過將自己設置成系統的網絡訪問代理服務器,使得所有的網絡訪問請求都通過它來完成,從而實現了網絡封包的截取和分析。

    可以利用 Charles 轉發流量,配合 BurpSuite 做聯動抓包使用。

    將 charles 證書保存到本地,選擇 help→SSL Proxying→Save Charles Certificate

    設置>安全>從 SD 卡安裝證書

    安裝成功后如圖所示

    默認 charles 只可以抓取 http 協議的包,https 的更安全,需要如下配置:

    菜單欄 Proxy–>SSL Proxying Setting–>選擇 SSL Proxying——>點擊 add

    在彈框中 port 里填寫 443(443 代表通用 https 端口號), host 中的*代表抓取所有地址的包

    第一次設置成功代理后,隨便打開一個需要網絡的應用,PC 端會自動彈出以下提示,選擇 allow 允許 Charles 代理

    需要和 BurpSuite 聯動,需要額外添加代理

    菜單欄 Proxy–>External Proxy Settings–>選擇 Use external proxy servers

    抓取 http 包則設置 Web Proxy(HTTP)選項(IP 及端口與 BurpSuite 保持一致)

    抓取 https 包則設置 Secure Web Proxy(HTTPS)選項(IP 及端口與 BurpSuite 保持一致)

    成功接收到轉發流量

    0x07 Proxifier+ 夜神模擬器+ BurpSuite 聯動

    Proxifier 軟件是一款極其強大的 socks5 客戶端,同時也是一款強大的工具。Proxifier 支持 TCP,UDP 協議,支持Xp,Vista,Win7,支持 socks4,socks5,http 代理協議,可以讓不支持通過代理服務器工作的網絡程序能通過HTTPS 或 SOCKS 代理或代理鏈。

    利用 Proxifier 代理 PC 中模擬器的進程流量,并與 BurpSuite 聯動來抓包。

    BurpSuite
    IP:10.170.0.246
    端口:8080
    

    手機WIFI
    IP:10.170.0.246
    端口:8080
    

    Proxifier
    IP:127.0.0.1
    端口:8080
    

    從任務管理器中查看夜神模擬器的進程,查看文件所在的位置

    在 Proxifier 中設置夜神模擬器進程,并注意代理設置所在第一行

    成功抓取夜神模擬器的進程流量

    0x08 Drony+BurpSuite 聯動

    Drony 支持 App 定向的 http,https 抓包。手機上裝的 app 多了,會很多數據上來,要加過濾規則,正式環境測試環境都要加連上了代理,有些普通使用的 app (非抓包 app)會沒法使用,會出現經常要設置代理,關閉代理,需要又要設置(有些手機會保存代理 ip 還好,不保存的還要每次手寫)。

    Drony 可以解決上述痛點,不需要手機在 wifi 里設置代理。可以通過該 app 直接指定目標 app 才走代理,對其他 app 不可見。

    將手機上的所有流量都重定向到 drony 自身

    這樣 drony 就可以管理所有手機上的網絡流量,然后對手機上不同 APP 的流量進行單獨配置,再轉發到 BurpSuite上。

    電腦開啟 wifi,并查看

    將 BurpSuite 的 IP 及端口設置為此

    再打開 Drony 后往右滑動,打開設置界面,選擇無線網絡

    選擇 dronyTest

    設置好主機名和端口后,代理類型選擇手動(BurpSuite 的 IP 及端口也設置為如此,保持統一)

    過濾默認值默認為允許全部,點擊編輯過濾規則

    添加過濾規則,其中行動一欄選擇本地代理鏈全部

    過濾規則添加好如下圖所示

    返回至日志模塊,開啟 Drony

    手機谷歌瀏覽器訪問 www.baidu.com,成功接收到轉發流量 

    0x09 繞過雙向驗證

    9.1 一句話總結雙向證書驗證

    當服務器啟用了雙向認證之后,除了客戶端去驗證服務器端的證書外,服務器也同時需要驗證客戶端的證書,也就是會要求客戶端提供自己的證書,如果沒有通過驗證,則會拒絕連接,如果通過驗證,服務器獲得用戶的公鑰。

    9.2 解決思路:

    9.2.1 反編譯找證書私鑰
    • 先通過工具反編譯 APK 文件,找到證書的文件。一般證書文件可能會放在 assets 或者 res 目錄下可以直接搜索證書文件
    • 證書文件格式后綴如:crt、cer、p12、pfx等等。
    • 找到證書文件后打開它會發現是需要私鑰的。拿到證書文件名后,在反編譯好的源代碼中查找相關函數,找到私鑰。
    • 導入輸入私鑰后的證書到 burpsuite 后,即可正常抓包。
    可以關鍵字搜索 “key”、“password”、“ssl” 等關鍵字,快速定位到私鑰位置。 難點還是反編譯后遇到難脫的殼和代碼混淆的問題。
    9.2.2 Hook SSL 對數據解密數據的地方

    雖然 https 在傳輸過程中是加密的,但在終端顯示的時候,必然會解密,不然 APP 上都沒法顯示了。

    所以如果能知道安卓解密 SSL 加解密是哪個類, Hook 這個類, 類里相關方法的輸入輸出肯定就是傳輸的明文數據。

    0x10 小程序抓包

    10.1 繞SSL Ping、防代理抓包

    基本步驟跟上述差不多,姿勢足夠用了。如果還不行的話,需要寫 Hook 代碼來 Hook 掉函數

    10.2 雙向驗證繞過

    基本步驟與上述差不多,只是小程序訪問后,會把包下載到本地,可以破解本地小程序包來搞定。

    小程序包下載機制:

    當點開一個微信小程序,如果本地這個文件夾下找到即將運行的小程序,會從微信服務器下載到本地,在以后的某個時刻又運行這個小程序,運行時,微信服務器會通知有沒有小程序新版本,如有新版本,會在后臺靜默下載,小程序繼續運行,新版本要到下一次運行才會啟用,這就是微信小程序的更新機制。

    打開微信,打開想反編譯的微信小程序,在小程序打開后,就可以切換到 RE 或 MT Plus 文件管理器去找源文件。

    從根目錄開始。/data/data/com.tencent.mm/MicroMsg/.../appbrand/pkg/,路徑中有一段...,這里表示不確定具體一個,一般是很長的數字和字母組成的文件(如下圖所示)

    對于小程序 wxapkg 包的反編譯主要是使用 js 插件 wxappUnpacker。

    隨著微信對于小程序的加密、混淆打包、分包及插件機制,小程序反編譯的成功率大大降低

    之后就是常規的破解小程序包的源碼,找到證書,并根據證書名稱找到私鑰,再安裝到抓包軟件上的常規套路。

    0x11 結語

    這幾種抓包姿勢基本夠用,或者換一些工具,比如 HttpCanary、Packet Capture、r0capture 等等,基本也是安裝軟件>下載證書>轉換格式>安裝證書>配置 IP、端口>開始抓包調試。如果還不夠用,那可能就需要 Java 代碼層面進行函數 hook,篇幅所限,以后有機會再介紹給各位大佬。

    burpsuitefiddler
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    安卓工具總結
    2021-10-14 08:39:34
    JRE:Java Runtime Environment是Java運行時環境,包含了java虛擬機,java基礎類庫安裝過程:1)雙擊啟動安裝程序2)默認安裝路徑3)jre路徑選擇4)配置環境變量JAVA_HOME. 這里介紹幾款不錯的安卓模擬器。
    App 服務端測試基本就是 Web 安全那一套,但如果抓不到服務器的包?模擬器和測試手機的安卓版本建議在 7 以下,生態較好。
    常用的抓包工具有fiddler、wireshark、httpwatch、 firebug、F12/等。抓包抓的是協議,fiddler抓的是HTTP、HTTPS協議,wireshark抓的是其他協議。fiddler、wireshark可以修改接口的參數和返回值,常用的F12調試工具只可以查看接口的參數和響應值。
    通過一些嘗試后,問題暫時解決,特此記錄一下。問題出現之前的測試環境:Pixel 4. 由于抓其他app的請求包是沒問題的,比如該小程序的app版本,這時懷疑是不是微信又在防御抓包方面升級了。最終得到結論:PC端微信小程序抓包:Fiddler設置系統代理,并將網關代理設置為burp的127代理+Burp Suite的logger++插件記錄流量。
    0x01 開門見山首先回顧一下《微信綁定手機號數據庫被脫庫事件》,我也是第一時間得知了這個消息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條數據樣本:個人認為這件事也沒什么,還不如關注一下之前45億快遞數據查詢渠道疑似在近日復活的消息。消息是這么傳的,真假尚未確定,因為筆者不會冒著查詢個人信息意味著賬號和個人信息綁定的風險去測試是否為真,但是可以知道的是之前的查詢渠道叫“
    隨著WAF產品從傳統規則庫到智能引擎的轉型,通用漏洞類型已基本可以防護。在日常安全測試中,大部分發現的都是未授權訪問和水平越權,本次講解下水平越權。接收郵件方會首先檢查域名的SPF記錄,來確定發件人的IP地址是否被包含在SPF記錄里面,如果在,就認為是一封正確的郵件,否則會認為是一封偽造的郵件進行退回。
    HTTPs雙向認證及解決方案Https一般采用單向認證,但是一些特殊的APP在服務端也會對證書進行再次認證,這樣的認證機制我們稱為HTTPs雙向認證。
    用戶名:加密密碼:密碼最后一次修改日期:兩次密碼的修改時間間隔:密碼有效期:密碼修改到期到的警告天數:密碼過期之后的寬限天數:賬號失效時間:保留。查看下pid所對應的進程文件路徑,
    PowerTool是一款免費的系統分析,手動殺毒工具。PowerTool 的特色在于它能夠獲取較高權限,從而執行一些底層的系統維護操作,如常用的強制結束進程、強制刪除文件、強制編輯注冊表、強制刪除系統服務等等。
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类