Security Checking Systems for Mobile Devices 孫宏民 教授 資訊安全實驗室 國立清華大學資訊工程系
檢測技術 App安全漏洞偵測 惡意軟體檢測
App安全漏洞偵測
背景說明 2014年Android手機出貨量為10.6億 支,占整體智慧型手機比重超過8成 (82.3%) Fortinet所公布的「2013全年網路威 脅報告」指出,約96.5%的行動惡意軟 體鎖定Android平台 趨勢科技表示,2014年Android惡意 App數量為400萬個,到2015年超過800萬個 手機資安客戶端軟體市場,到2017年 的市場規模估計為29 億 美 金
行動支付維持雙位數成長動能 Gartner表示,2017年全球行動支付交易額將達7214億美元 (Gartner, 2013) 全球行動支付使用人數將增加至4億5000萬人 (Gartner, 2013) http://www.gartner.com/newsroom/id/2504915 http://www.omlis.com/omlis-media-room/omlis-media-room-assets/uploads/2014/10/world-wide-mobile-payments.jpg
網銀 APP 面臨到的資安威脅 韓國農協銀行(NH Nonghyup Bank ) 網銀 APP,遭Android 的 Master Key 漏洞攻擊 歹徒在第三方 App 程式下載網站上提供了一份惡意更新程式供人下載。此程式利用了 Android 的 Master Key 漏洞,在 App 程式內插入了一個惡意檔案,將它「木馬化」 造成個人資料外洩,還可能造成財務損失 http://blog.trendmicro.com.tw/?p=5927
測試-SoGe m-Bank
步驟 步驟 反組譯 插入惡意碼 分析程式碼 從新打包
反組譯程式碼並分析 反組譯程式碼並分析
檔案資料一覽無遺(xml resource activity)
插入惡意碼 插入惡意碼
銀行個資外洩遭處罰事件有前例可循 但網銀APP 做好防範了嗎? 如APP 有漏洞,損失該由誰賠償? 金管會接獲有關訊息後,即要求玉山銀行應立刻採行有效的改善措施 玉山銀行稽核單位、及其所聘外部獨立的資安專家複核確認相關缺失均已完成改善 金管會也要求該行強化資本適足以因應作業風險發生之衝擊 http://www.nownews.com/n/2010/12/09/597809 但網銀APP 做好防範了嗎? 如APP 有漏洞,損失該由誰賠償?
APP 安全漏洞 導致用戶個資外洩。竊取使用者隱私。如獲取智慧手機使用者的簡訊、通話記錄、通訊錄等敏感個人資訊。大多數普通用戶對此並不知情。 用戶財產損失。支付類App的漏洞往往會給用戶帶來嚴重的財產損失。駭客通過破解支付類App,替換支付連結,誘導使用者向駭客人頭帳戶付費,或者直接竊取App帳號密碼,盜取資金,損害開發者及用戶利益。 山寨盜版橫行。80%的APP 都有對應的山寨版本。
傳統檢測面對的挑戰 自行購置源碼檢測工具 價格高昂,對一般中小企業用戶不敷負擔 需要成本低廉,準確度高的掃描服務 人工源碼檢測服務 人工檢測費時費力,若沒有安全漏洞資料庫當樣本,所做出的錯誤檢測涵蓋率與準確率都會是問題 傳統的資安專家 ≠ 手機檢測專家 需要APP漏洞專業背景,快速檢測出安全弱點的服務
Security Hole Examples in Android Apps : Facebook WhatsApp Evernote 這是其他安全專家所發現的
WhatsApp 只有在啟用SDCard訊息備份時才會有這個問題 沒有這麼快修完,因此廠商不承認駭客公開發布 任何一個有存取SDCard權限的Apps皆可讀取到訊息
Evernote
In Taiwan, a penalty of TWD$500-20,000 for leaking one user’s privacy is a law now. 單一客戶可求償500元~2萬元 若大量的客戶加總起來是非常可觀的
But, most of security experts are not familiar with mobile security. They are familiar with XSS (Cross-site scripting) 、CSRF (Cross-site request forgery) 、SQL Injection、RCE (Remote Code Execution)… in desktop. 首先,會Java的人一定比寫過網頁(HTML、JS)的人少 熟悉OOP和Java的人更少了,進入門檻相對地比較高 Mobile Security的檢測並非給一個URL做可以做遠端代碼執行的漏洞 Web漏洞可能一個Message就能測試XSS等等
A well-known company is also not familiar with mobile security. 我們回報一個漏洞,這家公司的App有超過千萬次下載量,他們的第一線資安工程師這樣回: 直接回說:我對Android不熟
In fact, Microsoft Security Response Center (MSRC) doesn’t understand what mobile security holes are. Microsoft Security Response Center:「If the user must install malware on their phone in order to encounter this issue, then Microsoft does not consider it a security vulnerability.」 In fact, Microsoft does not understand if an Android App doesn’t suffer from security holes, a malware can not do anything due to the isolations of APPs. This is the security design by Android operation system. After two weeks, Microsoft fixed this security holes, notified us, and gave us acknowledgement.
We analyze not only native mobile applications,but also web applications.
We reported back to a bank in Taiwan about Struts2 RCE bug (Java Web Framework) 感謝信from XX銀行資訊處處長 大概一年前,我們也有回報漏洞給… … 看到這郵件可能會想到我們之後有人回報漏洞都不要再回信了 我想要說 對於從不回我信的公司,我不會再回報第二個漏洞 因為我們的漏洞報告也是付出時間和心力撰寫 我們大可把時間拿去做其他事,而不專注在找這家公司的產品漏洞
Vulnerability in Facebook Bug Bounty Payment Website Acknowledgement and reward from Facebook 大概一年前,我們也有回報漏洞給… … 看到這郵件可能會想到我們之後有人回報漏洞都不要再回信了 我想要說 對於從不回我信的公司,我不會再回報第二個漏洞 因為我們的漏洞報告也是付出時間和心力撰寫 我們大可把時間拿去做其他事,而不專注在找這家公司的產品漏洞
技術內容 我捫開發了全世界第一套自動化APP 安全漏洞檢測系統 – MalDroid 每天可分析10000支APP 不須原始碼 (Source)
How do we process the overall flow? 開發者提交給我們 Android APK 透過我們開發的靜態 分析檢測系統找到潛 在的安全漏洞。 我們透過逆向工程與 動態分析來確認漏洞 ,這包含了在不同的 裝置上完整的手動測 試來評估App的安全 風險。 我們確認漏洞後將確 認的漏洞、PoC、詳 細說明、相關案例等 製成最終報表。 開發者修補完漏洞後 將已修補的APK再交 由我們測試以確認漏 洞已修復。 2.我們的系統整理了前面所述的檢測項目 3.有些安全問題是透過靜態掃描檢測不到的,需要我們手動實際操作、分析
MalDroid 5~15秒給您一份專業級的APP 安全檢測報告 快速、精準的檢測平台 MalDroid 5~15秒給您一份專業級的APP 安全檢測報告 程式碼安全漏洞 APP 安全等級 漏洞修補建議 專業級的資安顧問
技術內容 檢測行動裝置App是否存在安全漏洞 透過逆向工程來確認漏洞 將結果輸出成檢測報告,內容包括: 檢測程式碼安全漏洞 App安全等級 漏洞修補建議
檢測項目(OWASP Mobile 十大弱點風險) 弱伺服器端的控制 (Weak Server Side Controls) 不安全的資料儲存 (Insecure Data Storage) 傳輸層保護不足 (Insufficient Transport Layer Protection) 側通道資料洩漏(Unintended Data Leakage) 粗糙的授權與認證(Poor Authorization & Authentication) 加密失效(Broken Cryptography) 客戶端注入 (Client Side Injection) 安全決策是經由不受信任的輸入(Security Decisions via Untrusted Inputs)
檢測項目(Cont.) 不適當的會話處理 (Session Handling) 執行碼缺乏保護 (Lack of Binary Protection) Final List 2014
檢測工具(Android) https://www.owasp.org/index.php/OWASP_Mobile_Security_Project#tab=M-Tools
檢測工具(IOS) https://www.owasp.org/index.php/OWASP_Mobile_Security_Project#tab=M-Tools
在各家知名公司APP的發現 使用者的帳號密碼直接遭到竊取、使用其他服務的帳號密碼遭到竊取 使用者的Access Token被竊取 不需要帳號密碼就能盜用帳號 應用程式的SQLite資料庫被竊取、竄改 使用者的私人對話訊息遭到竊取 使用者的私人檔案可被任意Apps偷取
在各家知名公司APP的發現(Cont.) 不必安裝惡意Apps下能在使用者不知情下發送付費簡訊 任一Apps在沒有GPS權限下取得使用者裝置的GPS位置 在未root下能直接存取Apps內所儲存的所有檔案 應用程式當掉 … More and More ….
案例說明 銀行App帳號及密碼外洩漏洞 App應用儲存的檔案可允許任意應用存取,例如:瀏覽紀錄、Cookie 啟用SDcard訊息備份時,任何一個有存取SDCard權限的App皆可讀取到訊息
解決多家知名廠商資安問題 公司 認可 漏洞APP數量 時間 Google Android Security Acknowledgement 5 2014 Facebook WhiteHat Security Acknowledgement 2 Evernote Security Hall of Fame 1 Alibaba(阿里巴巴) Security Acknowledgement 8 2014/04 Microsoft 2014/5,6 AT&T Twitter Security Hall of Fame(通過HackerOne平台) Sina Weibo 3 2014/4 Yahoo 通過HackerOne平台 2014/5 Badoo Yandex Bug Bounty Hall of Fame 2014/6,7 Baidu(百度) 通過Wooyun平台 2014/3 Sony Hall of Thanks eBay eBay Classifields branded ‘WhiteHat’ Adobe Adobe Product Security Incident Response Team Huawei (System APP) Huawei Company 2014/8 Many Banks Demo PoC many 2014~2015
惡意軟體檢測
Beginning…. It is difficult to judge an application is normal or malicious because both have the same permission rights. The following application in Google Play is a real case in April, 2014. A paid APP appeared in Google Play on April 2, 2014. It is an Anti-Virus APP, called Virus Shield, with cost USD$4. Within one week, it got the #1 paid application in Google Play with over 10,000 download. However, it is a fake APP with doing nothing. (It runs empty for a few minutes and reports back to the user that your mobile phone is safe.)
這是最近一個很紅的新聞 Google Play與Apple App Store的審核機制不同 Google Play是出事後或被檢舉後再移除Apps,App Store則是不允許上架 即使付費,大家也會願意下載惡意程式
背景說明 在過去,最常用來檢測惡意軟體的方法是,比對惡意程式特徵碼的特徵值就可以快速的判斷是某否為惡意軟體 現在,越來越多惡意軟體開發者增進惡意軟體的強度,特別是對於從未出現過的特徵碼已經無法被檢測出來 因此,本技術主要是基於行為分析的方法來檢測 ,透過收集執行時所作的真正行為
技術內容 預先處理App設定檔的資訊 在執行期,蒐集並記錄App產生的行為 使用自動化觸及觸發所有可能的行為
檢測項目 紀錄洩漏的資訊、洩漏方法,像是手機的電話號碼、IMEI碼、簡訊內容、GPS位置等等 記錄所有連出去或是連進來的網路行為 記錄所有檔案的讀取 呼叫哪些加密API 對於電話來電、簡訊都會有監控
檢測的軟體數量 檢測1246個惡意App和818個正常App 其中惡意App包含了高達49個家族 使用不同機器學習方法準確率皆在95%以上
準確率比較
Q & A