困敌之势,不以战;损刚益柔。
以逸待劳之计的原意非常清楚,意指作战时自己先不出击,而是养精蓄锐,待到时机成熟时,再以饱满的气势对付远道而来的疲惫之敌。可惜,此计很难生搬硬套到网络世界,毕竟在黑客对抗中几乎没有“远”和“近”的空间概念,也没有“劳”和“逸”的人文概念,至少这些概念不能决定攻防的胜败。不过,若仔细挖掘以逸待劳之计的核心要点,不难发现其中的“劳”与“逸”在黑客攻防活动中更像是“动”和“静”。因此,网络安全中的以逸待劳之计也许可陈述为“以静待动之计”,即积极准备,伺机待发或伺机而动。如此一来,此计在网络世界中的应用就非常普遍了,下面介绍几个较直观的案例。
逻辑炸弹很像是物理世界中的定时炸弹,只不过此时的引爆条件不再只是“定时”那么简单,而是某种特定的逻辑条件。此时的“爆炸”也不再限于传统含义,而是指各种可能的破坏行为,比如,扰乱计算机程序,致使数据丢失,摧毁磁盘,甚至瘫痪整个系统,造成物理损坏的虚假现象等。实际上,逻辑炸弹只是一种特定的计算机程序,它们事先已被有意或无意,善意或恶意地植入了计算机。平时,逻辑炸弹都处于休眠状态(相当于以逸待劳之计中的“逸”),所以很难被发现,更难被清除;一旦时机成熟,它们便突然“爆炸”(相当于以逸待劳之计中的“劳”)。这里的“时机”便是预设的各种逻辑条件,比如,预定的时间,预定的软硬件环境,预定的计算机运行状态,或预定的指令,等等。
更恐怖的是,逻辑炸弹的引爆条件既可设置为“出现了某种情况”,更可设置为“没出现某种情况”。关于后一种逻辑炸弹,就有这样一个真实案例:某程序员因担心被突然“炒鱿鱼”,就在公司计算机中设置了一个自行研制的逻辑炸弹。该炸弹被引爆的逻辑条件是:该程序员的上班打卡记录连续缺失两个月。该炸弹的“爆炸”后果是公司数据库被彻底删除。可人算不如天算,某天,该程序员在上班途中遭遇了车祸,不得不住院半年。起初,公司对他还很优待,不但主动报销住院和医疗费用,还照常给他发工资。但两个月后,该程序员预埋的逻辑炸弹被引爆,数据库被毁,公司损失惨重,不得不宣布破产。于是,该程序员自作自受,不但失了业,还得承担随后的医疗费用,更逃不掉法律的制裁。
设置逻辑炸弹并非都是出自恶意,也可能出自善意。比如,为了防止火箭失控造成误伤,经常都会在火箭控制系统中预设某种逻辑炸弹。若火箭升空后出现跑偏等异常情况,逻辑炸弹就会被引爆,致使火箭在空中自毁,以确保地面安全。不过,无论善意或恶意的逻辑炸弹,它们都有可能因逻辑条件被意外满足而提前引爆,这也是网络对抗中攻防双方需要争夺的另一个战术点。
逻辑炸弹很像地雷,埋在哪里它就老老实实藏在哪里,安心休眠,伺机爆炸,决不主动移位,更不会像病毒那样四处传染。对于如何将逻辑炸弹埋入目标系统,那就只能八仙过海各显神通了。比如,设备或软件出厂时就已被预置,用户自行安装,间谍施计偷偷植入,或借助其他高科技手段远程植入等。
从以逸待劳的行为上看,与逻辑炸弹很相似的另一种“以静待动”的黑客武器名叫木马,或木马病毒。它的名称和原理都来源于古希腊特洛伊战争中的那个著名的木马故事。木马是一种典型的恶意代码,其引爆方式和爆炸后果都类似于逻辑炸弹,只是木马具有更加灵活的植入方式。特别是,木马能以病毒方式自我复制和广泛传染,向其他计算机主动植入更多或更新的木马。
具体来说,木马是偷偷寄居在被感染计算机中的一种非授权远程控制程序,平时它静若处子,战时则动若脱兔。它可以在黑客的远程操作下,里应外合地悄悄获取系统的权限和用户口令,修改或删除数据资料,泄露用户信息,监控运行情况,或执行其他眼花缭乱的破坏性操作,甚至还能主动寻找系统漏洞,为随后的进一步攻击做准备。当木马处于休眠状态时,它看起来人畜无害,很容易被粗心用户忽略;可它一旦被激活,就会突然发起攻击。
完整的木马程序一般由两部分组成,一部分位于受害者的服务器端,另一部分位于黑客自己的控制器端。因此,一方面,黑客只需操作身边的控制器,便能通过网络随心所欲地控制受害者的计算机;另一方面,木马的引爆少不了服务器与控制器之间的通信,这也是木马和逻辑炸弹之间的另一个区别。
木马为什么能实施以逸待劳或“以静待动”之计呢?因为它具有很好的隐蔽性和欺骗性。比如,木马经常将自己伪装成合法的应用程序,让用户难以识别;它可以长期保持不动,让杀毒工具无计可施;可以采用相关技术(比如定制端口等)提高隐蔽性;可以在作恶后自我清除,从而销毁作案现场,提高欺骗性;可以自我复制,以备份形式蔓延到整个目标系统中,即使其中某个备份不幸被杀毒软件删除,它也能马上恢复,并起死回生。
若想顺利实施以逸待劳之计,木马就得首先潜入目标系统。除了像逻辑炸弹那样的被动植入之外,木马还有若干种主动植入方式。包括但不限于,当你下载其他程序时,木马可能趁机潜入你的计算机,这也是为什么建议大家别轻易下载不明App的原因;当你的计算机本身就存在漏洞(比如未及时打补丁)时,木马可能利用该漏洞自己潜入你的计算机;当你点击了某些含有木马的恶意链接后,其中的木马就会顺势侵入你的计算机;黑客也可能通过远程操作,强行给你的计算机注入木马;等等。此外,黑客还可以通过多种欺骗手段,引诱或逼迫你进行某些看似无害的操作。比如,将木马程序伪装成色情图片,引诱你点击;将木马捆绑到某些安装程序中,让你在无意中将木马下载到自己的计算机中;让木马适时变形(比如木马更名等),让受害者多次上当;故意在你的屏幕上制造一些虚假的错误信息,逼迫你点击预设的有害目标,从而将木马植入你的计算机。
在以逸待劳方面表现得最好的木马之一,当数一种名叫蠕虫的病毒。实际上,蠕虫的运行流程可分为漏洞扫描、攻击、传染、现场处理四个阶段。具体来说,首先蠕虫程序随机(或在某种倾向性的策略指引下)选取某个网段,并对该网段的所有主机进行地毯式扫描。当扫描到带有漏洞的计算机后,便将蠕虫传染给它。然后,蠕虫在被感染的计算机中执行预定的隐藏或攻击任务。同时,蠕虫还会生成多个副本,并以当前的计算机为基地,重复上述流程,发现并攻击更多的计算机。因此,从结构上看,蠕虫程序主要由三部分组成。第一部分负责蠕虫的传播,它由扫描、攻击和复制等三个模块组成。其中,扫描模块负责探测网上带有漏洞的主机,攻击模块则负责漏洞的利用,复制模块将蠕虫复制到新的目标主机中。第二部分负责隐藏,使侵入主机后的蠕虫难以被发现。第三部分负责完成预定功能,比如实现对受害者的控制、监视或破坏等。
在以逸待劳方面,蠕虫的优势主要有五个方面:
一是有较强的独立性,因为它本身就是一段完整程序,无须依赖宿主程序就能独立实施攻击。
二是它能主动发现并利用各种漏洞,包括操作系统漏洞、浏览器漏洞、服务器漏洞和数据库漏洞等。
三是它具有更快更广的传染力,不仅能感染本地计算机,还能远程感染其他服务器和客户端,甚至只需短短几小时就能传遍全球。其感染途径也是千奇百怪,比如共享文件夹、电子邮件、恶意网页等。四是能更好地伪装和隐藏自己。
五是具有更强的反跟踪能力,作案后可以轻松逃掉。
总之,以逸待劳的蠕虫较难对付。
上面介绍的逻辑炸弹、木马和蠕虫等都是恶意代码的特例,而常说的恶意代码才是网络安全中更宽泛的以逸待劳技术。顾名思义,所谓恶意代码就是故意编制或设置的产生恶意行为的计算机程序。这里的恶意行为,既包括病毒行为,也包括那些侵犯用户合法权益的行为。恶意代码通常都是在用户未知或未授权的情况下,被悄悄下载到用户计算机中的可执行软件,然后它们就待在那里以逸待劳,只等时机成熟,便开始从事既定的恶意活动。恶意代码之所以层出不穷,主要原因有两个:
第一,复杂系统的漏洞不可避免。长期的统计结果表明,大约有一半的网络安全问题都源于软件工程中出现的安全漏洞,其中许多漏洞又归因于操作系统本身的脆弱性或网络系统的脆弱性。这些脆弱性为恶意代码的植入、隐藏和破坏活动创造了条件,也使得恶意代码的防范工作更加困难。
第二,利益驱使。由于网络应用越来越普及,恶意行为能带来的好处也越来越多,这就促使黑客以更大的热情,编制、植入和操纵更多功能更强的恶意代码。反过来,更强的恶意代码,又会给黑客带来更多利益。如此一来,恶意代码和黑客收入之间就形成了正反馈,以致恶意代码的发展已形成了如下趋势:
一是恶意代码的种类越来越多,它们的传播已不再单纯依赖于软件漏洞或操作失误,也可能是两者的某种组合。比如,某些蠕虫能产生寄生的文件病毒、特洛伊木马、口令窃取程序和系统后门等,这就进一步模糊了恶意代码之间的区别。
二是恶意代码的传播模式越来越复杂,特别是出现了许多混合模式,它们不但能利用软件漏洞,还能以多种病毒模式发动混合攻击,让防御工作更加困难。
三是出现了跨平台攻击,以致某些恶意代码能够兼容多种操作系统,能在许多平台上按需发动更加难以对付的恶意攻击。
四是恶意代码与社会工程学结合得更加紧密。比如,许多恶意代码已在网上公开低价出售,这不但会培养更多黑客,还会让恶意代码侵入更多系统,进而造成更大损失。此外,更多的恶意代码已被嵌入钓鱼诱饵中,或被植入木马中,或被预装到新设备和新器件中,让受害者更加防不胜防。
五是恶意代码的破坏性越来越大。不但能攻击服务器,还能攻击客户机;不但能攻击计算机操作系统,还能攻击手机操作系统;不但能攻击用户数据,还能攻击系统代码。攻击的驱动力也越来越多样化,有的是受好奇心驱使,有的是受经济利益驱使,还有的是受犯罪动机驱使,等等。
恶意代码的攻击机制虽然千差万别,但其攻击过程大同小异,若按时间顺序来看,基本上可以分为如下六步:
一是提前侵入目标系统,这是恶意代码发挥作用的前提。恶意代码的侵入方式也是千奇百怪,比如,从网上下载程序时,恶意代码乘机而入;拷贝不良文件时,恶意代码被无意安装;黑客使用社会工程学等手段,悄悄植入恶意代码等。
二是维持或提升现有操作权限,使恶意代码获取从事恶意活动所必需的操作权限,同时又不能搞出太大动静,否则就会被发现,就不能以逸待劳,甚至会被及时删除。
三是悄悄地隐蔽在目标系统中等待时机。为此,恶意代码可能会做些小动作,比如,修改自己的文件名,删除源文件,甚至修改目标系统中对自己不利的那些安全策略,以便更好地隐藏自己的踪迹。
四是潜伏并创造攻击条件,等待某些逻辑条件的出现。
五是开始作恶,比如,盗取数据,破坏可用性、完整性和可控性等。
六是针对新的目标系统,再次重复上述五个步骤的攻击过程。
恶意代码的防范技术主要有四种:
一是恶意代码分析技术。它可以通过分析恶意代码的静态特征和功能模块来找到恶意代码的特征字符串和特征代码等,甚至得到恶意代码的流程图,从而找到应对办法。它还可以在恶意代码运行时,实施跟踪和观察,确定其工作过程和语义特征等,进而找到应对办法。
二是误用检测技术。它既可以对计算机进行脱机扫描,也可以对所有出入数据扫描,还可以对运行过程中的内存代码扫描。所有这些扫描的目的只有一个,那就是发现恶意代码的特征字,然后找出与之相匹配的应对策略。
三是权限控制技术。由于恶意代码只有在运行时才能作恶,同时也只有在获得相应权限后,其作恶才能成功,因此若能对所有操作权限进行严格控制,比如只赋予所有操作最小的权限,只在必要时刻赋予权限,那么恶意代码的作恶机会将受到大幅限制,其作恶行为也可能被及时制止。
四是完整性保护技术。恶意代码的作恶过程也是一种破坏完整性的过程,若能及时发现并制止任何操作对完整性的破坏,恶意代码的作恶空间也会大受挤压。
此外,对抗恶意代码的其他技术还有网络隔离、防火墙和病毒查杀等技术,它们都能在一定程度上阻止恶意代码的以逸待劳。