虽然病毒与黑客是威胁的最重要两极,但是准确地说,安全产业的发源是从计算机病毒开始的。病毒就像信息世界里的幽灵,无所不在又无处寻觅。它以亿万财富的瞬间消失为代价成了一个家喻户晓的社会性概念,也使得杀毒软件成为仅次于操作系统的第二大装机软件。
大家习惯把跟病毒的对抗过程称为“魔道之争”,取“魔高一尺,道高一丈”之意,形象地表达了杀毒领域这种螺旋上升的动态对抗特点。
虽然现在提起早期的病毒已经没有太大的意义—它们早已湮没于信息世界的长河之中,但是只有解读历史,才能更好地看到未来,尤其是杀毒软件是紧跟着病毒的发展而发展的,因此有必要重温一下病毒发展的脉络,看看整个病毒的发展简史。
谈起病毒起源,目前有两种说法:一种是贝尔实验室的“磁芯大战”(Core War)起源论;一种是巴基斯坦兄弟的“大脑”(C-Brain)病毒起源论。
第一种说法是:相传在20世纪60年代,贝尔实验室的三位年轻人麦耀莱、维索斯基和莫里斯在工作之余发明了“磁芯大战”计算机程序游戏,该游戏便是病毒的起源。其实,对“磁芯大战”进行完整描述的是琼斯(D. G. Jones)和杜特尼(A. K. Dewdney)于1984年3月在《科学美国人》( Scientif ic American )杂志上发表的文章“磁芯大战指南”(Core War Guidelines)。
“磁芯大战”使用一种被称为“红码”(Redcode)的汇编语言编写,运行在一个被称为Core的有8000个地址队列的循环空间中,通过一个名叫MARS(Memory Array Redcode Simulator)的程序来执行多个“对战程序”(Battle Program)。
MARS以一种“多用户、单任务”的模式来执行对战程序,游戏一开始,MARS会将两段对战程序随机分配在内存地址中,这两段对战程序互相不知道对方的位置。然后MARS通过“轮询”的方式来分别执行两段对战程序,即A对战程序执行一步,B对战程序再执行一步,依次循环往复。两段对战程序在内存中移动的同时,可以用数据来填充移动过的地址,假如A对战程序移动到一个新的地址上,碰巧该地址上存在B对战程序,则B对战程序被清除,成为失败者,以下为对战时的场景(如图3-2所示)。
图3-2 磁芯大战
通过上述介绍大家会发现一个事实,就是“磁芯大战”其实跟之后出现的计算机病毒并没有直接的关系,本身只是一个供娱乐的游戏程序,可能对战程序之间“厮杀”的特性让人们能够联系到生物界的“病毒”,就像许多人把冯·诺依曼称为计算机病毒先驱一样,许多人也把“磁芯大战”称为病毒的始祖。
事实上,整个业界更倾向于将“大脑”病毒称为世界上第一个计算机病毒,该病毒又被称为“巴基斯坦兄弟”病毒。
“大脑”病毒是1986年1月,由一对巴基斯坦的兄弟巴斯特(Basit Farooq Alvi)与阿姆捷特(Amjad Farooq Alvi)所编写,运行在微软公司推出的命令行操作系统MS-DOS的环境下。巴基斯坦兄弟编写该病毒的主要目的是防止他们的软件被盗版,只要有人盗拷他们的软件,“大脑”病毒就会发作,发作时会将软盘的标签改为“©Brain”,并出现类似图3-3所示的信息。
图3-3 “大脑”病毒发作现象
“大脑”病毒属于引导区病毒,是通过改写软盘的引导扇区(Boot Sector)程序来运行的,并通过钩挂硬盘的INT13中断来达到隐藏自身的目的。“大脑”病毒真正地打开了病毒世界的潘多拉魔盒,而1988年,“小球”病毒正式登陆中国,成为中国境内被发现的第一个病毒,从此之后,便上演了轰轰烈烈、经久不衰的“魔道之争”故事。
这里的病毒指的是广义的病毒,即我们在正式场合下说的“恶意软件”(Malware)。很多人谈论病毒,都会从隐藏性、潜伏性、传播性、可触发性、表现性、破坏性等特征属性的维度来谈。实际上,病毒在三十多年的发展过程中,已经是一个百亿量级的庞大家族,不同时期也出现了不同目的、不同特性、不同形态的病毒,用通用特性已经很难完整和清晰地描述病毒这一庞大的群体。因此了解病毒的最佳方式,就是从病毒种类开始。
随着安全技术与理念的发展,有许多历史上的病毒分类方法已经不适用了,目前还适用的有三种:一是用生存环境来区分病毒的 环境分类法 ;二是用存在的形态来区分病毒的 形态分类法 ;三是用行为特性来区分病毒的 行为特性分类法 (如图3-4所示)。
这三者的关系是:在同一环境下的病毒可以分为不同的形态,同一形态的病毒有可能有不同的行为。行为特性分类法由于跟病毒的命名法紧密相关而成为目前病毒分类的事实标准。
1.环境分类法
按照病毒的生存环境,病毒可分为DOS病毒、Windows病毒、Unix/Linux病毒、Android病毒、macOS/iOS病毒。DOS、Windows是微软公司出品的操作系统,其中DOS操作系统主要应用于PC,而Windows操作系统则广泛应用于PC、服务器、上网本、嵌入式计算机等领域;Unix/Linux主要应用于服务器领域;Android操作系统是谷歌公司出品的智能手机操作系统;macOS/iOS是苹果公司出品的,前者是PC操作系统,后者是跟Android并列的智能手机操作系统。
图3-4 病毒分类法
DOS病毒随着Windows操作系统的兴起而退出了历史舞台;Unix/Linux由于个人用户基数小、发行版本众多、内核开源等特点而病毒数量极少;macOS/iOS用户基数也小,而且应用环境封闭,因此病毒数量也极少。目前主流的病毒还是以Windows病毒与Android病毒为主,占了病毒总数的99.9%以上。
2.形态分类法
按照病毒存在的形态,病毒可分为引导型、感染型、非感染型、内存型四种。
引导型病毒是指通过操作系统引导扇区感染和传播的病毒。我们知道,就磁盘来说,无论是软盘、硬盘还是U盘,最小单位都是扇区,而无论是DOS操作系统还是Windows操作系统,在磁盘的(0,0,1)号扇区里都存在一个主引导程序(MBR),在磁盘的(0,1,1)号扇区里存在一个引导程序(Boot Loader),主引导程序主要用于识别磁盘的分区,而引导程序主要用于引导后续的操作系统。
基本上,一个PC加电后,会先执行主板上BIOS芯片里的程序来进行硬件的自检,硬件自检完成后就会读出引导扇区的程序来加载软件操作系统。因此可以简单地认为,引导扇区是介于硬件系统与软件系统之间的连接层,当病毒藏匿于该区域后,基本上是跨操作系统的,需要用特殊的方法清除。由于操作系统会把(0,1,1)号扇区当作第1个起始扇区,因此当病毒藏匿于(0,0,1)号扇区时,就会出现即使是用操作系统的格式化命令也无法清除该病毒的情况。
感染型病毒是以操作系统中的正常可执行文件为宿主,将自身病毒代码寄生到可执行文件体内的病毒,即我们经常说的“Virus”;非感染型病毒是自身就是操作系统的一个可执行文件的病毒;内存型病毒是自身没有文件实体,依靠网络从一台计算机的内存传播到另一台计算机的内存的病毒。
之所以要从病毒存在的形态来对病毒进行分类,是因为这几类病毒的清除方式是完全不同的。引导型病毒由于形态是扇区级的代码,因此只能用非常底层的扇区级操作来清除。虽然感染型和非感染型病毒都是以文件形态存在的,但是它们的清除方法却不同:感染型病毒需要完全解析被感染的可执行文件的结构和完全理解病毒代码,将病毒代码摘除后,还需要将被感染文件完全还原并保证其可用,这个过程只能借助于有经验的病毒分析工程师来完成,有时候还需要编写一些专门的病毒清除程序;非感染型病毒的清除则简单得多,直接将病毒文件删除即可。内存型病毒目前数量很少,对它们的清除只能通过内存监控的方式进行。
3.行为特性分类法
按照行为特性,病毒可以分为以下二十一种类型:感染式病毒(Virus)、蠕虫(Worm)、木马(Trojan)、后门(Backdoor)、黑客工具(Hacktool)、脚本病毒(Script)、宏病毒(Macro)、玩笑程序(Joke)、捆绑器(Binder)、恶意程序(Harm)、损坏程序(Junk)、释放器(Dropper)、下载器(Downloader)、广告软件(ADware)、色情软件(Pornware)、间谍软件(Spyware)、行为记录件(Trackware)、病毒壳(Packer)、病毒生成器(Constructor)、内核病毒(Rootkit)、勒索软件(Ransomware)。
当然,不同的厂商会有自己定义的不同的类型,上面的二十一种类型是行业公认的基础病毒类型,为了便于理解,我们再将这二十一种病毒类型简单进行一下聚类,按照共性归成十个子类(如表3-1所示)。
表3-1 病毒类型的聚类
感染式病毒可以单独归为一类。它是最古老的病毒品种,它只感染系统的可执行文件,可以将自己植入目标文件体内,或驻留内存,或加密变形,一旦中招,很难清除。杀伤力极强的CIH就是这类病毒,它会在系统里的所有可执行文件中都插入它自身的病毒代码,只要文件运行,就会优先获得执行权。这类病毒在感染过程中如果损坏了目标文件,那么这个文件就无法正常恢复了。这类病毒是单机时代的产物,通过文件进行传播,以消耗计算机系统资源为主要目的。
蠕虫可以单独归为一类。蠕虫是利用网络漏洞传播的病毒,如果说感染式病毒的传播载体是文件,那么蠕虫的传播载体则是内存和网络,它会通过漏洞直接进入目标计算机的内存,在内存里开始枚举网络中相邻的其他计算机,如果有漏洞就自动入侵,然后重复上述的感染过程,由于是链式反应,因此一旦爆发,就会带来大规模的网络阻塞,像红色代码、冲击波就是这类病毒。这类病毒是局域网络时代的产物,通过局域网漏洞传播,以消耗内部网络带宽资源为主要目的。
木马、后门、黑客工具可以归为一类。木马是数量最多的病毒,约占整个病毒样本集的40%,也是目前最主流的形式。它的特点是不会自我复制,往往通过邮件、网页挂马链接、网页漏洞、即时通信软件等媒介进入用户计算机中,然后就隐藏在后台自动运行,或者给系统开一个后门,等待远程控制程序的指令,或者将用户计算机变成一台被操纵的僵尸机器,或者偷盗用户计算机上的账号和密码等信息。该病毒名称的来源正是“特洛伊木马”的故事,表面上看是一个正常的网络程序,实际上做的是控制用户计算机、盗取信息的事。后门则以开辟网络访问的隐匿通道为主要目的。黑客工具以攻击或控制目标计算机为主要目的。往往一个典型的配合是:木马通过网页或邮件进入用户计算机系统中,然后释放一个后门程序,建立一个远程连接通道,木马程序通过后门程序和远程的黑客工具相连,将用户的信息盗出后传递到远程的黑客工具上,或者黑客通过黑客工具给用户计算机上的木马发送系统控制指令。这三类病毒是互联网时代的产物,利用互联网进行传播,以控制系统和盗取信息为目的,它们的存在往往同经济利益相关,属于“黑产类”病毒。
脚本病毒、宏病毒可以归为一类。脚本病毒是利用脚本语言编写的病毒,如利用JavaScript语言编写的JS脚本病毒、利用VBScript语言编写的VBS脚本病毒、利用PowerShell脚本语言编写的PS脚本病毒等。这类病毒本身编写容易,基本上以网页为感染和传播介质,由于是解释型语言,因此本身的哈希值极易被改变,只能通过人工分析提取特征,或者构造一个脚本语言解释器来自动提取特征。事实上,宏病毒也是一种脚本,它只存在于微软Office系列办公软件之中,使用Office软件里的宏语言编写,但是由于它的影响太大,而且清除方式跟脚本病毒不太一样,因此单独列出一类。这类病毒是紧随时代变迁的病毒,不同时期流行不同的脚本语言,就产生不同类型的脚本病毒,它目前也往往和木马、后门进行配合,形成综合的破坏力。
玩笑程序、恶意程序、损坏程序可以归为一类。玩笑程序是指运行后不会对系统造成破坏,但是会对用户造成心理恐慌的程序。比如一个程序,你点击运行时,会提示要格式化你的硬盘,但是结果什么也没发生。恶意程序是指那些不传播也不感染,运行后直接破坏本地计算机(如格式化硬盘、大量删除文件等),导致本地计算机无法正常使用的程序。损坏程序是指包含病毒代码但是病毒代码已经无法运行的残缺病毒文件。这三类程序都是既不传播也不感染的,很难界定为病毒,但是它们又对用户造成了侵扰,因此很多时候这类程序也被称为“X-File”,即未知文件。这类病毒也是单机时代的产物,随着互联网的发展很快就消亡了,属于“骚扰类”病毒。
病毒壳、病毒生成器可以归为一类。“病毒壳”是指使用某种压缩或加密的算法对恶意代码进行加密和压缩的工具,目前是对可执行文件进行自动的变形,这类壳有个特点,就是壳非常小,往往是自解压,不用使用任何辅助程序,在商业领域可以用于软件保护,而在病毒领域就是为了“过杀软”,即阻碍杀毒软件的正常识别。“病毒生成器”内置加密和变形引擎,能够批量产生出“哈希值”完全不同,但是功能相同的恶意程序。这两类病毒都是用自动化技术来对抗杀毒软件的,因此属于“工业化”类病毒。
广告软件、色情软件、间谍软件、行为记录件可以归为一类。广告软件运行时会弹出广告。色情软件运行时自动链接色情网站。间谍软件运行时能够偷偷执行某些恶意任务。行为记录件是记录用户的计算机操作行为的恶意软件。这几类病毒国内有一个统一的名字“流氓软件”,特指一些用极端手段编写的带有商业目的的软件。这类病毒是互联网发展初期的产物,在大家都在抢用户的蛮荒时代,流氓软件大量出现,它们可以被称为“灰产类”病毒。
捆绑器、下载器、释放器可以归为一类。捆绑器能够将一个恶意软件和一个正常程序打包成一个文件,打包后的文件在执行时会优先在后台运行恶意软件,然后再运行正常程序,用户以为在运行一个正常的程序而对恶意软件毫无察觉。下载器运行时会自动链接某个网站,自动下载最新版本的恶意程序。释放器本身没有危害,只是运行时会释放出多个有危害的恶意文件。而在现实中,一个下载器往往会先下载一个释放器,释放器到本地后再释放出木马文件。通过这些描述你能够很清楚地知道,这几类病毒都是在伪装自己,而且用简单的手法就能改变自身的哈希值,可以很轻松地骗过云查杀引擎,而像下载器、释放器这种互相配合的分段式攻击是APT攻击里常用的手法,因此可以将这类病毒归为“APT类”病毒。
内核病毒可以单独归为一类。它是一种越权执行的恶意软件,它设法让自己达到和内核一样的运行级别,甚至进入内核空间,这样它就拥有了和内核一样的访问权限。本来Rootkit是Linux操作系统的概念,从字面上看就是拥有Root权限的工具箱,是指能够以透明的方式隐藏于系统,并获得Linux系统最高权限的一类程序,而后来被病毒制作者借鉴。病毒的Rootkit技术指的是那些能够绕过操作系统的API调用,直接利用更底层的调用来接管操作系统的高级API调用,当有程序试图查找它们时,便返回假信息,从而隐藏自己的技术。由于目前的杀毒软件都是直接调用系统API来进行病毒扫描的,因此采用这种技术的病毒,都能够轻松躲避杀毒软件的查杀。如果从引导区就开始入侵,则被称为Bootkit,我们知道引导区病毒是DOS时代的产物,那么这类病毒跟前面讲的引导区病毒有什么区别呢?区别在于DOS时代感染引导区就是目的,会通过软盘去感染更多的软盘或硬盘的引导区。DOS操作系统是运行在“实模式”下的操作系统,而Windows操作系统运行在“保护模式”下,因此早期的引导区病毒很难对今天的Windows操作系统再造成伤害。而Rootkit入侵引导区的目的是在操作系统运行之前先运行自己,然后再进一步进入操作系统内核从而控制整个操作系统,是一种更高级的技术手段,在流氓软件初期,很多流氓软件都会采用类似的技术来保护自己,因此很难真正清除干净。
勒索软件可以单独归为一类。勒索软件又叫勒索病毒,是至今为止唯一一种无法完全清除和追踪的病毒。这类病毒会通过系统漏洞进行传播,运行时会利用高阶加密手段,将本地计算机上的文档文件全部加密,而且采取的是非对称加密方式,一次一密,保证每台计算机的解密密钥都不相同。要想解密,就必须通过加密网络来支付比特币赎金,造成整个过程都无法追溯。当支付赎金后,病毒会自动通过在线的方式发送解密密钥。当用户中招时,一般情况下,只有支付赎金一条路,因此该病毒只能事前预防,不能事后清除。当然,由于编写水平的差异,勒索病毒里也有少部分是可以解密的。勒索病毒自产生开始,已经有近百个家族,近万个变种,是目前病毒发展的最新形态,也是至今还在不断给企业带来大量危害的“威胁新物种”。
虽然上面对二十一种病毒类型都进行了简单的描述,但是实际危害最大、数量最多的是感染式病毒、蠕虫、木马、脚本病毒、流氓软件、勒索病毒这六类,它们占据了整个病毒样本集的99%以上。勒索病毒由于其特殊性,后面会专门论述,在这里就先详细介绍一下前面的“黑五类”。
1.逝去的感染式病毒
感染式病毒是最古老的一种恶意软件,技术含量最高,也是与操作系统联系最为紧密的一种恶意软件。每次操作系统的变革,总会产生一些经典的病毒,如DOS时代的“大脑”病毒、Windows时代的“CIH”病毒等。
首先需要搞清楚的是,感染式病毒只针对系统中的可执行文件,在DOS操作系统环境下,就是扩展名为EXE和COM的文件,在Windows操作系统环境下,就是我们常说的PE格式的文件,它是微软创造的一种能够执行代码的文件,扩展名为EXE、SYS、DLL的文件都是这类格式。
(1)感染形态回顾
感染式病毒的形态分为两种:一种是文件型,一种是内存型。文件型是指病毒将自己的代码插入可执行文件中,当该文件运行时,会感染其他可执行文件,感染速度比较慢;内存型是指带毒可执行文件运行时,会驻留内存,即使带毒文件退出内存,病毒还是会继续待在内存中,只要打开任意可执行文件,都会触发病毒的感染动作,因此这类病毒感染速度极快。Windows操作系统是建立在CPU保护模式基础上的按权限来运行的新型操作系统,它的出现已经让内存型的感染式病毒消亡了,而随着Windows操作系统的升级,安全机制越来越多,安全性越来越高,感染式病毒已经难以存活了。另外,编写感染式病毒本身也带不来更多的经济利益,因此研究这类病毒的VXer也越来越少了,不过这类病毒最独特的地方就是它们的感染方式。
(2)感染方式一览
感染式病毒的感染方式有感染头部、感染中间、感染尾部和分段感染四种(如图3-5所示)。
图3-5 感染式病毒的感染方式
感染头部是病毒将自身代码放入正常文件的头部,文件执行时先运行病毒代码;感染中间是病毒将自身代码放入正常文件的中间,然后将中间代码移到尾部,运行时先跳转到病毒代码执行,病毒执行后将移走的文件块在内存中再还原;感染尾部是将病毒代码放到文件尾部,运行时会直接跳转到尾部去先执行病毒代码;分段感染是病毒将自身代码打散到可执行文件其他部分的感染方式,运行时会先执行一个病毒代码拼接的动作。从图3-5可以看出,分段感染方式是不会增加文件长度的,因此隐蔽性更好。事实上,CIH就是利用这种方式感染Windows操作系统文件的。
从图3-5还可以看到,由于感染式病毒对目标文件进行了修改,而且修改的方式各不相同,因此要针对每个感染式病毒进行单独分析。简单的感染式病毒可以通过通用修复方法来清除,而复杂的往往还要单独编写修复程序,因此感染式病毒的清除难度是最高的。由于每个病毒的编写水平不同,有可能还会出现感染时部分损坏目标文件的情况,这样就会导致清除病毒的同时带来目标文件的损坏。
(3)病毒防治
从上面的描述中可以看出,此类病毒一旦感染,只能用专杀工具或专业的杀毒软件来处理,不可能用手工的方式来进行应急处理。不过幸运的是,研究此类病毒的人已经越来越少,目前市场上几乎所有的杀毒软件都能处理此类过时的病毒。
2.离不开网络的蠕虫
虽然病毒都有网络化的趋势,但是蠕虫才是真正意义上的网络病毒,因为它从诞生的那一天起就没有离开过网络。蠕虫这个名字形象地说明了它的特点,就是像虫子一样,从网络的一台计算机爬行到另一台计算机,不停地繁殖自己。
(1)蠕虫由来
蠕虫真正第一次大面积爆发并被人们重视,是在1988年12月的“莫里斯蠕虫”事件中。该病毒的作者相传就是当年“磁芯大战”的作者之一罗伯·莫里斯的儿子。该蠕虫利用Unix系统的两个漏洞,可以在网络上进行自我繁殖。但由于该蠕虫本身的Bug(程序中的错误),病毒在被释放之后便失控了,繁殖的速度大大超出了作者的想象,这个小小的“虫子”最终导致当时互联网上6000多台计算机严重瘫痪。这个数字相当于当时全世界一半的网络节点,造成的经济损失是巨大的,对社会的影响是恶劣的。从此以后,蠕虫的破坏性得到了人们的重视,蠕虫也正式登上病毒的舞台。
虽然蠕虫病毒会造成网络瘫痪,但是它们不一定都是有害的,好的蠕虫病毒还可作为网络设备的一种诊断工具,快速有效地检测网络的状态。比如说可以研制出一种漏洞蠕虫,这类蠕虫会检查它能识别的漏洞,当发现有漏洞的计算机时,它就先感染该计算机,再自动帮该计算机打上补丁,然后再自杀,这样一来,蠕虫感染一遍网络,网络中的漏洞就没有了,等于加固了网络。
也许有些人会觉得不可思议,实际上,在2005年爆发的“冲击波杀手”就是这样的蠕虫,它就是利用“冲击波”病毒使用的漏洞进行传播,然后检查该计算机是否有冲击波病毒,如果有就把该病毒杀掉,只不过由于该病毒本身也存在Bug,因此才好心办坏事,又造成了新一轮的病毒泛滥。
(2)蠕虫入侵
蠕虫程序一般由两部分组成:主模块和引导模块。主模块会收集与当前计算机联网的其他计算机的信息,然后尝试利用系统漏洞在这些远程计算机上建立其引导程序,这个引导模块又把蠕虫病毒带入它感染的每一台计算机中。
蠕虫常驻于一台或多台计算机中,并有自动重定位的能力。由于蠕虫是通过网络进行传播的,因此每一个蠕虫都内置了一个网络扫描器,每一个蠕虫在被激活时的第一件事就是扫描周围的计算机,看看有没有其他有同样漏洞的计算机。有的蠕虫为了能广泛地感染计算机,还设置了不重复感染机制,只在检测到网络中的某台计算机未被感染时,才把自身复制到那台计算机中。
每一个被复制的蠕虫都能识别它将要感染的计算机和本身占用的计算机,从而在网络上的每一台计算机中运行。因为它有繁殖性,所以蠕虫病毒在大面积泛滥时会大量占用网络资源与系统资源,造成网络阻塞甚至瘫痪。因此蠕虫病毒爆发造成的损失是空前的。
上面提到的蠕虫是具有网络特性的网络蠕虫,此外还有邮件蠕虫,这类蠕虫自身内建SMTP邮件发送引擎,只要感染计算机就会主动寻找用户的通信录,然后根据联系人名单把自己作为附件发送出去。既然是通过邮件传播,社会工程学的应用是少不了的,这些蠕虫会生成一封可读性很强的信件来迷惑收到邮件的人。比如2001年爆发的“求职信”病毒,它发送的信件的内容就是一封想要找工作的求职信件,如果有哪些公司急需人才的话就会很容易上当。
邮件蠕虫泛滥的直接后果也是阻塞网络,不过跟上面提到的网络蠕虫不同的是:网络蠕虫是利用系统未打补丁的漏洞进行传播,只要漏洞打了补丁,病毒就无法再进行传播了,像冲击波这类病毒在经过一周的传播周期后会突然消失,就是这个原因;而邮件蠕虫是基于信任链传播的,并且不依赖于漏洞,因此只要病毒编写得足够好,这类病毒就会长期在网络中震荡、生生不息,虽然也有爆发周期,但是周期过后依然会“细水长流”。
(3)蠕虫发展
蠕虫的发展可分为三个阶段。第一个阶段是从1988年到1998年,即从第一个蠕虫“莫里斯”产生到中国互联网逐渐成熟。在此期间,无论在危害上,还是在传播范围上,蠕虫病毒并不占主要地位,这一阶段病毒主要攻击的对象不是Windows平台,而是UNIX、Macintosh等国内并不常用的平台,自然普通老百姓遇到它的机会也就非常小。
第二个阶段是从1999年到2015年,这段时间是互联网快速发展的时期,因此蠕虫病毒也得到了广泛的发展,逐渐在病毒排行榜上占据了绝对优势,从数量上和危害程度上都占据了主导地位。这一阶段的蠕虫跟第一阶段的蠕虫有很大不同,首先是攻击对象以Windows平台为主,其次是采用各种手段诱骗用户点击。随着互联网的广泛应用,邮件蠕虫成为蠕虫作者最爱使用的传播方式。后来出现了像“尼姆达”这种有着感染式病毒属性的复合型蠕虫。
第三个阶段是2015年之后,随着Web业务和云计算的发展,蠕虫进入了平稳发展期,到如今蠕虫虽然在企业内部还是感染数量最多的病毒类型,但是已经没有大规模爆发的恶性事件了。
(4)蠕虫防治
蠕虫的通用防范思想就是掐断传播途径。对于网络蠕虫,最简单的方法就是定期给操作系统打补丁,使这类蠕虫无漏洞可用。对于邮件蠕虫,需要在公司的邮件服务器上设定邮件过滤规则,以防止邮件蠕虫在内网爆发并阻塞网络。
3.无处不在的木马
木马是绝对数量最多的病毒种类,无论去看哪家的病毒库,都会发现木马病毒要占到病毒总数的一半以上。这固然是因为木马病毒相对比较容易编写,更重要的是木马可以实现人们的一些经济目的。
(1)木马往事
木马的名称最早源于古希腊“木马屠城”的故事,因为特洛伊城就是被藏在超大木马里的士兵攻陷的,所以木马病毒又被称作“特洛伊木马”。早期的木马程序都有着好看的界面或者看似正常的外表来诱使用户运行,在背地里执行一些见不得人的勾当,特别像木马屠城里的场景。不过如今的木马已经没有了好看的外表,也变得更加隐蔽了。因此现在木马的定义已经变为:通过网络潜入并隐藏在操作系统中,伺机窃取或者通过网络非法获得用户私密数据的一类恶意软件。
现在的木马定义我们很难和木马屠城的故事联系在一起,而更容易想到的是间谍,那是因为木马从诞生到现在,已经发生了很大的变化,离木马的形象越来越远了。因此,只有了解了木马病毒的形态,才能真正了解木马病毒的含义。
最早的木马病毒不如现在的复杂,它是一些虚假的登录程序,这种程序首先被人为或者通过网络释放到计算机中自动运行,它会先于系统运行,运行时产生一个系统登录界面,当用户在这个界面里输入用户名和密码时,它也许会弹出密码错误提示,要求用户重新输入,或者会直接帮助用户调用真正的系统登录框。不管是哪种情况,木马都只有一个目的,就是获得用户的登录账号和密码,之后会通过邮件或者网络传回指定的地址,可以说木马天生就带着强烈的目的性。
(2)木马变迁
纵观木马本身的发展,也经历了三个阶段。第一个阶段是信息盗取。在互联网发展的初期阶段,木马程序以信息盗取为主要目的,其中也经历了三波浪潮。第一波浪潮是QQ盗号。随着QQ聊天软件的流行,首先出现了盗取QQ聊天记录的木马;随着QQ收费和QQ人数的增多,低位数的QQ号逐渐成为身份的象征,于是出现了盗取QQ号码的盗号木马。第二波浪潮是网游盗号。随着网络游戏的流行,虚拟财产开始出现,于是便出现了盗取网游账号、获取虚拟财产的网游木马。第三波浪潮是网银盗号。随着网上银行业务的开展,大量盗取网银账号与密码的网银木马开始涌现。
第二个阶段是远程控制。在2008年之后,随着“灰鸽子”病毒的剿灭,地下黑产开始正式浮出水面,随后出现了僵尸网络与DDoS攻击,于是木马开始与黑产相结合,大量网页挂马与网络钓鱼出现,导致这一时期的木马主流形态都是控制用户计算机。
该时期的木马病毒与黑客程序多半成对出现,也就是说这类程序有两个完整的部分。从技术上讲,一部分称作服务器端(Server),另一部分称作客户端(Client)。服务器端部分被反病毒界叫作木马,这部分很小,往往只有几万字节,如果用户不慎点击运行后,这部分会自动消失,其实它是将自己拷贝到用户的系统目录并驻留内存,在用户计算机中建立起一个可以直接和外部网络沟通的通道,然后等待远程客户端的连接。这就等于给用户计算机开了一个用户并不知情的后门,后果可想而知。而客户端部分本身很庞大,因为它有复杂的操作界面,它不会潜入用户系统,而是留在病毒制作者的手中,这部分被反病毒界称为“黑客程序”。
客户端本身有查找远程服务器端木马的能力,因为它们之间有一套自定义的通信协议,当找到远程的木马后,客户端的拥有者就可以通过这个复杂的操作界面执行各种功能。比如可以任意浏览、下载用户硬盘上的文件;可以监控用户屏幕,用户在计算机上的每一步操作都会通过截屏的方式发回;当然还可以远程使用户计算机自动重启或者死机。中了木马的用户计算机不但会像没有门的房屋,任由黑客出入,还会像着了魔一样随时撒癔症,出现各种奇怪的症状。
第三个阶段是高级攻击。在2014年之后,木马基本上成为黑客组织和黑产组织必备的武器,一些高级形态的木马开始成为主流。如在APT攻击过程中负责进行远程控制的“APT木马”、利用漏洞占用企业云服务器资源来挖取数字货币的“挖矿木马”、利用漏洞占用企业云服务器资源并向其他服务器发起DDoS攻击的“流量木马”、发起供应链攻击的“供应链木马”等。
(3)木马防治
虽然木马是绝对数量最多的病毒种类,但是木马讲究的是隐蔽性,因此对系统资源占用很低。另外,木马病毒有一个最大的弱点,就是文件自身的哈希值是固定的,因此清除起来最简单,直接删除文件即可。目前反病毒领域的“云查杀”技术就是对付木马病毒最有效的武器。
4.穿越环境的脚本病毒
由于脚本语言是跨平台的,因此脚本病毒也是跨平台的。
(1)脚本病毒往事
脚本病毒最早可以追溯到1999年的“美丽莎”病毒。脚本病毒的出现使得病毒编写的门槛大大降低了,稍具计算机知识的用户经过简单的学习就可以轻松编写出这种病毒,而且破坏性一点儿不比传统的病毒差。脚本病毒也像其他病毒一样,随着技术的发展不断地产生着新种类。
最早的脚本病毒只有一种,就是利用微软Office系统提供的宏功能编制的病毒,通常被称作“宏病毒”,后来,随着JS、VBS、PS这样真正的脚本编程语言的出现,脚本病毒这个名称才被正式提出来。
(2)脚本病毒变迁
在宏病毒之后,出现了各种感染HTML网页文件的脚本病毒,如“欢乐时光”病毒,它采用VBS脚本语言进行编写,隐藏在网页中,当用户中了该病毒之后,病毒便会将用户系统里的所有网页文件都感染上病毒代码。该病毒不但可以在传染的过程中改变大小,还能将自己作为信件的模板文件发送出去。
后来,脚本病毒成了木马病毒的帮凶。编写病毒离不开编程语言,而编程语言的一个基本规律是:编程语言越高级,编程就越简便,但是能实现的底层功能就越有限,因为语言被层层封装,已经失去了灵活性。脚本语言是封装级别最高的语言,它本身的破坏是比较有限的,因此脚本病毒就甘居幕后,做起了木马病毒的帮凶。这类病毒首先会给用户发送一些带有诱惑性标题的邮件,当你感兴趣并链接那个网址时,就落入了病毒的圈套。该网址的首页就是一个脚本病毒,它一般会利用系统的网页漏洞偷偷地给用户系统安装一个木马,或者告诉用户缺少一个插件,希望用户点击下载,其实这个插件就是一个木马病毒。当木马病毒溜进用户系统后就开始完成开后门、偷密码等“地下”工作,给用户带来很大的安全隐患。
近两年,则出现了新的脚本病毒形式—PowerShell脚本病毒。PowerShell是微软公司于2006年第四季度正式发布的一款功能强大的应用于服务器领域的脚本语言,使用.NET强大的类库,能够完成许多高难度的工作。PowerShell在2016年开源,成为跨Windows、Linux、macOS三大操作系统的超级脚本解释器,最新版本是7.3。
由于PowerShell功能强大、易于编写,于是利用该脚本的病毒开始大量出现。这类病毒目前在企业内网比较普遍,跟上面介绍的模式一样,脚本病毒自己不再作为独立传播源,而是跟木马病毒一起,完成一些更复杂的动作。这类脚本病毒的出现往往伴随着木马病毒。
(3)脚本病毒防治
脚本病毒文件跟木马病毒文件一样,都是可以直接删除的。但是脚本病毒由于是由文本字符组成的,多一些空格和空行并不影响脚本程序的解释与执行,但是文件的哈希值就会发生变化,因此自动化清除脚本病毒的最有效手段是脚本病毒识别引擎,利用“云查杀”技术会带来大量的漏报问题。
5.野蛮生长的流氓软件
在没有出现流氓软件这个称呼之前,大家熟知的是“X-Ware”,即间谍软件、色情软件、广告软件、行为记录件的总称,是指通过网页传播的一些插件型程序。这类程序会利用浏览器、网页等漏洞潜入用户的系统中,在用户启动网页时,自动将用户引导到一些特定的页面上,有些甚至还能自动上网,通过用户银行账户直接划款,给用户带来经济损失。
(1)流氓软件往事
2005年前后,一些中文上网插件等软件引发了所有反病毒厂商的声讨,成了全社会的焦点,引发了业内熟悉的“流氓软件大战”。随后当时的反病毒领导厂商瑞星公司联合了软件行业协会,发起了一场声势浩大的反流氓软件运动,并联合十几家互联网企业共同签署了“行业自律条约”,流氓软件的名称便从这时正式出现,这些历史性事件将“流氓软件”推上了一个前所未有的热度。
这类插件没有正常的安装界面,不能正常卸载,或者为用户的卸载设置很多障碍,目的就是尽可能地占据用户计算机。这类软件往往由正规公司编写,本身还具有一些实用的特性,只不过由于它们太不友好,用户不想安装的时候它会自动给用户装上,用户想卸载的时候又不好卸载,即使用户卸载了,它还会在系统中留下一副“马甲”,当用户连接网络时自动激活。对于这类软件,用户虽然喜欢它们提供的功能,但是不喜欢其“人品”—就像是对用户计算机“耍流氓”。因此,这类软件被形象地称为“流氓软件”。
(2)流氓软件含义
我们通过当时几家权威机构对流氓软件的定义,可以感受一下流氓软件的真实内涵。中国互联网协会认为,流氓软件是指在未明确提示用户或未经用户许可的情况下,在用户计算机或其他终端上安装运行,侵犯用户合法权益的软件,但已被我国现有法律法规规定的计算机病毒除外。
ITwiki认为流氓软件是中国对网络上散播的符合如下条件(主要是第一条)的软件的一种称呼:①采用多种社会和技术手段,强行或者秘密安装,并抵制卸载;②强行修改用户软件设置(如浏览器主页、软件自动启动选项、安全选项),强行弹出广告,或者有其他干扰用户、占用系统资源的行为;③有侵害用户信息和财产安全的潜在因素或者隐患;④未经用户许可,或者利用用户疏忽,或者利用用户缺乏相关知识,秘密收集用户个人信息、秘密和隐私。
中国反流氓软件联盟认为凡是具有以下流氓行径的软件均属于流氓软件:①强行侵入用户计算机,无法卸载;②强行弹出广告,借以获取商业利益;③有侵害用户的虚拟财产安全的潜在因素;④偷偷收集用户在网上消费时的行为习惯、账号密码。
通过上面的定义可以看到,流氓软件实质上是指一些恶意推广的商业型软件,与传统的X-Ware不同的是,它利用了更强的技术。
(3)流氓软件技术
流氓软件往往会使用隐藏技术。隐藏是流氓软件的天性,也是病毒的一个特征,任何流氓软件都希望在用户的计算机中隐藏起来不被发现。首先是隐藏窗口,它们在运行时会将自己的程序窗口属性设为“不可见”。对于专业用户来说,虽然程序窗口不可见,但是程序产生的进程却很容易通过系统的任务管理器看到,因此便出现了隐藏进程技术。同时流氓软件还会采用隐藏文件技术,在安装时将自身拷贝到系统目录,然后将文件的属性设置为隐藏。
流氓软件还会采用线程插入技术。线程是Windows系统为程序提供的并行处理机制,它允许一个程序在同一时间建立不同的线程,完成不同的操作。另外Windows操作系统为了提高软件的复用性,将一些公用的程序放在动态链接库(DLL)文件中,因此每一个可执行程序除了自身的程序体外,还包括许多外部的模块。流氓软件正是利用了这一点。它们的可执行程序不是EXE形式的,而是DLL形式的,它们通过“线程插入”的方式,插入某个进程的地址空间。一般地,如果流氓软件想控制浏览器,则它们往往会将自己注入浏览器(explorer.exe)的进程空间,只要浏览器运行,就会自动调用该流氓软件。
流氓软件还会采用Rootkit技术。线程插入对于普通用户来说很难处理,但是对于杀毒软件来说却非常简单,于是为了能够躲避杀毒软件的查杀,流氓软件开始采用Rootkit技术。
流氓软件还会采用“借尸还魂”的碎片技术。这种技术的思想很简单,就是在进入用户系统时,产生多个相同或不同的碎片文件,这些文件除了分布在系统目录、一些盘符的根目录下,它们还会隐藏在其他软件的目录、临时文件夹甚至系统的“回收站”里。这些碎片文件之间互相保护,一旦一个文件碎片被删除了,另外一些碎片就会重新将这个文件恢复。如果系统中存在这样的碎片文件,这些碎片文件只要有一个能够激活,在用户连接网络的时候,就能够通过网络进行升级,从而重新还原成一个完整的流氓软件体系。而且一旦升级,这些新升级的流氓软件还会将这些碎片文件删除,然后产生新的碎片文件,能够在一定程度上躲避反病毒软件的查杀。有的流氓软件有多达数十个碎片文件,这对于采用手动清除方式的用户来说,几乎是不可能彻底清除的,即便是杀毒软件,也未必能将数十个碎片文件都一一识别出来,因此会产生杀不干净的问题。即使是只剩下一个碎片,流氓软件也可以通过升级和下载“借尸还魂”。
(4)流氓软件防治
从上面的介绍可以看出,流氓软件是极难进行手工清除的,而今天很多安全产品里都有一个“插件清理”功能,就是用来对付难以清除的“插件型”流氓软件的。现在,已经有越来越多的病毒开始采用流氓软件的这些高级技术,因此今天的病毒对抗局面会更加复杂。
流氓软件泛滥的时代虽然早已过去,但是它毕竟是中国互联网发展史上的一个标志性事件,时至今日,我们可以将流氓软件看成是中国互联网蛮荒时代企业野蛮生长的一个时代缩影。
可能大家并不清楚,病毒样本数量的增长,也能对整个反病毒技术发展产生明显的影响。接下来,我们从病毒样本数量的角度来看一下病毒的整体发展趋势和病毒数量驱动反病毒技术发展的逻辑(如图3-6所示)。
图3-6 病毒样本数量变化趋势
从1986年第一个病毒开始,我们来看看病毒数量的变化。1996年全球病毒样本2万种,2006年全球病毒样本40万种,2016年全球病毒样本120亿种,而2018年及以后全球病毒样本总量则更是达到了几百亿种,日均产生新样本数百万种。
安全是一个工程化的技术,所以从病毒数量暴涨的几个分界点上,就可以简单看出反病毒技术的几个明显变化趋势。第一个时间分界点是1996年,病毒样本达到2万种,在此之前,病毒数量较少,所以杀毒软件就是一个病毒样本的批处理集合,一个病毒一段查杀代码。但是随着病毒样本的增多,反病毒厂商开始研究一些通用的方法来解决大量病毒的查杀问题,于是病毒特征库的概念就出现了。这时候就出现了引擎的概念,引擎负责病毒识别逻辑,特征库负责病毒识别依据,只要提取得当,一条病毒特征就可以查杀上百个乃至上万个病毒样本。
第二个时间分界点是2008年。2006年之前病毒数量是数以十万计,那时需要一个病毒分析团队来对病毒样本进行全球范围的收集、分析和提取特征。但是随着互联网的发展,2008年之后,病毒样本数量突然激增至千万量级,这时你会发现,无论你建立多大规模的病毒分析团队,也无法分析完新产生的样本,于是就产生了“云查杀”核心技术的变革。
“云查杀”是一套对抗病毒样本数量激增状况的基于互联网思维的技术解决方案,本身包括自动化分析和云鉴定两大部分。自动化分析就是利用一些自动化手段,自动判断样本是否是病毒,并将病毒样本的指纹特征直接提取出来的过程,而云鉴定则是将特征库保留在云端,不下放到本地,当本地扫描发现不能识别的样本时,就直接连接云端进行云端鉴定。这种做法,有效地降低了本地特征库的尺寸和资源消耗,已经成为主流的反病毒技术。
而且这么大的样本量级,也给传统的基于特征的精确匹配技术带来了巨大的挑战,于是启发式技术、机器学习这类模糊匹配技术得到了发展。目前大量的病毒样本都是通过这些模糊匹配模型进行识别的,在样本数量激增之前,大家还在提倡单引擎技术,即一个反病毒产品一个引擎,但是在样本数量激增之后,单引擎技术已经不能很好地应对样本数量激增的现实了,因此安全厂商都默认采用多引擎技术来解决病毒数量激增的问题。
目前,病毒样本情报在全世界范围内还处于割裂状态,没有统一,因此就像前面“测试悖论”里讲的,客户组织的小样本集测试没有意义。另外,病毒样本本身也没有标准的危险等级评定,就连病毒样本的命名也没有统一的规范。不过,全球的反病毒厂商提供的样本的命名结构是大致相同的。我们往往可以通过病毒名称来判断该病毒的基本特性,从而辅助我们做安全决策,下面是业内通用的病毒命名格式(如图3-7所示)。
图3-7 业内通用的病毒命名格式
病毒采用分段式命名方式,每段之间用符号“.”或“:”来连接。前四段为必选项,第五段为扩展字段,该字段由各安全厂商自行定义。扩展字段为可选项,主要用于标识其他重要信息或中文通用名称,扩展字段可以为多组。图3-7方框里是一些反病毒公司的命名例子,可以用来感受一下风格的差异,下面就介绍一下每个字段的含义。
“类型标识”就是前面介绍的行为特性分类法里的那几种,见3.2.2节。
“环境标识”则分三大类:操作系统环境、脚本环境、宏病毒环境。
其中操作系统环境标识大致有以下内容:
● WinCE
● Unix
● Solaris
● QNXS
● OS2
● BeOS
● DOS
● IRIX
● FreeBSD
● EPOC
● Win9x
● Win64
● Win32
● Win16
● Linux
● Mac
● DOS32
● Novell
● SymbOS
● SunOS
● Palm
其中脚本环境标识有以下内容:
● Perl
● WinINF
● WinREG
● WScript
● BAT
● BAS
● HTML
● PHP
● Python
● JS
● ASP
● VBS/WBS
● CSC
● HTA
● TSQL
● Ruby
● SAP
● Java
● IRC
● Macro
● Script
● ABAP
● ALS
● SQL
● MSIL
其中宏病毒环境标识有以下内容:
● M for Word1Macro
● W2M for Word2Macro
● WM for Word 95 macros
● XM for Excel 95 macros
● W97M for Word 97/2000/XP/2003 macros
● X97M for Excel 97/2000/XP/2003 macros
● PP97M for PowerPoint 97/2000/XP/2003 macros
● P98M for Project 98/2000/XP/2003 macros
● A97M for Access 97/2000/XP/2003 macros
● V5M for Visio5 macros
● O97M for Office 97 macros (affects Word, Excel, Powerpoint)
● OpenOM for OpenOffice Macro
● XF for Excel Formula
● HE for some macro scripting (Autocad possibly)
“家族标识”就是我们常说的病毒名称,该字段是病毒之间最本质的区别,是病毒真正的名字,也是各个反病毒厂商最不统一的地方。一般地,反病毒工程师会通过病毒的特性、文件特征、代码编写习惯等多种因素来确定病毒的家族。比如CIH病毒就是在病毒体内有一个特殊的字符串“CIH”,因此而得名。
“变种标识”是同一种病毒家族的不同版本,由于整体差异很小,因此会用单字母或叠字母的方式来命名,如果变种不超过26个,就从A到Z进行命名,如果超过26个,就用AA-ZZ这样的命名方式。
由于病毒完整名称的每一个分段都有明确的含义,因此看到病毒名称,就能大致推断出该病毒的特性。例如:Trojan. Win32. Dropper.B就是一个在32位Windows平台下的木马病毒,该木马病毒运行时就是释放出其他恶意软件,这个病毒是该病毒家族的第二个变种。
不过,实际上随着多引擎的应用,随着机器学习技术的应用,病毒命名将会越来越乱,而且可读性会越来越差。比如图3-7中Mcafee:the Generic PWS.ao trojan这个名称,它是“迈克菲”(Mcafee)公司的一个病毒命名,Generic是机器学习提取的特征标识,从这个命名可以看出,它是一个通用的盗取密码的木马,而且变种已经超过26种。
接下来,我们看看病毒的演变历史和演化逻辑。病毒的演化是与IT基础设施的演化和互联网的演化息息相关的。不同的IT环境会孕育不同的病毒形态,互联网发展的不同阶段也会产生不同的病毒形态。在三十多年的魔道之争中,病毒共经历了单机化、网络化、商业化、高级化四个时代。
1.单机化
大约从1986年到1996年,病毒主要寄生于DOS操作系统之下,而IT环境主要以单机为主,因此这一时期也被称为DOS病毒时代,病毒主要通过软盘介质进行传播。DOS病毒是指寄生于微软16位操作系统的病毒,它以DOS操作系统为代表,从通过引导区传播的第一个病毒“大脑”,到第一个通过文件传播的“黑色星期五”,从可以产生无数变种的“幽灵王”,再到利用驱动原理使硬件防毒卡失效的“DIRII”,病毒不断翻新着编写技术,每一次病毒的爆发都是一次病毒技术的盛宴。
一方面,病毒的确迫使反病毒工作者不断突破固有思维,研制出更新的病毒反制技术;另一方面,病毒的某些技术确实也曾经应用于商业领域,例如病毒在内存方面的处理被当时许多游戏厂商借鉴,做出了更加华丽的游戏效果。由于操作系统本身的脆弱性,这个时期的病毒出现了“百家争鸣”的局面,这一时期最典型的特征就是感染式病毒繁荣。
2.网络化
从1996年到2004年,局域网已经非常普遍,而互联网也处在井喷的前夜,这时候Windows操作系统大行其道,因此该时期也被称为Windows病毒时代。微软Windows操作系统揭开了32位计算的面纱,把保护模式引入操作系统的开发中,在成就了Windows 9X系列操作系统史无前例的安全性外,也将复杂性引入程序开发中,于是DOS病毒开始消亡。
CIH病毒的爆发标志着病毒开始进入Windows平台时代,它不但证明了在32位平台下完全有可能出现内存式的病毒,还证明了在该平台下运行的病毒将会有更强的破坏性,因为它是第一个可以将主板引导芯片内容擦除的病毒,也是第一个能够删除硬盘数据的病毒。这在当时的说法是烧主板、破坏硬盘。因为在病毒爆发的早期,人们遇到这种情况唯一能做的就是更换主板,而被擦除的硬盘里的数据要想恢复,只能求助于专业的硬盘数据恢复公司,在CIH爆发后的十年间,硬盘数据恢复也形成了一个庞大的产业,在北京中关村电子城的各个角落,都有专业恢复硬盘数据的工作室。
接下来,以网络传播为目的的蠕虫类病毒(如冲击波、震荡波、红色代码)开始全球泛滥,这一时期最典型的特征就是蠕虫繁荣。
3.商业化
互联网经历了2000年的泡沫期,从2004年开始,随着Web 2.0的到来开始复苏,直到2013年左右,这段时期可以称为病毒的商业化时代。这段时间里,主流的病毒包括以虚拟财富为目的的各类盗号木马、以网络控制为目的的专项木马、以恶意推广为目的的流氓软件、以黑产为目的的下载木马等。
这一时期是前面提到的病毒数量激增的时代,也是免费安全时代。个人杀毒软件开始完全免费,而云查杀技术开始超越传统特征码技术的地位,成为主流反病毒技术。这一时期最典型的特征就是木马繁荣。
4.高级化
2013年之后,高级可持续威胁(Advanced Persistent Threat, APT)正式进入安全视野,出现了“APT木马”,而这个时期出现的全流量分析技术、沙箱技术,就是为了对付这类病毒威胁。
接着,云计算成为产业新地标,各个云厂商都开始补贴用户,于是针对公有云环境的“流量木马”和“挖矿木马”开始泛滥。流量木马是试图入侵公有云租户的服务器,入侵成功后会将公有云租户的服务器变成“肉鸡”,利用服务器随时在线的性质和充足的带宽资源,发起DDoS攻击。挖矿木马是入侵公有云租户的服务器后,利用服务器的计算资源产生数字货币,木马始作俑者从中获利。
2014年出现了“敲诈者”病毒,2017年出现了“永恒之蓝”,勒索病毒则是目前病毒发展的最高级形态。勒索病毒通过“高阶加密—加密网络传输—比特币支付”的手法,形成了全通道产业链。运行时将入侵计算机上的所有文档都进行加密,并且采用非对称的技术,一次一密,保证每台计算机的解密密码不同,要想解密,就必须通过加密网络传输的方式来支付比特币赎金,而且整个过程还无法追溯和破解。勒索病毒自产生开始,已经有近百个家族。
软件供应链攻击也是最近几年出现的新型攻击手段,它是指利用软件供应商与最终用户之间的信任关系,在合法软件正常传播和升级过程中,利用软件供应商的各种疏忽或漏洞,对合法软件进行劫持或篡改,从而绕过传统安全产品检查而达到非法目的的攻击类型。
综上所述,APT木马、流量木马、挖矿木马、勒索软件和供应链攻击是病毒发展的最新形态,这类病毒也被统称为“高级威胁”,因为发现、清除和防治都需要使用新型的威胁对抗思想与综合的技术手段。