【廉環話】安全入侵應對實務—移動終端篇
原創【51CTO.com原創稿件】大家好,這次我又來“打卡”了。下面的這張照片是四月份我在貓本的敏志溪火車站(Menzies Creek Station)附近的一片林區里所拍到的一棵被鋸剩下的樹根。當地人告訴我們:這里的樹木都是上好的木材,在一次整體伐木的過程中,唯獨這顆大樹在被鋸斷后才發現到它的中心已經被完全蛀空了。大家既對該樹本身表示痛心,又對浪費的伐木時間和由此引發木材的缺失而表示惋惜。
由此我想到:在企業運營中,日益普及的移動終端,特別是各種智能手機或Pad,在我們企業的整體IT架構內部所占的比重雖然不大,但是如果它們在安全上一旦出現問題或是被惡意軟件等入侵和攻擊,那么我們IT系統這顆大樹也將會從內部被瓦解甚至崩潰掉。所以我們這次就來聊聊如何做好移動終端的入侵應對吧。
第一階段:基礎與準備
1. 首先我們要具備APP權限管理方面的基本知識。想必大家都知道,對于Android平臺的APP而言,其權限是在AndroidManifest.xml中被說明的。我們可以采用如下的形式,來對APP運行所需要訪問系統的權限和依賴關系進行細粒度的定義。
2. 如果企業有自己開發的APP,特別是那些Android版本的,為了防止各種惡意代碼的攻擊,可以采用軟件加殼和代碼混淆等技術來予以自身的保護和防止被反編譯。另外在最終交付給用戶使用前,開發人員也可在APP里安插一些函數鉤子,以發現調試器的進程,從而在內存的層面上實現反動態的調試。
3. 適當地進行挑選、安裝能夠有效防范各種本地入侵的手機安全管理軟件,以持續提供病毒查殺、流量監控、騷擾攔截、話費跟蹤、以及“健康”體檢等服務。記得我在某次選型過程中,就曾將是否具備識別“偽基站”的功能作為一個衡量的指標,在此大家也可以借鑒一下。
4. 如果用戶采用的是BYOD的模式去使用企業的IT服務資源的話,那么應當使用嵌入式移動虛擬化技術,來實現企業所需的可信且安全的APP與用戶自行安裝的第三方的非可信APP,能夠同時共享地運行在同一臺移動終端之上。通過運用沙箱(sandbox)技術,達到每個APP在系統中進行時都能被分配到一個唯一且固定的UID。不同的APP各自獨立運行在Dalvik虛擬機中,從而實現不同APP的進程之間的相互隔離。
5. 購置并部署移動設備管理(MDM)平臺,實現對移動設備的標準化、流程化、統一的和遠程的安全管理與響應。當然還可以通過該平臺去推送企業為員工定制的各種APP。
6. 在用戶的安全意識層面上,要普及如下基本知識點:
· 下載應用時,優先選擇官方發布且認證過(有簽名)的APP,不要輕信通過旁人掃描二維碼的形式去下載安裝。
· 在自行安裝APP的過程中,要注意看清楚彈出的有關系統權限的提示信息,不要輕易點擊和開放終端的最高權限。比如說對Apple產品的“越獄”行為、或是在Android系統中的Root權限提升都應避免和謹慎。在不確定如何操作的時候,要及時與IT人員聯系。
· 定期運行檢查并保持防病毒軟件的病毒庫更新狀態。
· 注意不要點擊帶有亂碼的短/彩信、陌生連接請求和獵奇網站。
· 不要隨便連接到陌生的或是名稱怪異的WiFi熱點之上。
總之,正所謂“凡事預則立、不預則廢”,我們要先發制人,事先做好各種防范工作。
第二階段:檢查與識別
近年來Android平臺的移動終端漏洞屢屢被曝光,信息盜用和應用入侵事件更是層出不窮。而iOS平臺則由于其系統相對是閉源且嚴格,因此曾在傳統觀念上被認為在非越獄的情況下,其安全性遠高于Android。但是近年來,iOS平臺也相繼暴露了一些XcodeGhost和中間人漏洞等多種惡意的SDK。因此,作為安全工程師的我們,仍然需要發揮精耕細作的精神,在各種入侵事件發生前做好預防性檢查。我們可以通過運用各種平臺、多種工具的混搭,來構建出符合自己企業特點的“百寶箱”。
1. 自動化漏洞掃描,目前國內以3BAT為首的行業龍頭公司都已經提供了移動終端APP的漏洞檢測相關產品。值得慶幸的是這些大多數都是免費的,而且能夠支持在特定應用場景下的二次開發。
· 對于iOS平臺,除了有Idb和Needle這類經典的開源的安全評估工具之外,也有360NirvanTeam和MobSF(同時支持Android和iOS)這樣的具有iOS App在線審計功能的開源方案。它們基本上可以實現對BIN文件的分析、XCodeGhost和惡意SDK的檢測、以及第三方庫的漏洞檢測等。
· 對于Android平臺,既然剛才有提到過3BAT,那么依次對應的在線掃描系統有:360APP漏洞掃描(http://dev.360.cn/html/vulscan/scanning.html)、百度的MTC(http://mtc.baidu.com)、阿里的聚安全(http://jaq.alibaba.com/)和騰訊的金剛審計系統(http://service.security.tencent.com/kingkong),它們都在不同程度上做到了對本地的文件內容讀寫和IPC通信的監控、Manifest信息和Logcat日志的查看,敏感文件加密與傳輸操作的審查等,也實現了對Android App的自動化靜態與動態的分析。
2. 人工綜合分析,主要包括對網絡數據包的分析、應用行為的分析、源代碼的分析等,這往往需要人員具有一定的網絡和開發方面的經驗。
· 網絡數據包分析:是運用Wireshark之類的包分析工具,抓取終端在網絡通信時候的收發數據包,對源/目的IP地址、URL、以及各層的數據進行解析的操作。
· 應用行為的分析:是運用DDMS之類的調試工具,通過對APP的各種操作日志的記錄,來對其運行狀態和操作行為屬性等進行監控。另外,還可以通過對服務端施以模擬攻擊的滲透測試,來偵測APP的各種響應,從而挖掘出不安全的因素。
· 源代碼分析:則是對可疑的APP進行源代碼級別的邏輯分析和審驗,找出安全隱患或惡意代碼行。不過,這一般是可以委托給專業的第三方軟件分析公司來完成。
我們再來看看遭遇式的識別流程。一般如果在用戶的移動終端上出現如下這些異常的狀態,那么十之八九就昭示著該設備已經中招了!
1. 防病毒軟件顯示報警信息。
2. 系統響應的異常延遲狀態。
3. 網絡瀏覽的異常緩慢狀態。
4. 系統異常的重啟、死機或關機。
5. 某個/些APP的異常關閉或閃退。
6. 出現包含有奇怪字符或亂碼的提示信息。
7. 異常高額的電話費或上網流量的使用。
8. 頻繁的陌生或是無號碼信息的電話呼入與呼出。
所以,一旦發生了上述情況以及出現移動終端設備異常發熱的時候,我們就應該立即使用一些比較“稱手的兵器”來進行抽絲剝繭。這里主要和大家分享的是針對Android平臺的入侵識別。
1. 使用Intent Sniffer工具,來檢查應用程序之間進行過通信的最近的任務或廣播。
2. 使用MindMac工具,通過模糊測試的方法來發現導致設備、APP在運行過程中出現的異常閃退的原因,甚至是系統崩潰的bug。
3. 使用經典的X-Ray工具,來檢查是否帶有由提權類漏洞所引發的后臺自動發送付費類短信,和上傳各種個人隱私等跡象。
4. 使用Drozer工具,來發現和挖掘Android上是否存在被利用的公共漏洞和遠程漏洞。
5. 以及使用“瑞士軍刀”類型的工具-- SPF(Smartphone Pentest Framework)進行全面檢查。它能夠支持Android,iPhone和blackberry。
第三階段:取證與調查
每當用戶一臉無辜地將有問題的移動終端放到你面前的時候,其實它早就已經是“一塊窟窿眼兒的瑞士奶酪”了。面對這樣的殘局,你要做的事情就是要根據既定的流程,認真仔細地進行取證與調查。具體步驟可參照如下:
1. 將設備復位,以止損。即屏蔽掉所有的網絡活動,如WiFi、藍牙連接等;拔下記憶卡(SD卡),如果可以移除電池的話,也應拔下。
2. 將移動終端與一臺處于standalone模式(脫機、與企業內容斷開,但必要是可以連接互聯網)的電腦相連接,運行與智能終端類型相符的管理軟件,進行病毒查殺。
3. 備份終端上的數據,運行與智能終端類型相符的管理軟件,進行基本信息檢查與同步,將SIM卡、記憶卡和終端內部的存儲空間里的各種歷史數據、日志信息等,根據既定的checklist逐一導出。
4. 定位入侵與威脅,將發現的惡意內容和APP進行有效的隔離,以待進一步研究并最終形成報告。
5. 待取證和調查結束后,按照相關的操作規則擦除掉(Wipe)該移動終端或將其整體系統重置為出廠時的原始狀態,以備封存期(一般為半年)后再次分配給用戶使用。當然如果事關重要,也可不做任何重置操作,直接封存之。
小結
好了,這次我同樣采用的是“三步遞進式”的應對策略解析方式,希望大家通過這次我所梳理出“三板斧”技巧,結合自己的平時業務技能查缺補漏,能夠使得相關知識和思路有所level up(提升)。我們在平時的IT系統維護與安保工作中,千萬不要只注重那些能夠由自己所掌控的“面”上的查驗,而忽略了某些已經交付給用戶而不太出現在IT人員面前的“點”上隱患。記住,大家要提防用戶在不經意之間把自己手中用于提供工作效率的手機“玩”成了時刻會威脅系統的“手雷”。最后,面對不斷迭代、此消彼長且瞬息萬變的各種移動終端入侵與攻擊,我真誠的給大家奉上一句:摔跤吧,安全工程師們!
【51CTO原創稿件,合作站點轉載請注明原文作者和出處為51CTO.com】