7.1 恶意代码防护
7.1.1 恶意代码概述
恶意代码又称为恶意软件,是指能够在计算机系统中进行非授权操作的代码。2019年1月,国家互联网应急中心在全国范围内继续开展计算机恶意程序传播渠道安全监测工作,判定计算机恶意程序303 个,其中,木马类占 49.5%,蠕虫类占 21.1%,病毒类占15.5%,后门类占6.6%,广告类占2.3%,信息窃取类占 2.0%,风险类占 1.7%,黑客工具类占1.3%,分布如图7-1所示。
图7-1 计算机恶意程序传播渠道
1.恶意代码的分类
恶意代码分类的标准主要是代码的独立性和自我复制性,独立的恶意代码是指具备一个完整程序所应该具有的全部功能,能够独立传播、运行的恶意代码,这样的恶意代码不需要寄宿在另一个程序中。非独立恶意代码只是一段代码,必须嵌入某个完整的程序中,作为该程序的一个组成部分进行传播和运行。对于非独立恶意代码,自我复制过程就是将自身嵌入宿主程序的过程,这个过程也称为感染宿主程序的过程。对于独立恶意代码,自我复制过程就是将自身传播给其他系统的过程。如图7-2所示,图中称为“病毒”的恶意代码是同时具有寄生和感染特性的恶意代码,称为狭义病毒。习惯上,把一切具有自我复制能力的恶意代码统称为病毒。为和狭义病毒相区别,将这种病毒称为广义病毒。
图7-2 恶意代码的分类
1)后门
后门是某个程序的秘密入口,通过该入口启动程序,可以绕过正常的访问控制过程,因此,获悉后门的人员可以绕过访问控制过程,直接对资源进行访问。后门已经存在很长一段时间,原先的作用是程序员开发具有鉴别或登录过程的应用程序时,为避免每一次调试程序时都需输入大量鉴别或登录过程中需要的信息,通过后门启动程序的方式来绕过鉴别或登录过程。
2)逻辑炸弹
逻辑炸弹是包含在正常应用程序中的一段恶意代码,当某种条件出现,如到达某个特定日期、增加或删除某个特定文件等,将激发这一段恶意代码,执行这一段恶意代码将导致非常严重的后果,如删除系统中的重要文件和数据、使系统崩溃等。历史上不乏程序设计者利用逻辑炸弹讹诈用户和报复用户的案例。
3)特洛伊木马
特洛伊木马也是包含在正常应用程序中的一段恶意代码,一旦执行这样的应用程序,将激发恶意代码。这一段恶意代码的功能主要在于削弱系统的安全控制机制,如在系统登录程序中加入后门,以便黑客能够绕过登录过程直接访问系统资源;将共享文件的只读属性修改为可读写属性,甚至允许黑客通过远程桌面这样的工具软件控制系统。
4)病毒
这里的病毒是狭义上的恶意代码类型,单指那种既具有自我复制能力,又必须寄生在其他应用程序中的恶意代码。它和后门、逻辑炸弹的最大不同在于自我复制能力,通常情况下,后门、逻辑炸弹不会感染其他实用程序,而病毒会自动将自身添加到其他应用程序中。
5)蠕虫
从病毒的广义定义来说,蠕虫也是一种病毒,但它和狭义病毒的最大不同在于自我复制过程,病毒的自我复制过程需要人工干预,无论是运行感染病毒的实用程序,还是打开包含宏病毒的邮件,都不是由病毒程序完成的。蠕虫能够完成下述步骤:
(1)查找远程系统:能够通过检索已被攻陷系统的网络邻居列表或其他远程系统地址列表找出下一个攻击对象。
(2)建立连接:能够通过端口扫描等操作过程自动和被攻击对象建立连接,如 Telnet连接等。
(3)实施攻击:能够自动将自身通过已经建立的连接复制到被攻击的远程系统,并运行。
6)Zombie
Zombie(俗称僵尸)是一种秘密接管其他连接在网络上的系统,并以此系统为平台发起对某个特定系统的攻击功能的恶意代码。其主要用于定义恶意代码的功能,并没有涉及该恶意代码的结构和自我复制过程。
2.恶意代码的危害
恶意代码问题,不仅使企业和用户蒙受巨大的经济损失,而且使国家的安全面临着严重威胁。1991 年的海湾战争是美国第一次公开在实战中使用恶意代码攻击技术取得重大军事利益,从此恶意代码攻击成为信息战、网络战重要的入侵手段之一。恶意代码问题无论从政治上、经济上,还是军事上,都成为信息安全面临的首要问题。恶意代码的危害主要表现在以下几个方面:
(1)破坏数据:很多恶意代码发作时直接破坏计算机的重要数据,所利用的手段有格式化硬盘、改写文件分配表和目录区、删除重要文件或用无意义的数据覆盖文件等。
(2)占用磁盘存储空间:引导型病毒的侵占方式通常是病毒程序本身占据磁盘引导扇区,被覆盖扇区的数据将永久性丢失、无法恢复。文件型病毒利用一些 DOS 功能进行传染,检测出未使用空间把病毒的传染部分写进去,所以一般不会破坏原数据,但会非法侵占磁盘空间,文件会不同程度地加长。
(3)抢占系统资源:大部分恶意代码在动态下是常驻内存的,必然抢占一部分系统资源,致使一部分软件不能运行。恶意代码总是修改一些有关的中断地址,在正常中断过程中加入病毒体,干扰系统运行。
(4)影响计算机的运行速度:恶意代码不仅占用系统资源覆盖存储空间,还会影响计算机的运行速度。比如,恶意代码会监视计算机的工作状态,伺机传染激发;还有些恶意代码会为了保护自己,对磁盘上的恶意代码进行加密,CPU 要执行解密和加密过程,额外多执行了上万条指令。
7.1.2 恶意代码防范技术
为了确保系统的安全与畅通,已有多种恶意代码的防范技术,如恶意代码分析技术、误用检测技术、权限控制技术和完整性技术等。
1.恶意代码分析技术
恶意代码分析是一个多步程,其深入研究恶意软件结构和功能,有利于对抗措施的产生。按照分析过程中恶意代码的执行状态可以把恶意代码分析技术分成静态分析技术和动态分析技术两大类。
1)静态分析技术
静态分析技术就是在不执行二进制程序的条件下,利用分析工具对恶意代码的静态特征和功能模块进行分析的技术。该技术可以找到恶意代码的特征字符串、特征代码段等,由于恶意代码从本质上说是由计算机指令构成的,因此根据分析过程是否考虑构成恶意代码的计算机指令的语义,可以把静态分析技术分成以下两种:
(1)基于代码特征的分析技术。在基于代码特征的分析过程中,不考虑恶意代码的指令意义,而是分析指令的统计特性、代码的结构特性等。比如,在某个特定的恶意代码中,这些静态数据会在程序的特定位置出现,并且不会随着程序副本而变化,所以完全可以使用这些静态数据和其出现的位置作为描述恶意代码的特征。
(2)基于代码语义的分析技术。基于代码语义的分析技术要求考虑构成恶意代码的指令含义,通过理解指令语义建立恶意代码的流程图和功能框图,进一步分析恶意代码的功能结构。
采用静态分析技术来分析恶意代码最大的优势是可以避免恶意代码执行过程对分析系统的破坏。但是其本身存在以下两个缺陷:
① 由于静态分析本身的局限性,导致出现问题的不可判定。
② 绝大多数静态分析技术只能识别出已知病毒或恶意代码,对多态变种和加壳病毒则无能为力。无法检测未知的恶意代码是静态分析技术的一大缺陷。
2)动态分析技术
动态分析技术是指恶意代码执行的情况下,利用程序调试工具对恶意代码实施跟踪和观察,确定恶意代码的工作过程,对静态分析结果进行验证。根据分析过程中是否需要考虑恶意代码的语义特征,将动态分析技术分为以下两种:
(1)外部观察技术。外部观察技术是指利用系统监视工具观察恶意代码运行过程中系统环境的变化,通过分析这些变化判断恶意代码功能的一种分析技术。
① 通过观察恶意代码运行过程中系统文件、系统配置和系统注册表的变化就可以分析恶意代码的自启动实现方法和进程隐藏方法:由于恶意代码作为一段程序在运行过程中通常会对系统造成一定影响,有些恶意代码为了保证自己的自启动功能和进程隐藏功能,通常会修改系统注册表和系统文件,或者会修改系统配置。
② 通过观察恶意代码运行过程中的网络活动情况可以了解恶意代码的网络功能。恶意代码通常会有一些比较特别的网络行为,比如,通过网络进行传播、繁殖和拒绝服务攻击等破坏活动,或者通过网络进行诈骗等犯罪活动及通过网络将搜集到的机密信息传递给恶意代码的控制者,又或者在本地开启一些端口、服务等后门等待恶意代码控制者对受害主机的控制访问。
(2)跟踪调试技术。跟踪调试技术是指通过跟踪恶意代码执行过程中使用的系统函数和指令特征分析恶意代码功能的技术。在实际分析过程中,跟踪调试可以有两种方法:
① 单步跟踪恶意代码执行过程,即监视恶意代码的每一个执行步骤,在分析过程中也可以在适当的时候执行恶意代码的一个片段,这种分析方法可以全面监视恶意代码的执行过程,但是分析过程相当耗时。
② 利用系统 hook 技术监视恶意代码执行过程中的系统调用和 API 使用状态来分析恶意代码的功能,这种方法经常用于恶意代码检测。
2.特征码检测技术
基于特征码的检测是目前检测恶意代码最常用的技术,主要源于模式匹配的思想。其检测过程中根据恶意代码的执行状态又分为静态检测和动态检测:静态检测是指脱机对计算机上存储的所有代码进行扫描;动态检测则是指实时对到达计算机的所有数据进行检查扫描,并在程序运行过程中对内存中的代码进行扫描检测。特征码检测的实现流程如图7-3所示。
图7-3 特征码检测的实现流程
特征码检测的实现过程为:根据已知恶意代码的特征关键字建立一个恶意代码特征库;对计算机程序代码进行扫描;与特征库中的已知恶意代码关键字进行匹配比较,从而判断被扫描程序是否感染恶意代码。
特征码检测技术目前被广泛应用于反病毒软件中。早期的恶意代码主要是计算机病毒,其主要感染计算机文件,并在感染文件后留有该病毒的特征代码。通过扫描程序文件并与已知特征值相匹配即可快速、准确地判断出是否感染病毒,并采取对应的措施清除该病毒。随着压缩和加密技术的广泛采用,在进行扫描和特征值匹配前,必须对压缩和加密文件先进行解压和解密,然后进行扫描。而压缩和加密方法多种多样,这就大大增加了查毒处理的难度,有时甚至根本不能检测。
3.权限控制技术
恶意代码要实现入侵、传播和破坏等必须具备足够权限。首先,恶意代码只有被运行才能实现其恶意目的,所以恶意代码进入系统后必须具有运行权限。其次,被运行的恶意代码如果要修改、破坏其他文件,则必须具有对该文件的写权限,否则会被系统禁止。另外,如果恶意代码要窃取其他文件信息,其必须具有对该文件的读权限。
权限控制技术通过适当控制计算机系统中程序的权限,使其仅仅具有完成正常任务的最小权限,即使该程序中包含恶意代码,该恶意代码也不能或不能完全实现其恶意目的。通过权限控制技术来防御恶意代码的技术主要有以下两种。
1)沙箱技术
沙箱技术是指系统根据每个应用程序可以访问的资源,以及系统授权给该应用程序的权限建立一个属于该应用程序的“沙箱”,限制恶意代码运行。每个应用程序及操作系统和驱动程序都运行在自己受保护的“沙箱”中,不能影响其他程序的运行,也不能影响操作系统的正常运行。沙箱技术实现的典型实例就是由加州大学伯克利实验室开发的一个基于 Solaris 操作系统的沙箱系统。该系统首先为每个直用程序建立一个配置文件,在配置文件中规定了该应用程序可以访问的资源和系统赋予的权限。当应用程序运行时,通过调用系统底层函数解释执行,系统自动判断应用程序调用的底层函数是否符合系统的安全要求,并决定是否执行。
2)安全操作系统
恶意代码要实现成功入侵的重要一环,就是其必须使操作系统为其分配系统资源。如果能够合理控制程序对系统的操作权限,则程序对系统可能造成的破坏将被限制。安全操作系统具有一套强制访问控制机制,它首先将计算机系统划分为3个空间:系统管理空间、用户空间和保护空间。其次将进入系统的用户划分为不具有特权的普通用户和系统管理员两类。系统用户对系统空间的访问必须遵循以下原则:
(1)系统管理空间不能被普通用户读写,而用户空间包含用户的应用程序和数据,可以被用户读写。
(2)保护空间的程序和数据不能被用户空间的进程修改,但可以被用户空间的进程读取。
(3)一般通用的命令和应用程序放在保护空间内,供用户使用。由于普通用户对保护空间的数据只能读不能写,从而限制了恶意代码的传播。
(4)在用户空间内,不同用户的安全级别不同,恶意代码只能感染同级别用户的程序和数据,限制了恶意代码的传播范围。
4.完整性技术
完整性技术就是通过保证系统资源,特别是系统中重要资源的完整性不受破坏,来阻止恶意代码对系统资源的感染和破坏。运用校验和法检查恶意代码有3种方法:
(1)在恶意代码检测软件中设置校验和法。对检测的对象文件计算其正常状态的校验和并将其写入被查文件或检测工具中,然后进行比较。
(2)在应用程序中嵌入校验和法。将文件正常状态的校验和写入文件本身,每当应用程序启动时,比较现行校验和与原始校验和,实现应用程序的自我检测功能。
(3)将校验和程序常驻内存。当应用程序开始运行时,自动比较检查应用程序内部或别的文件中预留保存的校验和。
校验和法能够检测未知恶意代码对目标文件的修改,但存在两个缺点:①校验和法实际上不能检测目标文件是否被恶意代码感染,其只是查找文件的变化,并且即使发现文件发生了变化,也既无法将恶意代码消除,又不能判断所感染的恶意代码类型;②校验和法常被恶意代码通过多种手段欺骗,使之检测失效,而误判断文件没有发生改变。在恶意代码对抗与反对抗的发展过程中,还存在其他一些防御恶意代码的技术和方法,如常用的有网络隔离技术和防火墙控制技术,以及基于生物免疫的病毒防范技术、基于移动代理的恶意代码检测技术等。
7.1.3 恶意代码防护部署
本实验采用奇安信天擎终端安全管理系统。天擎终端安全管理系统是奇安信面向政府、企业、金融、军队、医疗、教育、制造业等大型企事业单位推出的集防病毒与终端安全管控于一体的解决方案。以大数据技术为支撑、以可靠服务为保障,为用户精确检测已知病毒木马、未知恶意代码,并提供终端资产管理、漏洞补丁管理、安全运维管控、网络安全准入、移动存储管理、终端安全审计等诸多功能。天擎服务器开放的端口见表7-1。
表7-1 天擎服务器开放的端口
(1)控制中心配置
CPU:普通双核以上,建议i3处理器。
内存:最低2GB,建议2GB以上。
硬盘:最低空闲空间50GB,建议空闲空间200GB以上。
(2)终端配置
CPU:P4以上处理器。
内存:不低于512MB,建议1GB以上。
硬盘:10GB以上空闲空间。
1.控制中心部署
双击“天擎服务器端”安装程序,开始安装,安装向导界面如图7-4所示。
图7-4 安装向导界面
单击“下一步”按钮开始安装向导,进入“许可协议”界面。在仔细阅读许可协议后,选择“我接受“许可证下协议”中的条款”。单击“下一步”按钮继续,选择“安装目录”。安装目录默认为“C:\Program Files (x86)\QAX\skylar6”。要安装到不同的目录,可以单击“浏览”按钮选择其他目录。完成路径设置后,单击“下一步”按钮设置标识名称。系统默认的标识名称为“奇安信天擎6.3控制中心”,你可以根据需要调整。
单击“下一步”按钮,安装向导开始安装,安装过程无须人工干预,直到出现“完成安装”的界面,如图 7-5 所示,这里有两个选项,可以根据实际情况选择,然后单击“完成”按钮结束安装。
图7-5 安装完成
完成安装后,打开浏览器,输入 http://127.0.0.1:8443 登录天擎 Web 控制台。在第一次登录控制台时,会要求导入许可证。如图7-6所示,这时可以单击“授权”按钮,在弹出的窗口中打开桌面上的“实验工具”目录内文件扩展名为“qcert”的文件。单击“打开”按钮完成许可证导入。导入许可证后,软件会自动跳转,如图7-6所示。
图7-6 导入许可证
许可证导入完成后,第一次登录天擎时强制要求初始化管理员密码,这里的密码是天擎管理员的密码,拥有天擎最高管理权限,需要设置为复杂密码,密码设置完成后,单击“确认”按钮即可,如图7-7所示。
完成密码修改后,天擎自动登录控制台,第一次登录成功后,如图7-8所示,天擎提示需要动态口令认证。如果是第一次使用天擎的动态口令,请单击“手机动态口令使用办法查看帮助”来了解动态口令如何使用。
完成动态口令输入后,自动进入天擎控制台,如图7-9所示。
图7-7 初始化管理员密码
图7-8 了解动态口令如何使用
图7-9 进入天擎控制台
2.终端部署
天擎支持多种操作系统作为自己的客户端,除常见的Windows外,还有Linux、国产操作系统等。在本节中,我们介绍 Windows 客户端安装,Windows 客户端可以直接从服务器下载安装。打开浏览器输入天擎服务器地址 http://10.3.1.2,打开页面,然后选择合适的软件包进行下载,也可以直接运行,如图7-10所示。
图7-10 安装客户端
完成客户端的安装后,重新登录控制台,选择“终端管理”→“终端概况”,然后单击这台被加入的主机,查看详细信息,如图7-11所示。
图7-11 登录控制台
安装完成后,可以对终端进行病毒查杀、安装操作系统补丁,以及管理U盘等操作。