【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】