這是我們對白宮iOS App進行靜態分析的後續報告。在那篇文章中,我們反編譯了該App並記錄了其程式碼的功能。批評者們也合理地指出,編譯後的程式碼並不代表實際運行的程式碼。

因此,我們設置了一個中間人(MITM)代理,並觀察了該App實際傳送的數據。

我們在Mac上安裝了mitmproxy,並將iPhone配置為通過它路由流量,然後在設備上安裝了mitmproxy的CA證書。接著,我們打開了白宮App(v47.0.4,build 81),瀏覽了所有標籤頁:首頁、新聞、直播、社群和探索。

所有HTTPS流量都被解密並記錄。流量未被修改。該App的使用方式與任何普通用戶無異。

在一次跨越所有標籤頁的瀏覽會話中,該App向31個獨立主機發送了請求(不包括iOS系統流量):

在捕獲到的206個App發起的請求中(不包括iOS系統流量),只有48個(23%)導向whitehouse.gov。其餘158個(77%)則導向第三方服務,包括Elfsight、OneSignal、YouTube、Google DoubleClick、Facebook和Twitter。

這不再是基於符號分析的猜測。這是App啟動時實際發送到api.onesignal.com的解密HTTPS請求主體:

在一次App啟動時,OneSignal會收到:

App在每次啟動時都會向OneSignal發送多個PATCH請求,更新您的個人資料,包括會話次數、會話時間和設備元數據。在我們第一次捕獲(僅啟動)時,我們觀察到18個PATCH請求。在我們完整的瀏覽會話中,我們觀察到總共9個OneSignal請求,包括GET和PATCH。

請求順序很有說明性:在啟動時,App首先執行一個GET請求,從OneSignal的伺服器獲取您現有的個人資料,然後發送PATCH請求進行更新。OneSignal維護著一個持久的個人資料,追蹤跨會話的每一次變更。我們在兩天內進行的三次獨立捕獲中驗證了這一點:

這不是一個快照。這是一個活躍的個人資料。OneSignal知道您何時安裝了該App,您打開了多少次,每次會話持續了多久,您使用的是什麼網路,以及您每次的IP位址。所有這些都與一個永不變更的持久識別符相關聯。

User-Agent標頭識別了流量:WhiteHouse/81 CFNetwork/3860.400.51 Darwin/25.3.0

我們的靜態分析發現了六個Elfsight小工具和一個兩階段的JavaScript加載器。動態分析證實了這一點。當您打開社群標籤頁時,該App會聯繫多個由Elfsight控制的網域。在我們對platform.js的靜態分析和實時流量捕獲之間,我們觀察到了以下情況:

/p/boot/請求證實了兩階段加載器正在運行。每個小工具ID都會被發送到core.service.elfsight.com,該伺服器會響應小工具配置和一個包含要注入的JavaScript文件的資產陣列。以下是我們在捕獲過程中從伺服器收到的實際腳本:

App的loadAssets函數為每個URL創建一個<script>元素,並將其附加到頁面上。伺服器決定運行什麼。這就是我們在靜態分析中記錄的兩階段加載器,現在已在實時流量中得到證實。

YouTube嵌入式內容加載了Google的廣告追蹤基礎設施:

在一次瀏覽會話中,該App:

沒有探測任何伺服器。沒有修改任何流量。我們只是觀察了App自行發送的內容。

標籤:安全, iOS, 反向工程, 隱私, 移動安全, 白宮, 網絡分析, MITM

對此有疑問,或有正在進行的項目?

Atomic Computer Services, LLC ♥ 2026