得以见证一个行业破土而出,从孱弱到璀璨,是职业生涯的某种幸运。这也许会成为值得珍藏的回忆标本。
李伟就是这样一名移动安全的老兵。在移动安全这个概念诞生之前的1998年,他正坐在摩托罗拉的办公室里,为寻呼机的系统开发核心组件。现在回想起来,中国的移动科技爆发,似天水荡平川,正是始于哪些人们腰间的“小黑盒”。就这样,他和中国最早的移动设备,以及现在已经到了知天命之年的第一批移动通信用户联系在了一起。
【李伟】
在李伟眼中,这段将近20年的历史,和自己最为蓬勃的岁月紧密相连,有一种别样的温情。
大学毕业后做了三年 Windows 应用开发的李伟觉得,Windows 的系统变得越来越庞大,甚至有些公式化。就在这个时候,嵌入式系统独特的技术美感吸引了他。偶然的机会,他看到了如日中天的摩托罗拉寻呼机业务正在招贤纳士,从此开始了移动设备的职业生涯。
当时好一点的寻呼机要2000多块钱,很贵。但我们办公室每个人的抽屉一拉开,满满全是各种寻呼机。
李伟饶有兴趣地回忆。
【摩托罗拉寻呼机】
一部寻呼机的系统固然简单,但是却有着着丰富的技术细节。李伟给雷锋网举例,寻呼台的基站是以广播的形式对外发送信号。所有的寻呼机都可以收到,但是必须只有一部寻呼机能解释出这个信号,这其中涉及到的号码识别和寻呼协议技术正是他参与研发的。
然而,随着世纪之交临近,短暂霸占人们生活的寻呼机迅速被手机拉下神坛。李伟也顺理成章地成为中国第一批手机的开发专家。纵然从界面和易用性来讲,彼时的手机可以用简陋来形容。但即使如此,安全技术也是必不可少的。
当时的环境下,并没有漏洞和利用漏洞提权的安全概念。因为手机系统是特殊的资源,需要对手机设计完全不同于 PC 的一整套权限访问模式,来限制恶意资源访问。比如“drm”,就是一种限制资源访问次数和转发的系统。而且,在当时我们也设计了硬件层、驱动层、应用层的防护系统,以防止任何一个层次可能出现的漏洞。
李伟告诉雷锋网 ,这是他最早涉及到的安全项目。
然而,他隐隐感到一种不安,因为在他的想象中,一部手机应该搭载复杂一些的操作系统。这个想法最终促使他在2005年加入了后来名声大噪的塞班(Sybian)。
彼时塞班还没有被诺基亚收购,他作为这个智能系统在中国的第一个工程师,负责塞班对整个中国市场开发者的技术辅导和对接。
因为我有很多移动设备嵌入式开发经验,所以对于手机系统的底层逻辑非常熟悉。越是到系统底层,各个系统的逻辑相似度越高,在内核层,塞班、Android、iOS 的逻辑都是非常类似的。而和系统底层相关的应用,只有安全这一个类别。
李伟如此解释自己走上移动安全道路的原因。也正是在这个时候,移动系统的安全问题真正开始浮现。
在当时,手机病毒虽然是稀有物种,但是对于手机系统商和软件开发商来说,已经成为不容忽视的问题。开发反病毒软件的团队们,也成为了李伟办公室的常客。例如后来名噪一时的网秦,例如一个名为“信安易”的手机杀毒软件,后来成为了360手机卫士。
2010年,3Q大战爆发。现在看来,这场商业史上的经典战争成为了中国移动安全技术军备竞赛的元年。那一年,带着摩托罗拉和塞班系统这两个移动通信史上最大的光环,李伟已经成为了中国当时为数不多炙手可热的手机安全专家。
准备火力全开的腾讯向他伸出了橄榄枝,李伟就此组建移动安全实验室。
“安卓底层的对抗,简单说就是注入和反注入的能力对抗。当时腾讯在这方面的能力比较弱,我可以说是临危受命。”李伟回忆道。实际上,站在2016年回看当时的手机江湖,Android 只有一岁,用李伟的话说,不仅是腾讯,所有人对于 Android 的安全构架,“都处在一个朦胧的状态”。
【世界上第一台 Android 手机 HTC G1】
为了对抗病毒和恶意软件,李伟必须找到一种技术,从应用层一直打通内核层拿到系统的底层权限。这其中的核心技术,就是我们现在熟知的 Root。只是在当时,这个词还未被发明。
2011年初,李伟凭借经验断定,这种能“突破系统结构的技术”是存在的。而且,另一件事佐证了他的判断。
LBE 的张勇是我的朋友,他是国内第一个做出 Android Root 的人, 他既然做出来了,我就相信这件事肯定可以做。
当年6月,李伟带着两个兄弟,开始了“底层权限控制技术”的研究。这项技术的难度在于,不仅要求研究者掌握 Android 的底层逻辑,还要对上层的服务层和框架层有深刻的理解。对于李伟来说,他仍然需要从零开始补足 Android 系统的上层逻辑。那段时间,每天工作到夜里两三点,是他的常态。
虽然现在对于 Android 系统的 Root 技术,可以在网络上找到现成的开源技术和架构。但是当年在没有任何参考的情况下,能把 Root 搞出来,还是很有难度的。
李伟说。
两个月之后,实验室成功地向腾讯交付了这个“底层权限控制技术”。他不无骄傲地回忆,这个技术“领先了对手半年时间”。
这位中国第一批 Root Android 系统的大牛,并没有对雷锋网过多回忆其中的困难。但从零开始构建 Root 的世界观,可以想见他使出了怎样的“洪荒之力”。
在完成了 Root 技术开发之后,移动安全实验室接到了新的任务,那就是提高手机管家对于手机病毒的查杀能力。
“Android 是一个新平台,当时恶意软件爆发,所有业界的杀软查杀率都不好。业界急需一个有病毒捕捉能力的体系。”他说。
病毒往往隐藏在 App 中进行传播。而业界普遍认为,一个对于 App 的自动分析处理系统是最好的解决方案。但是,李伟对当时腾讯采用的分析系统构架并不满意,他决定操刀做一些改进,从而提高病毒识别的准确率。
想要分辨出病毒的难点在于,你必须知道一个 App 到底有哪些恶意行为。
例如读取电话本、上传资料。这两个动作本身没问题,但是如果一个程序先读了你的电话本,然后把它上传到服务器,这个动作就很可疑。
然而难点也正在这里,单独判断程序读电话本和上传资料都很简单,但是把这两个动作的逻辑关系识别出来,就有很大的难度,需要分析程序的执行流程,或者说需要虚拟执行。
李伟设计的系统,简单来说就是用尽可能准确的诸多行为模型对大量的 App 进行筛查。在2011年的时候,这个系统一天会筛查几万个文件。而为了保证准确性和改进系统,还会有大量的人工复检。“大概每个人每天要审计好几百个 App 的代码”,李伟回忆。
让李伟欣慰的是,这些辛苦没有白付,优化了一年之后,在2012年腾讯的手机病毒检测能力终于到了国内领先的水平,而且在一次国际测评中拿到了满分的成绩。
除此之外,李伟对于初期杀毒引擎的设计一直不满意。用他的话说,设计的“有点糙”。
例如一个游戏的安装包可能达到80M,在手机上的杀毒引擎就会把这80M的文件全部放到内存中,再进行检测。这种处理方法会占用很多内存,而且检测的时间很长。
我们设计了一种方法,向系统申请很小片的内存用于病毒扫描。一个80M 的 APK 安装包里,很可能真正的代码只有 4M,其他的都是资源和图片。这种情况下,只需要把可能包含恶意程序的代码部分放到内存里检测就可以完全实现病毒查杀。
这个原理听上去很简单,对于实验室的技术水平来说,实现起来也并不复杂。事实证明,他们用这种技术,实现了杀毒速度十倍的提升。团队发现,他们发明的这项技术已经走在了病毒查杀的前列,所以还专门申请了专利。“这导致竞争对手必须采用其他的技术路线。”李伟说。
虽然整个中国的手机杀毒软件技术在飞速进步,但是在利益的驱使下,恶意软件的蓬勃之势丝毫没有减弱。李伟向雷锋网讲述了在2012年,他遇到的最为奇葩,最为忍无可忍的恶意软件。
【2012年,Android 系统恶意软件的分类情况】
病毒检测系统捕捉到了一个恶意程序,我们照例对它进行人工筛查。我们发现这个病毒会在微信等流行的程序上面覆盖一层窗口,恶意推广它的广告,诱导用户下载其他 App。可恶的是,它还会有一些交互的按钮,给用户的感觉就像是微信在推送这些广告一样。更可恶的是,它还会根据入侵的 App 不同,改变按钮的风格,让用户觉得浑然一体。
做了很多年反病毒工作的李伟觉得忍无可忍,黑客居然躺到了自家微信的门口“为非作歹”。更可怕的是,通过利用 Android 的系统权限,这个病毒可以获取很多用户的隐私信息。
李伟和团队经过分析恶意软件的代码,发现了它用于控制和回连的服务器地址。而经过公开资料的查询,居然很容易就定位到了病毒作者的真实姓名和地址。和上层沟通之后,腾讯决定报警。
从发现病毒,到分析研究,定位犯罪分子,到报案出警,所有的事情都发生在一天之内。我记得当天深夜,公安需要团队出人连夜去江苏配合办案,我们团队的人有很多都没有把身份证带在身上。好在有带了身份证的同事,都没有来得及回家,就直接买票去了江苏。当天就把犯罪分子缉拿归案了。
现在想起这个“深夜追凶”的故事,李伟仍然难掩内心的波澜。对于大部分的病毒,杀毒软件只能做到拦截和查杀,但是像这次一样斩草除根的行动并不多。对于他来说,做手机安全十多年,眼前的场景让他坚信了自己工作的价值。
2013年,李伟注意到了一个特别的趋势,那就是很多病毒不再把注意力集中在 Android 系统之上,而是直接“搞 App ”。有了这个想法之后,李伟开始研发一套监测 App 漏洞的系统,并且本能地对自家的微信等 App 进行测试。这一查不要紧,他确实发现了自家产品存在很多问题,这让团队惊出一身冷汗,紧急对微信等核心产品做了修补。
于是李伟注意到,“应用安全”很可能是未来一个非常重要的安全方向。于是他把移动安全实验室的工作重心放到了“应用漏洞”的研究上。
相比攻击 Android 系统,攻击 App 的成本很低。而且 App 和用户最近,里面有很多个人的信息。这些都是黑产最为关心的。通过入侵 App 拿到个人通讯录或者关系链,比入侵系统之后再拿这些数据要简单得多。
李伟说。
对于一个 App 来说,最常见的漏洞有以下几种情况:
1、很多 App 中会使用 Webview 内嵌浏览器,如果安全机制做得不够,这里就有可能成为攻击入口。用户通过 Webview 打开一个恶意url,就会执行远程攻击代码。
2、一些 App 也可能通过自身的协议联网。在这种情况下,黑客可以通过“中间人攻击”或者“伪造服务器”的方法,向客户端发送恶意代码。
3、在 Android 系统中存在一个 App 之间的相互调用机制。如果调用接口安全性不高的话,App 1 就可以利用 App2 执行一些恶意代码,从而窃取 App 内的隐私信息。
通俗来说,如果一个聊天 App 被攻击,那么很可能受害者扫一下二维码,就被盗取了他的通讯录和关系链,而如果漏洞厉害的话(这样的漏洞也屡次被发现),是可能跨 App 攻击的。
他告诉雷锋网,从某种程度上来说,找到 App 的漏洞比找到操作系统漏洞更难,因为攻击需要入口,而 App 对外开放的接口,远没有操作系统对外开放的接口那么多。他说:
App漏洞利用和系统漏洞利用不同。
系统的使用者是 App, App 可能调用所有的系统接口。
而 App 的使用者是人,人一般只会使用有限的几个接口,例如:网络访问、语音、扫码、信息键入。
所以我们只能通过这些接口做文章。
李伟的 App 漏洞挖掘思路,在某种程度上和腾讯的另一位大牛,研究系统漏洞的吴石有些相似。(有关吴石的研究,请戳雷锋网文章:《科恩实验室吴石:站在 0 和 1 之间的人》)
这种输入特定数据的方法,本质上是虚拟执行。我们必须从这些接口输入特定的数据,造成 App 的运行错误,从而发现和利用漏洞。
数据输入动作很大程度上是自动化的。我们根据经验发现 App 的薄弱环节,然后利用自动化的工具生成一些极端的数据,以此来观察 App 的不同反应。
App 漏洞研究是一件苦差事,因为 App 在大多数情况下并不是标准化的。对于研究者而言,虽然经验可以复用,但对于不同的 App 都要分别开展研究。而且,由于 App 安全受国家和用户群的限制,并没有系统漏洞受关注。但是李伟觉得移动安全实验室的工作意义非凡。
我们对市面上 Top 200 和用户量较大的 App 都会进行研究。从13年到今天,总共发现了100多个高危漏洞,这些漏洞覆盖了10亿用户。
理论上来说,对于 App 的漏洞利用非常隐蔽。如果已经有黑产窃取了某些 App 的用户资料,也只会在窃取的当时产生流量,不会留下数据包等证据。李伟告诉雷锋网,在行业中对于某 App 的用户信息究竟有没有遭到窃取,很难产生官方的统计。所以李伟和团队的对手其实是“隐形”的。他们的所有努力,都是以想象中的敌人为对手,在对手发现并且利用漏洞之前先行封堵。如果以每个高危漏洞攻击一个用户算来,他们已经阻止了潜在的1000亿次进攻。
虽然对手从不露面,但是李伟不敢有丝毫懈怠。某种意义上来说,他更像名将蒙恬,却匈奴七百里,筑长城而守藩篱。
正是因为这片战场上驻守着诸多如李伟一样的百战名将,才使方寸之间的虚拟世界运行如常。