你在使用哪种编程语言?快来投票,亲手选出你心目中的编程语言之王 了解详情
写点什么

陈彪:移动安全下一个重点在物联网

2017 年 12 月 03 日

随着移动互联网技术的飞速发展与移动设备性能的不断提高等因素,移动流量逐渐超越 PC 端流量,早在 2016 年,美国网站通讯流量监测机构 StatCounter 就指出,在全球范围内,从移动端如智能手机与平板电脑上网的流量第一次超过了 PC 端。在当年 10 月份,网上有 51.3% 的访问来自移动设备,而 48.7% 来自于 PC。人们越来越依赖移动客户端去获取、发布各种信息,同时,也把经济活动和商务活动等与移动流量更加紧密地联系了起来。

伴随这些变化,移动领域爆发了各种各样的安全问题,这使人们意识到移动端的安全问题也十分严峻不容忽视。近年来,行业内针对移动端安全问题的关注程度正在逐年上升。

梆梆安全是一家以服务模式为用户提供安全防护能力的公司,在 11 月 18 日看雪论坛举办的 2017 安全开发者峰会上,我们采访了梆梆安全 CTO 陈彪,请他分享了移动流量时代下的安全危机。以下内容由采访整理而成。

当下的移动安全问题

当下的移动安全问题可以分为四类,二次打包、系统漏洞、薅羊毛以及业务安全。

1、二次打包

第一类问题是较为传统的二次打包,从安卓系统出现以后,这种问题就存在了,而且相对来说 iOS 的情况是比较理想的。造成这个问题的原因主要有两个,第一个是中国以前的安卓市场特别混乱,有很多应用市场,所以(黑客、非法牟利者等)把别人的应用包改了之后,也有地方可放。第二个原因是技术上的,由于安卓应用主要采用 Java 编写,容易被逆向、修改、篡改。

2、系统漏洞

第二类问题是由现在越来越多的系统漏洞造成的,比如说现在安卓系统不断爆出各类安全漏洞,这些漏洞有可能被不法分子利用。像最近爆发的 Wi-Fi 协议漏洞,这些漏洞一旦被恶意利用,用户信息会被泄露,甚至面临其他安全威胁。

3、薅羊毛

第三类问题是现在比较流行的薅羊毛。某些公司会通过 App 组织各类优惠推广活动,需要用户去抢单、抢优惠券等,由此形成了专门的羊毛党,他们会通过非法手段去刷单刷票。这些活动的入口大多在 Web 端和移动端,那么羊毛党可在移动端通过分析流量数据、解析协议,伪造出模拟协议,去跟原本做活动的服务器进行交互,从而达到虚假抢票的目的,也就是说羊毛党用机器方式去模拟正常人的抢票动作。这样会对商家和正常用户造成很大的损害,严重干扰正常的商业推广。

4、业务安全

还有一个是业务安全问题。我们做了很多银行的业务,检测他们移动 App 有没有安全隐患,这里面就发现很多问题。App 在业务逻辑上的安全漏洞可能会使用户密码泄露,造成身份认证信息或者指纹之类的信息泄露,还可能会造成交易信息被窃取。

移动安全问题解决之道

针对上边说到的这些问题,梆梆安全都给出了相应的解决办法,我们现在业务也是按照这四个方向去做的。比如刚才说的第一个问题二次打包,我们通过加固,阻止包被修改,用各种高强度的东西从技术手段上去解决问题。

第二个系统的问题,系统的问题基本上是通过安卓不断地升级操作系统、系统的组件去解决的,我们主要是做一些防护和检测工作,比如我们会检测用户的使用环境是不是不太安全,提供相关安全信息给用户。

针对羊毛党我们也有一系列移动终端上的保护,和云端的一些控制去做业务,帮助用户阻止非法刷单刷票。我们会建一套类似于风控的体系,在客户端用技术手段去探测对方行为。比如刷单,最理想的一种方案是把协议摸透了,直接把这协议搬到 PC 上,因为通过有线的网络去访问,这样的方式更快更方便。那么我们就会记录正常程序在手机端的一些活动轨迹,如果是模拟出来的,在服务端这个风控系统会判别,看出这个刷单的流量其实并不是通过正常途径来的。当然这是一种判断模型,还需要结合其它的技术,比如说设备的环境因素,这样帮客户解决这方面的安全问题。

而业务安全层面,我们会通过渗透,帮客户检测他的 App 是不是有问题,同时也会通过各种手段去检测,帮他们缓解业务安全。

二次打包已经不那么严重了

大家比较关注二次打包在当下的情况,那我简单讲一下。前两年我们更多强调的是二次打包,但实际上这个风险在现阶段被急剧地降低了,为什么?第一,现在中国的应用市场就那么几家,另外由于国家的号召,应用市场对 App 的检测相对比较严格了,比如 360、华为,他们都有专门的人对提交的 App 进行审核,这样就使得二次打包这个东西变成了一个伪命题,因为国家在这块是下了力的,通过政策去立项的。

其实 iOS 也可以二次打包,但是问题是没有地方去放,改过的包上不了苹果的市场,只能放在一些论坛等地方,那打包者拿到的收益也就是很小的一部分,所以人家也不太愿意用这种方式去投放。而且目前应用市场的垄断性越来越强了,我记得刚开始我们做二次打包加固这个业务的时候,可能中国有三四百个市场,而现在市场就基本被几家给占据了。

安全问题不受重视

说了这么多安全问题,那我们自然会想到一个问题,就是开发者本来都应该是知道一些安全问题的,他们本身也是学编程的,也知道程序会有安全问题,那为什么还会有这么多安全问题存在呢?

在我看来,这有几个因素。首先,现在的情况是开发者对安全问题并不重视,而这其实从整个 IT 行业来看,也是缺乏安全意识的结果,正规的培训少,安全课程也开设得不那么理想,这就导致开发者不知道自己写的程序怎么样才算安全,或者说开发者没有意识到这个问题。

另一方面,中国的开发者产品压力比较大。我们的银行客户他们经常上线新业务 App 产品,压力是非常大的,产品从设计到上线只有很短的时间,所以就会造成软件安全问题比较受忽视,现在程序员更多是考虑怎么实现一些功能,而实现功能以后也没有太考虑一些边界条件。

其实厂商也有安全部门,但是在中国整体的这种开发环境中,安全部门的权利是相对比较小的,而一般来说,公司也不会严格地执行 SDLC(Software Development Life Cycle,软件生命周期)。在国外,这个流程每一步可能要去做一些安全的工作,融合到开发过程中,但实际上这在中国没有太多落地的地方。

国外普遍大的公司,像 Microsoft,会强调 SDLC 和各阶段的安全问题,SDLC 也是国外提出来的,他们觉得从设计开始就要考虑安全性问题,编码阶段、测试阶段和发布阶段,每个过程都有一定的规范,或者说是要求,要去落地 SDLC,但是在中国这块是非常少的。

这些问题要随着国家对安全的重视才可能慢慢去改变,我们《网络安全法》出来以后,对这方面的重视就比较多了,但是还是需要时间去改变,需要对人不断进行训练,要不断地提高开发的安全意识,知道怎么样写出来的代码是有安全漏洞的,怎么样写出来的代码是理想的。

而像这次看雪举办的开发者会议就比较好,它是针对开发者的一个峰会,我们确实是需要给开发者一个安全提示,告诉他们我们会遇到一些怎样的安全问题,告诉他们在开发时应该怎样去避免这些问题,告诉他们到底怎样编写安全的代码。我们也希望能够在这方面去做一些努力,帮助企业提升他们的代码安全性。

将规范转为技术实现

我们上边说到目前的安全问题和开发者安全意识不足的问题,而随着《网络安全法》出台实施,可以预测未来会有更多安全监管的规范出现,这就涉及到我们要怎么去具体用技术来实现这些规范。

拿梆梆安全来说,我们现在在移动端比较有经验,包括现在移动等级保护标准也是我们参与制订的。这些规范就是说一个 App 在安全方面应该做到什么,某些指标应该是怎么样的,但是其实也没有一个测试标准去测试它。那么做等保,就有个测试的方案,我们会根据这个方案形成真正检测的工具,用这些工具去检测,帮助用户鉴别应用的安全性。

在给银行做服务的时候,我们的渗透测试也是第一步先按照中国人民银行发布的标准,把它转化成了某些具体的测试案例,然后这些测试案例有相应的工具,用自动加上人工的手段,去帮银行扫描他们的 App,看它是不是符合这个标准。

总结起来就是说,我们会根据规范去提供相应的检测工具,检测 App、移动系统是不是有漏洞。随着各种规范出台,我们也会不断开发和改进移动等保的工具箱。我们是通过这种方式去落地这些规范的。

移动端渗透测试应该考虑更多

说到安全问题,很多人其实是从渗透测试开始接触安全的,而且一般了解到的是 Web 端的渗透测试,而移动端从使用方式就已经与 Web 或者说 PC 端不一样了,总有人问移动端与 Web 端的渗透测试有什么区别。

是这样的,Web 渗透测试因为是在浏览器里面进行的,服务器的所有的 Code 是在云端,渗透人员是通过接口访问 URL,根据爆出来的接口再一步步渗透进去。移动端的时候他可能就改变了方式,比如有个手机 App,把它跑在一个渗透测试者可以控制的环境里面,那么实际上他主要是通过逆向这个 App 去渗透的。

举个例子,移动端可以定制一个私有的通讯加密协议,虽说是私有,但它还是标准的算法,只是通过封装,让里边传送的内容看不出来。那么想要渗透,首先要知道这个协议是什么样的,那就更多强调的是去逆向 App,进而能够知道具体协议,再做下一步操作。其实就是说,移动端渗透测试,比 Web 端需要更多地关注二进制逆向的内容,比如最简单的需要能看汇编代码。

另一方面是结合传统 Web。手机端 App 它会连到服务器,本身是包含了传统的 Web 里面的一些功能和机制,那不管是 Web 端渗透还是移动端去做,都是必须要有 Web 渗透这基础能力的相关知识,像常规的 SQL 注入、XSS 等。

还有一个方面是,像银行客户可能会有很多的业务逻辑,它是在客户端做的,如果去渗透测试,可能需要了解它在客户端的业务逻辑是怎么样的,比如用户是怎么过去到服务页面的,有没有可能绕过去。像常见的密码界面,从移动端去绕过,把它的密码界面跳过去,拿重置密码来说,本来它的业务逻辑是要让用户先输入原来的密码,但是如果可以直接跳过这个页面,直接跳到后面一个页面,那就可以直接把密码重置了,根本不用管这个重置逻辑。渗透测试者可能直接从内存里就把后边一个页面给调出来了,这种移动端页面的东西,是与 Web 的服务端机制不一样的,所以它也是移动端渗透测试不同于 Web 端渗透测试的地方。

移动安全下一个重点是物联网

我们觉得移动安全下一个重点的领域可能是物联网。可以看到,其实物联网安全跟移动安全有些相似的地方,在现在的计算环境下,手机是客户端,服务端是在其它地方提供服务的,物联网里面也会有个端放在外面,一个操控的平台放在云端上面,那么它可能碰到的问题会跟移动互联网有一定的相似。

但是也有不同,智能家居一般需要人去操控设备,而另一些互联设备,它身上会有很多传感器,不需要人去操作,比如可以不断地报出温度、湿度等环境信息,向上提交做处理。再比如无人驾驶,车可以直接通过各种传感方式去完成自动的信息化处理,完全不再需要手机这类“操控端”。

但是可以想见,这种完全无人介入的物联网操作,它的安全问题会更严重。比如上边说到的,将来车是基于物联网的,车上本身都是有网络的,有各种硬件软件在里面。车以后可能就是这样一个几千万行代码的可行走系统,万一某一行代码存在安全问题,那这个系统被入侵了,车停在半路或者怎么样,这时它可能造成的问题,就不像传统的安全问题了,本来最多造成金钱损失,或者帐号丢失等,但物联网是实际控制现实实体的,就像这个车,可能就会造成人命的问题。

我们现在主要是在物联网这块发力,但是本质上来说,梆梆安全偏向做端上的安全,不太会去做云这方面的安全。我们现在跟一些物联网的厂商,包括一些无人机的厂商、平衡车的厂商都有一定的合作,帮助他们去解决端上的一些问题,典型的像平衡车,可能一台车要卖几千块钱,但是有些厂商,把车上的螺母抠出来,直接就可以把软件取出来了,然后找一个特别便宜的硬件,把这个软件放进去就能跑起来,接着拿出去就卖一千块钱,这样他们就赚了,我们在这块会去做一些安全加固的解决方案。还有刚才说到的车载系统,那么它这几千万行代码里面就特别强调质量问题、可靠性问题,我们也在想些办法去解决。

在物联网安全这方面我们现在也是在做各种研究,而且我们认为这块的安全可能甚至比移动互联网的安全盘子更大,或者说会更重要。

安全问题不可能只由一家来 Cover

安全在前几年是一个非常小的一个市场,现在做安全的,就是在全世界著名的安全公司,比如像赛门铁克,市值都是非常低的。安全市场非常窄,窄到可能一些安全公司,整个公司一年的营业额都不如淘宝一天的交易额。

但是这几年,尤其是斯诺登事件、NSA 武器库泄露等事件之后,各国政府,包括中国都特别重视安全问题了,还提出了安全是未来的第四个空间,再加上人们普遍更多地了解到安全问题的严重性,所以这块的市场肯定是会往外扩展的,在不久的将来安全很有可能市场会变得非常大,我希望能够出现像 BAT 那样大的专门做安全的公司,把安全市场带动起来。

但是,有一点问题挺重要的,可能将来一些安全的方案并不能够由一家来解决,安全领域有一个短板效应,就是布了很多的防线,但是某一点没有 Cover 到的话,入侵者就可以从那里绕过,比如我们是做移动安全的,那 Web 端等各方各面的防护并不是我们的强项,需要其它人来解决,这也是为什么我们会提出“共享安全”的原因之一。

想要一家把安全内的所有问题防范与解决是不太可能的,目前在世界上都找不到这样的公司。所以,国内安全厂商更多的应该是合作,每个公司去做自己擅长的地方,然后把这些东西合起来去作为整体的安全服务。

2017 年 12 月 03 日 18:00988

评论

发布
暂无评论
发现更多内容

智能手表

张老蔫

28天写作

Soul 学习笔记---soul 数据同步的浅显分析(四)

fightingting

Soul网关

Spring 源码学习 15:finishBeanFactoryInitialization(重点)

程序员小航

spring 源码

这样提问,大牛才会为你解答(提问的智慧)

yes

场外OTC交易APP系统软件开发

开發I852946OIIO

系统开发

4K高清视频下载(4K视频素材下载)图文教程

科技猫

下载器 4k高清视频下载 4k视频素材下载 8k视频下载 高清视频下载

一个button的成长过程

学习委员

CSS html css3 html/css 28天写作

经验说丨华为云视频Cloud Native架构下实践

华为云开发者社区

架构 微服务 华为云 CloudNative

产品经理训练营-第一章作业

泡面加煎蛋

产品经理训练营作业00

KingSwim

如何恶意使用微信视频号 | 视频号 28 天 (12)

赵新龙

28天写作

Java 程序经验小结:消除GC触及不到的过期对象引用

后台技术汇

28天写作

作业-week1

赝品

产品经理训练营-第一周作业

羽室

期货合约系统软件开发|期货合约APP开发

开發I852946OIIO

系统开发

开发实战:Float如何保留2位小数

worry

Soul学习笔记---运行 soul-examples-http(二)

fightingting

Soul网关

产品0期-第一周作业

曾烧麦

产品训练营

【并发编程】- 内存模型篇

双木之林

并发编程

云原生动态周报 | KubeEdge被评为2020十大边缘计算开源项目

华为云原生团队

云计算 云原生 边缘计算 华为云 边缘技术

如何构建高效可信的持续交付能力,华为云有绝活!

华为云开发者社区

软件 DevOps 持续交付 华为云

AI无人机出手,让输电线路巡检更“聪明”!

华为云开发者社区

华为云 modelarts 视觉处理

一字一句的让你彻底掌握JavaScript中的回调函数

华为云开发者社区

JavaScript 前端 同步 回调函数

开发实战:LocalDateTime转RFC3339格式

worry

6道tomcat面试题,最后两道难倒我了

田维常

面试

深入剖析RSA密钥原理及实践

vivo互联网技术

算法 https 公钥加密 rsa

轻松几步教你将React Native 项目运行在Web端

华为云开发者社区

html 前端 Web API React Native

TcaplusDB 10周年 风雨兼程破浪行 自研存储见成长

TcaplusDB

nosql 腾讯 分布式 游戏 数据库集群

《原神》运维自动化的探索与实践

OpsMind

运维 运维自动化

当前岗位的理想岗位模型

白生

产品经理训练营

纳豆卡玛

求职 岗位要求 职能描述

技术为帆,纵横四海- Lazada技术东南亚探索和成长之旅

技术为帆,纵横四海- Lazada技术东南亚探索和成长之旅

陈彪:移动安全下一个重点在物联网-InfoQ