论道WP(三):应用程序栏
作者通过具体翔实的例子介绍了Winodws Phone 7中应用程序栏的使用方式。
该内容已经被标记书签!
标记书签错误,请重试!

作者 Carlos Rozas, Hormuzd Khosravi, Divya Kolar Sunder,and Yuriy Bulygin 译者 吕骏 发布于 2010年6月24日
摘要:最近几年,出现在恶意软件领域中值得注意的新事态是黑客利用被攻破的平台获得金钱利益,主要有如下3种方式:(1)出售盗取的信息,(2)使用平台的资源进行非法或者未经授权的活动,或者(3)绑架平台内的信息以勒索赎金。攻击者在平台中可以捞取的好处越多,平台中未能检测出的恶意软件也就越多,那些能骗过传统安全代理的恶意软件已经再度泛滥。这种类型的恶意软件被称为匿踪恶意软件(stealth malware)。研究人员和工业界发现了云计算的新用途:恶意软件检测。在这篇文章里,我们简要描述了这些新用途,并指出其不足之处。我们提出了一个基于云计算的架构,它能扩展现有解决方案的可用范围,并且我们还提供了一个基于现有Intel平台的原型。我们在此仔细分析了这个增强现有架构可靠性的新固件。这种基于平台的新工具有助于安全提供商对抗恶意软件的威胁。
在过去三年间,恶意软件编写与开发者为达到其利用系统漏洞获取经济利益的新目标,对其产品进行了升级换代。在经济利益驱动下,能隐藏自身于平台中的恶意软件得到了很大发展。某些恶意软件甚至会从受侵害的计算机中清除容易露出马脚的同类,以免受其牵累而被发现。
恶意软件在全球范围内造成的损失每年超过百亿美元:仅在2006年就有143亿美元[1]。
在与恶意软件的斗争中,IT安全面临多方面的挑战。其中最重要的是恶意软件样本的急剧增长。Panda Security报告说,在2008年每天平均检测到35,000个恶意软件样本,全年合计超过1500万个样本。McAfee公司报告说他们收集的恶意软件样本数量从2008年3月的1000万个增加到了2009年3月的2000万个[3]。样本数量的急剧增长意味着没有客户能及时更新已知恶意软件列表。此外,这也意味着安全代理需要花费更多资源来检查文件,以对抗铺天盖地而来的恶意软件特征码。在某些情况下,安全代理会消耗掉50-60%的CPU资源。
恶意软件现在已经泛滥成灾,学术界与工业界一致认为应用云计算来检测恶意软件的时机已经到来[5,6]。现在已经有很多种可以使用的云计算解决方案模型。图1显示一种基于云计算、用于防病毒服务的通用系统架构。第一种模型是服务模型,在主机上运行轻量级的进程以收集相关样本(例如文件),然后将其传送到网络服务上。而网络服务则会进行分析,以鉴定样本是否包含有恶意软件,如果确认此样本已经中毒,就直接指示主机上的轻量级进程将其隔离。在另外一种方式中,主机代理仅仅维护已知恶意软件特征码的一个子集以及一个常用软件应用列表。

图1:基于云的防病毒服务(来源:Intel公司,2009)
恶意软件检测从云计算中受益良多。以云计算为中心会减少客户端占用的存储空间与计算资源,并能简化特征码文件的管理。此外,无论何时,只要以前未能成功鉴别出的恶意软件样本出现在云中,安全提供商就能使用非常复杂并且计算密集的启发式搜索方法将这一恶意软件的危害剖析得清清楚楚。
然而,云计算却不能使主机代理免遭恶意软件的伤害。为防止或检测到遭到禁用、破坏的代理,主机代理需要采用特别的方法与途径。在[[7, 8, 9, 10, 11, 和 12]中提出了很多方法为主机代理提供更安全的保护。其中一些方法集中在使用虚拟技术为安全代理提供隔离的运行环境。在这篇文章里,我们仔细分析了一些平台功能特性,它们能用来隔离主机代理以应对来自各方面不同威胁。
开篇讨论对主机代理的威胁。然后勾画出一个基于增强型云计算、用于恶意软件检测的通用架构。接下来描述了用来增强计算解决方案的Intel平台技术,最后用前面讨论的方法对对威胁进行了分析。
正如只能在主机运行的恶意软件检测系统必须得到真实可靠的信息才能有效工作,平台上的主机代理也必须为云服务提供真实可靠的信息才能确保发挥其防病毒作用。如果恶意软件能利用系统中的漏洞(例如,浏览器插件中的缓冲溢出),然后破坏主机代理,它就能在未被发现的情况下安然运行。
可以使用多种方式破坏主机代理:
在最近几年,恶意软件发展的重点在于使用更具破坏性的方式攻破系统安全。其中一种由暗影行者(Shadow Walker)使用的方法是在中断描述符表(interrupt descriptor table ,IDT)、页面出错处理程序( page-fault handler )中设置钩子。当处理器读取内存中的内容作为数据时会返回恶意软件所指定的值,而当处理器读取内存中内容作为代码时会返回其他值。另外一种安全研究人员提出的方式是安装恶意虚拟机监视程序 (VMM)来超劫持(hyperjack)操作系统(OS)。VMM使得研究者能对系统一览无余,却不需要对OS进行任何修改或者挂钩(hooking)。
在图2中描述了一个系统架构,用以增强基于云的防病毒服务。

图2:基于云的防病毒增强型解决方案(来源:Intel公司,2009)
通过在主机环境中隔离出主机代理,并提供对诸如外存和内存等平台资源的直接访问,主机上的恶意软件不能再直接攻击或者操纵主机代理。恶意软件不得不转而攻击主机代理分区。由于主机代理分区不需要支持多用途计算,它能以更加健壮的解决方案配置得更加安全。下面描述了相关架构组件:
图3描述了怎样扩展防病毒云服务,使其有能力提供内核匿踪攻击(Rookit)检测,还有在磁盘/文件上扫描恶意软件。架构组件描述如下:

图3:基于云的内核匿踪攻击(Rookit)检测(来源:Intel公司,2009)
远程内存完整检查操作会产生两个问题:安全与网络延时。我们使用下面三种方式来解决网络安全问题:提供客户端PC与防病毒云服务间的安全通道、提供内存哈希比较接口并限制远程内存访问。由于绝大多数进行内存完整检查的核心内存区驻留在客户端平台的不可分页(nonpageable)内存,内存验证时的网络延时问题就显得不是太严重。
通过检测诸如引入表挂钩、内存代码与静态数据修改、IDT、系统调用参考表以及直接内核对象窜改等常用攻击方法,内核匿踪攻击(rootkit)检测程序有助于缓解未知威胁或者内存内(in-memory)威胁。
我们开发出两个系统原型,用来检验系统设计。原型1基于Intel®管理引擎(Intel®ME),原型2基于虚拟机监视程序(virtual machine monitor,VMM),两者都与主机OS隔离。因为这两种方式都与主机OS互相隔离,攻击者更难破坏其运行环境。
自从 Intel® 主动管理技术 (Intel® AMT) [16, 17]及运行 Intel® vPro™ 技术的平台面世以来,平台中就包含了一个嵌入式微控制器,称为Intel ME。Intel ME是一个集成设备,独立安装在PCI总线中。Intel ME集成了多种硬件引擎,比如总线控制器、加密加速器、DMA引擎等等。Intel ME运行的固件(firmware)由实时操作系统(real-time operating system ,RTOS)、操纵硬件的驱动程序以及管理应用程序组成。在我们的原型中,我们利用DMA引擎访问内存区。
我们首先实现一个代理来扫描固件中的内存。这个代理是传统的基于黑名单的扫描代理。因为Intel ME在计算能力与存储空间两方面的共同限制,我们只能在Intel ME固件中实现一个功能受限的扫描代理。能安全存放的黑名单的长度限制在192KB,扫描操作的频率也不能太高。由于这些限制,我们只好在主机OS中实现了一个主机代理,其功能是扫描基于黑名单的内存。在此原型中,我们向Intel ME代理中加入完整性检查固件,以检验其主机代理的完整性。此外,Intel ME带外( out-of-band ,OOB)接口能与远程防病毒云服务进行通讯,如果主机代理在运行时被修改,就会通知防病毒云上的软件。Intel ME在其存储区域内保存主机代理的哈希值,并且定期验证主机代理运行时映像的完整性。在我们的论文《实时内核匿踪攻击(Rootkit)检测》(Runtime Kernel Rootkit Detection) [9]中,我们描述了用来验证主机代理运行时完整性的清单(manifest )产生进程以及3阶段(3-phase )算法。对于此原型,我们使用Intel ME度量主机代理的完整性:进程执行所需时间在毫秒级。我们打算进一步研究事件驱动、主机代理扫描等方法,以解决定时攻击问题。图4显示了我们的原型架构:

图4:Intel®管理引擎架构(来源:Intel公司,2009)
在这里,我们的第二种有原型中,我们用虚拟机(virtual machine,VM)作为隔离环境,并且扩展我们的第一个原型来度量虚拟机监视程序(VMM)的完整性。
为理解我们为何选择VMM作为隔离环境,让我们首先来了解一下使用硬件虚拟的基于虚拟的系统。我们在平台上使用Intel® Virtualization Technology (Intel® VT)。虚拟是指一种将处理器或者芯片组的物理资源到分割到不同VM上,并在OS下插入比VM更高权限的执行程序的技术。这个执行程序就是VMM。在IA-32的Intel® Virtualization Technology (Intel® VT)、 Intel® 64 和 Intel® Architecture (Intel® VT-x)中,称这一权限级别为VMX-root模式。将控制转换到VMM称为VMExit,将控制转换到VM称为VMEntry。通过使用VMCALL指令,VM能显式地、强制地进行VMExit。在VMX non-root模式下运行的客户OS进行关键OS操作时必定会产生一个VMExit。这使得VMM能强制执行隔离策略。通过增加一个轻量级VMM到[9]中所描述的原型,我们增强了其功能。为能拦截换页事件以及对数据结构的改动,我们利用VMM监控所需的系统事件,并可以在需要时建立影子页(shadow page)表。系统组件、清单生成以及完整性验证算法的细节在[9]中详细讨论。我们在研究原型中加入了Intel ME固件,用其来验证VMM自身的完整性[11]。在图5显示了此架构。

图5:虚拟化环境架构(来源:Intel公司,2009)
第二种原型的的关键架构组件基于深视技术(Deep Watch),详见[11],它是由位于Intel ME固件中的完整性验证模块和防病毒云服务中的VMM完整性应用服务组成。 在BIOS 系统管理中断(system management interrupt,SMI)处理程序提供的简单支持下,能得到处理器状态和寄存器信息,然后Intel ME能从这些信息中为VMM重建虚拟内存页表。系统管理模式(System management mode,SMM)是一种能达成特定目标的操作模式,此模式能管理全系统范围内的功能,例如电源管理、系统硬件控制,甚至私有OEM设计代码。SMM带来的主要好处是提供了明确的并且使用简便的独立处理器环境,此环境对OS或者执行程序及软件应用都是透明的。当通过SMI调用SMM(SMI处理器),处理器保存当前处理器的状态(处理器上下文context),然后转换到隔离的、存放在系统管理RAM(system management RAM ,SMRAM)中的操作环境。这个处理器状态被收集到SMI处理程序,并通过硬件接口传送到Intel ME。Intel ME中存放的处理器状态可以用来重新构建内存页表,以验证VMM的实现完整性。此外,Intel ME可以传送所有信息(处理器状态和内存页)到防病毒云服务。远程防病毒服务就能验证VMM的实时完整性,也就克服了Intel ME的计算能力限制。我们还建立了一个类似研究原型通过PCI DMA设备来度量主机OS驱动器的完整性,详见[12]。
我们假设攻击者已经完全能访问及控制OS,包括内核,并能插入、修改或者删除内核驱动程序;然而,我们假设攻击者不能修改Intel ME固件或者SMRAM。我们的假设意味着攻击范围十分广泛,从简单用户攻击到各种修改关键内核数据结构的攻击,其目的是破坏用户OS或者VMM本身。这种类型的攻击例子包括有在导入表、IDT或者系统调用参考表中挂钩、内核代码及静态数据修改,以及直接内核对象窜改。想大致了解内核匿踪攻击(rootkit)技术请参考[18]。
下面是我们在原型1中解决的不同攻击方式的威胁:
在原型2中,除了原型1所能解决的威胁以外,我们还解决了VMM攻击。
在这篇文章中,我们解释了学术界与工业界共同提议采用云计算对抗病毒的缘起。我们仔细研究了基于云的防病毒服务所面临的威胁,首要风险直指运行在客户端上的主机代理,它用于向防病毒云引擎输送数据。我们然后提供一些基于平台的功能特性,基于Intel架构,能用来减少恶意软件对主机代理的危害。我们研究了结合了Intel虚拟技术及Intel芯片组技术的原型,这些技术包括有Intel ME,能有效减少防病毒云环境中对主机代理的大部分威胁。因此,这些技术的新应用能为我们的终端用户提供更加有效的防病毒云服务。
[1] “The Economic Impact of Viruses, Spyware, Adware, Botnets and other Malicious Code.” Computer Economics, 2007 Malware Report.
[2] Annual Report PandaLabs 2008. At http://www.pandasecurity.com
[3] F. Paget. “Avert Passes Milestone: 20 Million Malware Samples.” March ;10, 2009. At http://www.avertlabs.com
[4] T. Watson. “Antivirus Vendors Push Toward Cloud Computing.” Dark Reading, September 17, 2008. At http://www.darkreading.com
[5] J. Oberheide et al. “Cloud AV: N-Version Anti-virus in the Network Cloud.” In Proceedings of the 17th Usenix Security Symposium, pages 91-206, July 2008.
[6] McAfee, Inc. “Artermis Technology—Always–on, Real–Time Protection.” Whitepaper, 2008. At http://www.mcafee.com
[7] N. Petroni Jr. et al. ”Copilot–a coprocessor–based kernel runtime integrity monitor.” In Proceedings of the 13th Usenix Security Symposium, pages 179-194, August 2004.
[8] VMware, Inc. “VMsafe Security Technology.” A set of web pages. At http://www.vmware.com
[9] S. Grover et al. “RKRD: Runtime Kernel Rootkit Detection.” SECRYPT, 2008. To be published by Springer.
[10] X. Zhao et al. “Towards Protecting Sensitive Files in a Compromised System.” In Proceedings of the Third IEEE international Security in Storage Workshop, December 13, 2005.
[11] Y. Bulygin et al. “Chipset based detection and removal of virtualization malware.” Black Hat USA, 2008.
[12] R. Sahita et al. “OS Independent Run-Time System Integrity Services.“ Intel Corporation 2005. Whitepaper. At http://www.intel.com
[13] Z. Wang et al. “Countering Persistent Kernel Rootkits Through Systematic Hook Discovery.” 11th International Symposium on Recent Advances in Intrusion Detection (RAID), Boston, MA, September 15–17, 2008.
[14] S. Sparks and J. Butler. ”Shadow Walker: Raising the bar for rootkit detection.” Black Hat Japan, 2005.
[15] J. Rutkowska. “Subverting Vista Kernel for fun and profit.” Black Hat USA, 2006.
[16] Intel Corporation. “Built-in Manageability and Proactive Security.” Whitepaper, 2006. At http://www.intel.com
[17] O. Levy et al. “Advance Security Features of Intel® vPro Technology.” Intel Technology Journal, Volume 12, Issue 04, December 2008.
[18] Skape and Skywing. “A Catalog of Windows Local Kernel-mode Backdoor Techniques.” Uniformed Journal, Volume 8, September 2007. At http://www.uniformed.org
感谢曹云飞对本文的审校。
给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家加入到InfoQ中文站用户讨论组中与我们的编辑和其他读者朋友交流。
在多线程并发编程中Synchronized一直是元老级角色,很多人都会称呼它为重量级锁,但是随着Java SE1.6对Synchronized进行了各种优化之后,有些情况下它并不那么重了,本文详细介绍了Java SE1.6中对于锁的性能优化,以及锁的存储结构及升级过程。
本次分享将首先介绍现代富文本编辑器的组成和实现,然后结合UEditor的开发过程,与参会者分享UEditor在设计和实现的过程中,所涉及到的核心功能的细节实现。
本次演讲视频录制于百度技术沙龙。
我们所开发的应用程序大多都需要提供一个图形用户界面(GUI)。关于GUI应用的架构设计,已经有了Form & Control、MVC,、MVP、 Passive View等多种模式。模式可以帮助我们建立优雅的架构,但前提是弄清楚模式的应用场景。弄清楚GUI应用面临的设计上的问题,有助于我们正确的挑选设计方案。
MongoDB是一种非常易用的NoSQL方案,Brian C. Dilley在这篇文章里介绍了MongoDB的优劣势,并介绍了MJORM项目。MJORM用于MongoDB,是一个没有注解的Java ORM库。
随着网络基础设施的逐步成熟,从RPC进化到Web Service,并在业界开始普遍推行SOA,再到后来的RESTful平台以及云计算中的PaaS与SaaS概念的推广,分布式架构在企业应用中开始呈现出不同的风貌,然而殊途同归,这些分布式架构的目标仍然是希望回到建造巴别塔的时代,系统之间的交流不再为不同语言与平台的隔阂而产生障碍。
精益软件开发方法因其对市场和交付的重视和在各种场景下体现出的适应能力正在获得广泛的关注。特别是在精益创业(Lean Startup)渐渐兴起和技术日新月异的今天,其"极端"的思想也变得越来越必要和可行。 InfoQ就此主题对他做了深入的采访。
没有回复
关注此讨论 回复