“知物由學”是網易雲易盾打造的一個品牌欄目,詞語出自漢·王充《論衡·實知》。人,能力有高下之分,學習才知道事物的道理,而後才有智慧,不去求問就不會知道。“知物由學”希望通過一篇篇技術乾貨、趨勢解讀、人物思考和沉澱給你帶來收穫的同時,也希望開啟你的眼界,成就不一樣的你。當然,如果你有不錯的認知或分享,也歡迎通過郵件(zhangyong02@corp.netease.com)投稿。
2018年6月28日,Droidcon2018安卓技術大會在上海如期舉行。
Droidcon技術大會於2009年由一個Android愛好者國際研究小組在柏林和倫敦發起,旨在為Android開發工程師、應用人員、創業者以及使用者提供一個開放的交流平臺。目前已在全球5大洲、26個國家和地區召開,是安卓領域全球最有影響力的技術大會。作為TMT產業的全力推動者和引領者,本屆大會北京長風資訊科技產業聯盟聯合世界移動大會,邀請了眾多國內外知名企業及安卓領域技術大咖參加,共同探討安卓技術趨勢、熱點與應用。
網易移動安全技術專家卓輝受邀參會,發表了主題《Android應用破解及防護進階之路》的演講,和與會開發者分享了面對應用山寨、重打包、破解、資料洩露、登入安全風險時,我們該如何解決。
一、移動APP的安全風險
隨著移動開發技術的不斷髮展,手機APP已經成為了人們生活中密不可分的一部分。但就目前的APP開發安全現狀來說情況卻不容樂觀,盜版APP、惡意破解、APP劫持、資料洩漏、移動業務攻擊等等......各種狀況層出不窮。
因此,對於廣大開發者和企業來說,移動APP的安全問題亟待解決。常見的安全風險包括有山寨危險、重打包風險、破解/資料洩露、以及登入安全風險。
山寨危險
山寨APP的問題由來已久,實際上,大部分APP都有過被仿冒的經歷。據統計,熱門應用平均有27個山寨APP,嚴重危害到了正版應用和使用者的利益。如下圖所示,通過簡單的解包、逆向分析、程式碼拷貝、簡單開發並打包就可以完成山寨應用上架,暴利產業鏈下還有更多的開發者趨之若鶩,仿冒形式也是多種多樣。
在任意的應用商店中搜尋“搶紅包”,都會出現大批“克隆”的結果列表。
重打包風險
重打包風險主要是指二次打包,通過破解正版的APP進行二次打包上傳至應用商城。這種仿冒形式成本低廉、操作簡單,“打包黨”們通過反編譯工具嚮應用中插入廣告程式碼與相關配置,再在第三方應用市場、論壇釋出。常見的操作手段比如插入自己廣告或者刪除原來廣告、通過惡意程式碼惡意扣費或插入木馬、修改原來支付邏輯等等。
重打包不僅嚴重危害產品和使用者的利益,還會對公司的口碑產生極度惡劣的影響。如下圖所示,神廟逃亡即被打包黨們進行了二次打包。
破解、資料洩露
金融、支付類App一直是資料洩露的重災區,多達88%都存在記憶體敏感資料洩露問題。如下所示,即為常見的金融、支付類本地儲存資料洩漏。
資料抓包,洩漏使用者名稱和密碼也是常見的狀況之一。
登入安全風險
登入安全也是不容忽視的安全風險之一,包括介面劫持風險和鍵盤記錄風險。
二、移動安全進階
被二次打包,被惡意利用;被破解,敏感資訊洩漏;遊戲出現外掛,影響收入......諸如此類的惡意手段對於企業的利益來說破壞性極大,為了保護智慧財產權,也為了響應《網路安全法》
和監管部門的要求,提高防護等級、實現安全進階顯得尤為重要。
一般而言,移動安全的進階包括四大步驟:安全監測、資料保護、程式碼保護和多端聯動。
安全檢測
安全檢測是移動開發安全防護的第一步,通常需要檢測客戶端程式安全、敏感資訊保安、密碼軟鍵盤安全性、安全策略設定、手勢密碼安全性、通訊安全、業務功能測試、配置檔案、拒絕服務、本地SQL隱碼攻擊等方面。
而在各威脅型別下,還有各種複雜的子類也需要加強檢測。
在安全檢測中,最主要的是幫助產品規避安全風險。據統計,2018年已知的部分移動開發漏洞包括ZipperDown安全漏洞、Janus簽名漏洞、應用克隆漏洞、RCE漏洞、Google
Android緩衝區溢位漏洞......開發應該關注這些漏洞並想辦法規避這些風險。
資料保護
如下圖所示,抓包是資料擷取中經常會用到的手段。所以開發者需要對帳號、密碼進行加密處理。不過這還遠遠不夠,其中仍會存在通訊風險,給入侵者以可趁之機。
如下所示,即演示了在帳號、密碼都進行了加密處理的情況下仍能突破保護層竊取資料。
某APP登入過程中敏感資訊已經加密,攔截A登入裝置請求RO就能獲取加密後的資料,在另外一臺裝置B上攔截登入請求R1,把RO資料填充到R1中,B裝置即可顯示登陸成功。
這種情況下,做好HTTPS雙向認證就是很重要的一大步驟了,起碼要做好單向認證,就是客戶端校驗服務端合法證照。首先在服務端驗證時間戳、裝置資訊和IP;在客戶端進行加密,包括敏感資訊加密、時間戳、裝置資訊和序列號;然後將資訊保安儲存到本地儲存之中。在服務端和客戶端的傳輸中,要注意客戶端要校驗服務端證照,防止中間人進行劫持攻擊。
輸入保護也是資料保護的重要組成部分,開發者可以開發自定義的密碼輸入鍵盤。為防截圖、錄屏,建議不要使用手機裡自帶的輸入法輸入密碼,以防止鍵盤記錄。
總的來看,資料保護可以說是安全保護中最為重要的一步,通訊資料、儲存資料等重要敏感資料都需要經過加密並加入校驗資訊。此外,還有一些安全建議:HTTPS並沒有想象中那麼安全,所以建議不要使用自定義加密演算法;本機儲存資料加密並且拷貝到其它手機不能使用;儘量一機一密、常用裝置登入.....
程式碼保護
基礎的程式碼保護方法包括以下五個方面:
- 編寫Proguard程式碼混淆,SDK也要混淆編寫;
- 程式碼Native化,將Java轉C++、Dex轉到so;
- 白盒加密,金鑰加密,但不要簡單的把金鑰寫在程式碼中;
除去這些基礎層面外,面對越來越複雜的入侵方式,一些進階措施也是必備的,包括VMP、資源加密、動態反除錯、防模擬器、防DUMP、防劫持、防注入......這就需要更全面的APP專業加固服務了。
多端聯動
使用者和APP是互動和反饋的關係,因此,多端聯動能夠帶來更好的安全保護效果。
對於APP、後臺、風控中心這三者來說,APP通過和使用者互動獲取資料,後臺通過手機資料向風控中心提出安全請求,風控中心再通過裝置指紋、黑名單、行為分析和業務模型向後臺反饋結果,後臺通過業務調整控制APP業務,並最終呈現給使用者。
最後一步
當然這其中,人的安全問題也是比容忽視的。在安全防護中,人是最不可控的風險因素,因此要加強人員安全培訓和安全管理。
三、未知的安全風險
技術的發展速度是超乎所有人想象的。在未來,開發者必將面臨著更加複雜的安全問題:
未來的安全風險無論對於業務、還是安全從業者,都是未知的。
基於此,網易雲易盾通過自身的網站安全問題發現能力,變“被動通報”為“主動治理”,為廣大開發者提供自下而上的全面監測解決方案,極大規避政策風險、避免品牌形象遭受損失,為您的App保駕護航。
歡迎
免費試用網易雲易盾安全服務。