恶意软件是指故意设计造成损害到计算机、服务器、客户端或计算机网络的软件(相比之下,软件由于一些缺陷导致无意的伤害通常被描述为软件错误)。恶意软件存在各种各样的类型,包括计算机病毒、蠕虫、特洛伊木马、勒索、间谍软件、广告软件、流氓软件和恐吓软件等。
病毒感染系统后,无疑会对系统做出各种修改和破坏。有时病毒会使受感染的系统出现自动弹出网页、占用高CPU资源、自动弹出/关闭窗口、自动终止某些进程等各种不正常现象。
下载特征
很多木马、后门程序间谍软件会自动连接到Internet某Web站点,下载其他的病毒文件或该病毒自身的更新版本/其他变种。
后门特征
后门程序及很多木马、蠕虫和间谍软件会在受感染的系统中开启 并侦听某个端口,允许远程恶意用户来对该系统进行远程操控;某些情况下,病毒还会自动连接到某IRC站点某频道中,使得该频道中特定的恶意用户远程访问受感染的计算机。
信息收集特性
QQ密码和聊天记录;网络游戏帐号密码;网上银行帐号密码;用户网页浏览记录和上网习惯;
自身隐藏特性
多数病毒会将自身文件的属性设置为“隐藏”、“系统”和“只读”,更有一些病毒会通过修改注册表,从而修改用户对系统的文件夹访问权限、显示权限等,以使病毒更加隐蔽不易被发现。
文件感染特性
病毒会将恶意代码插入到系统中正常的可执行文件中,使得系统正常文件被破坏而无法运行,或使系统正常文件感染病毒而成为病毒体;有的文件型病毒会感染系统中其他类型的文件。
Wannacry就是一种典型的文件型病毒,它分为两部分,一部分是蠕虫部分,利用windows的“永恒之蓝”漏洞进行网络传播。一部分是勒索病毒部分,当计算机感染wannacry之后,勒索病毒部分就会自动安装并且加密计算机中包括音频、图像、文档等各种类型的文件。与此同时弹出勒索框进行勒索。
网络攻击特性
木马和蠕虫病毒会修改计算机的网络设置,使该计算机无法访问网络;木马和蠕虫还会向网络中其他计算机攻击、发送大量数据包以阻塞网络,甚至通过散布虚假网关地址的广播包来欺骗网络中其他计算机,从而使得整个网络瘫痪。
爱虫病毒是一种利用Windows outlook邮件系统传播的蠕虫病毒,将自己伪装成一封情书,邮件主题设置为“I LOVE YOU”,诱使受害者打开,由此得名。当爱虫病毒运行后迅速找到邮箱通信簿里的50个联系人再进行发送传播。传播速度非常之快,致使大量电子邮件充斥了整个网络,不仅会导致邮件服务器崩溃,也会让网络受影响变慢。从而达到攻击网络的目的。
病毒
病毒是一种基于硬件和操作系统的程序,具有感染和破坏能力,这与病毒程序的结构有关。病毒攻击的宿主程序是病毒的栖身地,它是病毒传播的目的地,又是下一次感染的出发点。
计算机病毒感染的一般过程为: 当计算机运行染毒的宿主程序时,病毒夺取控制权; 寻找感染的突破口; 将病毒程序嵌入感染目标中。计算机病毒的感染过程与生物学病毒的感染过程非常相似,它寄生在宿主程序中,进入计算机并借助操作系统和宿主程序的运行,复制自身、大量繁殖。
病毒感染目标包括:硬盘系统分配表扇区(主引导区)、硬盘引导扇区、软盘引导扇区、可执行文件(.exe)、命令文件(.com)、覆盖文件(.ovl)、COMMAND文件、IBMBIO文件、IBMDOS文件。
原理:
计算机病毒感染的一般过程为: 当计算机运行染毒的宿主程序时,病毒夺取控制权; 寻找感染的突破口; 将病毒程序嵌入感染目标中。计算机病毒的感染过程与生物学病毒的感染过程非常相似,它寄生在宿主程序中,进入计算机并借助操作系统和宿主程序的运行,复制自身、大量繁殖。
蠕虫
蠕虫是主要通过网络使恶意代码在不同设备中进行复制、传播和运行的恶意代码。一个能传染自身拷贝到另一台计算机上的程序。
最初的蠕虫病毒定义是因为在D0S环境下,病毒发作时会在屏幕上出现一条类似虫子的东西,胡乱吞吃屏幕上的字母并将其改形。
永恒之蓝:2017年4月14日晚,黑客团体Shadow Brokers(影子经纪人)公布一大批网络攻击工具,其中包含"永恒之蓝"工具,"永恒之蓝"利用Windows系统的SMB漏洞可以获取系统最高权限。5月12日,不法分子通过改造"永恒之蓝"制作了wannacry勒索病毒,英国、俄罗斯、整个欧洲以及中国国内多个高校校内网、大型企业内网和政府机构专网中招,被勒索支付高额赎金才能解密恢复文件。
木马
木马是攻击者通过欺骗方法在用户不知情的情况下安装的。木马系统软件一般由木马配置程序、控制程序和木马程序(服务器程序)三部分组成。
传播过程:
黑客利用木马配置工具生成一个木马的服务端;通过各种手段如Spam、Phish、Worm等安装到用户终端;利用社会工程学,或者其它技术手段使得木马运行;木马窃取用户隐私信息发送给黑客;同时允许黑客控制用户终端。
传播方式∶捆绑、利用网页
后门
具有感染设备全部操作权限的恶意代码。
典型功能∶文件管理、屏幕监控、键盘监控、视频监控、命令执行等。
典型家族∶ 灰鸽子、pCshare
勒索
通过加密文件,敲诈用户缴纳赎金。
加密特点∶
主要采用非对称加密方式
对文档、邮件、数据库、源代码、图片、压缩文件等多种文件类型进行加密
其他特点∶
通过比特币或其它虚拟货币交易
利用钓鱼邮件和爆破rdp口令进行传播
典型家族∶Wannacry、GandCrab、Globelmposter
挖矿
攻击者通过向被感染设备植入挖矿工具,消耗被感染设备的计算资源进行挖矿,以获取数字货币收益的恶意代码。
特点∶
不会对感染设备的数据和系统造成破坏。
由于大量消耗设备资源,可能会对设备硬件造成损害。
恶意代码希望能顺利绕过杀毒软件与防火墙,在受害者的计算机中长期隐藏下去,并能在必要的时候向攻击者提供有用的信息。
免杀技术又称为免杀毒(Anti Anti- Virus)技术,是防止恶意代码免于被杀毒设备查杀的技术。
主流免杀技术如下∶
原理
免杀的最基本思想就是破坏特征,这个特征有可能是特征码,有可能是行为特征,只要破坏了病毒与木马所固有的特征,并保证其原有功能没有改变,一次免杀就能完成了。
特征码就是反病毒软件用于判断文件是否带病毒的一段独一无二的代码,这些特征码在不同的反病毒软件的病毒库中不尽相同。
特征码就是一种只在病毒或木马文件内才有的独一无二的特征,它或是一段字符,或是在特定位置调用的一个函数。总之,如果某个文件具有这个特征码,那反病毒软件就会认为它是病毒。反过来,如果将这些特征码从病毒、木马的文件中抹去或破坏掉,那么反病毒软件就认为这是一个正常文件了。
文件免杀原理
黑客们研究木马免杀的最终目标就是在保证原文件功能正常的前提下,通过一定的更改,使得原本会被查杀的文件免于被杀。
要达到不再被杀的目的方法有很多种,其中最直接的方法就是让反病毒软件停止工作,或使病毒木马“变”为一个正常的文件。
然而如何使一个病毒或木马变成一个正常文件,对于黑客们来说其实是一个比较棘手的问题,不过只要学会了一种免杀原理,其他的免杀方案也就触类旁通了。
改特征码免杀原理
所谓的特征码,我们可以将其理解为反病毒软件的黑名单。黑客们显然无法将木马从反病毒软件的黑名单中删除,所以他们要让病毒改头换面!例如原来黑名单中有“灰鸽子”这么一款木马,黑客们将其改头换面后不叫灰鸽子了,比如叫“白鸽子”!当然,这只是一个例子,现实中仅仅依靠改名是骗不了反病毒软件的。
就目前的反病毒技术来讲,更改特征码从而达到免杀的效果事实上包含着两种思想。
一种思想是改特征码,这也是免杀的最初方法。例如一个文件在某一个地址内有“灰鸽子上线成功!”这么一句话,表明它就是木马,只要将相应地址内的那句话改成别的就可以了,如果是无关痛痒的,直接将其删掉也未尝不可。
第二种是针对目前推出的校验和查杀技术提出的免杀思想,它的原理虽然仍是特征码,但是已经脱离纯粹意义上特征码的概念,不过万变不离其宗。其实校验和也是根据病毒文件中与众不同的区块计算出来的,如果一个文件某个特定区域的校验和符合病毒库中的特征,那么反病毒软件就会报警。所以如果想阻止反病毒软件报警,只要对病毒的特定区域进行一定的更改,就会使这一区域的校验和改变,从而达到欺骗反病毒软件的目的,如图所示。这就是在定位特征码时,有时候定位了两次却得出不同结果的原因所在。
花指令免杀原理
花指令其实就是一段毫无意义的指令,也可以称之为垃圾指令。花指令是否存在对程序的执行结果没有影响,所以它存在的唯一目的就是阻止反汇编程序,或对反汇编设置障碍。
然而这种障碍对于反病毒软件来说同样也是致命的,如果黑客们的花指令添加得足够高明,就可以使木马很轻松地逃脱查杀!
但是,为什么它会影响反病毒软件的判断呢?通过前面的学习大家都已经知道,大多数反病毒软件是靠特征码来判断文件是否有毒的,而为了提高精度,现在的特征码都是在一定偏移量限制之内的,否则会对反病毒软件的效率产生严重的影响!而在黑客们为一个程序添加一段花指令之后,程序的部分偏移会受到影响,如果反病毒软件不能识别这段花指令,那么它检测特征码的偏移量会整体位移一段位置,自
然也就无法正常检测木马了。
当然,这也仅仅是针对第一代扫描技术的方法,不过即便是反病毒软件采用虚拟机分析、校验和扫描或启发式分析,花指令同样会起到一定的作用,针对每种检测方法的不同,花指令所起到的作用亦不相同。它最根本的思想就是扰乱程序运行顺序,并为破解者(反病毒人员)设下陷阱。而如果花指令可以成功保护软件真正代码不被轻易反汇编,那么对于反病毒软件来说,它所检测的自然也就不是木马文件中真正的内容了。
加壳免杀原理
说起软件加壳,简单地说,软件加壳其实也可以称为软件加密(或软件压缩),只是加密(或压缩)的方式与目的不一样罢了。
一般的加密是为了防止陌生人随意访问我们的数据。但是加壳就不一样了,它的目的是减少被加壳应用程序的体积,或避免让程序遭到不法分子的破坏与利用,例如最常见的共享软件,如果不对软件加以保护,那么这个软件就会很轻易地被破解,也就没有人去向软件的作者购买注册码了。
既然加壳后的软件还能正常运行,那么这些壳究竟将软件的哪些部分加密了呢?其实,我们可以从“加壳”这个词语本身着手,为什么不叫加密、防盗或其他的名称,而偏偏称其为加壳呢?
我们可以将未加壳的软件想象成美味的食物,太多的人想要得到它,想借此大饱口福!于是食物的主人就将其保存了起来,放到一个只有他能打开的硬壳里,这样就可以避免其他人打它的主意。而当自己的客人到来时,他可以很轻松地打开这个硬壳,供客人品尝……
上面所说壳就是我们加的保护,它并不会破坏里面的程序,当我们运行这个加壳的程序时,系统首先会运行程序的“壳”,然后由壳将加密的程序逐步还原到内存中,最后运行程序。这样一来,在我们看来,似乎加壳之后的程序并没有什么变化,然而它却达到了加密的目的,这就是壳的作用。
现在,我们再回头看看反病毒软件,如果说加壳之后的文件我们都无法将其还原,那么反病毒软件自然也就“看”不懂了。加密后的文件结构已经产生了天翻地覆的变化,原有的特征码早已不知去处,反病毒软件自然也就会认为它是一个正常的文件了。
由以上3种方法可知,基于文件的免杀基本上就是破坏原有程序的特征,无论是直接修改特征码还是加上一段花指令,抑或是将其加壳,其最后的目的只有一个,那就是打乱或加密可执行文件内部的数据。
内存免杀原理
自从文件免杀的方法在黑客圈子内部流传开后,反病毒公司将这场博弈升级到了另一个层次—内存中。
内存在计算机安全领域中向来就是兵家必争之地,从信息截取、软件破解,到内核Hook、修改内核,再到缓冲区溢出等,其主要战场都在内存中,由此可见内存是一个多么复杂而又变幻莫测的地方。
之所以说内存复杂,是因为一般情况下内存是数据进入CPU之前的最后一个可控的物理存储设备。在这里,数据往往都已经被处理成可以直接被CPU执行的形式了,像我们前面讲的加壳免杀原理在这里也许就会失效了。
我们知道,CPU不可能是为某一款加壳软件而特别设计的,因此某个软件被加壳后的可执行代码CPU是读不懂的。这就要求在执行外壳代码时,要先将原软件解密,并放到内存里,然后再通知CPU执行。
如果是这样,那么从理论上来讲任何被加密的可执行数据在被CPU执行前,肯定是会被解密的,否则CPU就无法执行。也正是利用这个特点,反病毒公司便在这里设了一个关卡,这就使得大部分运用原有文件免杀技巧处理过的病毒木马纷纷被杀。
其实,与上面这个原因相比较,反病毒公司选择扫描内存更多是从战略角度出发的。
因为将要被执行的程序肯定比未执行程序的威胁更大。即便是再厉害的病毒木马,只要能保证它不被执行,它在用户的计算机中最多也就算是一个垃圾文件,就不会对用户及网络构成任何威胁。
但是黑客们又是如何对抗内存查杀的呢?其实套路与文件查杀一样,因为杀毒软件的内存扫描原理与硬盘上的文件扫描原理都是一样的,都是通过特征码比对的,只不过为了制造迷惑性,大多数反病毒公司的内存扫描与文件扫描采用的不是同一套特征码,这就导致了一个病毒木马同时拥有两套特征码,必须要将它们全部破坏掉才能躲过反病毒软件的查杀。
因此,除了加壳外,黑客们对抗反病毒软件的基本思路没变。而对于加壳,只要加一个会混淆程序原有代码的“猛”壳,其实还是能躲过杀毒软件的查杀的。
行为免杀原理
当文件查杀与内存查杀都相继失效后,反病毒厂商便提出了行为查杀的概念,从最早的“文件防火墙”发展到后来的“主动防御”,再到现在的部分“云查杀”,其实都应用了行为查杀技术。
而对于行为查杀,黑客们会怎样破解呢?我们都知道一个应用程序之所以被称为病毒或者木马,就是因为它们执行后的行为与普通软件不一样。
因此从2007年行为查杀相继被大多数反病毒公司运用成熟后,黑客免杀技术这个领域的门槛也就一下提高到了顶层。
反病毒公司将这场博弈彻底提高到了软件领域最深入的一层—系统底层,这就使得黑客们需要掌握的各种高精尖知识爆炸式增长,这一举动将大批的黑客技术的初学者挡在了门外。
然而由于初期的行为查杀刚刚兴起,很多反病毒产品的主动防御模块把关不严,应用的技术也并不先进,从而导致了一大批内核级病毒木马的出现。而随着技术的逐渐升温,攻防双方的技术最后变得势均力敌,反病毒公司得益于计算机领域先入为主的定律,使得黑客们从这时开始陷入被动。
因此黑客免杀技术发展到现在,已经出现了向渗透入侵等领域靠拢的趋势,黑客们将能躲过主动防御的方法称为0Day,并且越来越多的木马选择使用本地缓冲区溢出等攻击手法来突破主动防御。
但是反病毒爱好者们也不能因此麻痹大意,黑客领域中的任何技术从来都是靠思路与技术这两条腿走路的,免杀技术也不例外。黑客技术的初学者仍然想出了非常多的方法,有效地突破了现在的主动防御与云查杀。
检测工具
杀毒软件
杀毒软件主要通过一些引擎技术来实现病毒的查杀,比如以下主流技术:
特征码技术
杀毒软件存在病毒特征库,包含了各种病毒的特征码,特征码是一段特殊的程序,从病毒样本中抽取而来,与正常的程序不太一样。把被扫描的信息与特征库进行对比,如果匹配到了特征库,则认为该被扫描信息为病毒。
行为查杀技术
病毒在运行的时候会有各种行为特征,比如会在系统里增加有特殊后缀的文件,监控用户行为等,当检测到某被检测信息有这些特征行为时,则认为该被检测信息为病毒。
网关反病毒
在以下场合中,通常利用反病毒特性来保证网络安全:
FW作为网关设备隔离内、外网,内网包括用户PC和服务器。内网用户可以从外网下载文件,外网用户可以上传文件到内网服务器。为了保证内网用户和服务器接收文件的安全,需要在FW上配置反病毒功能。
在FW上配置反病毒功能后,正常文件可以顺利进入内部网络,包含病毒的文件则会被检测出来,并被采取阻断或告警等手段进行干预。
首包检测技术
通过提取PE(Portable Execute;Windows系统下可移植的执行体,包括exe、dll、“sys等文件类型)文件头部特征判断文件是否是病毒文件。提取PE文件头部数据,这些数据通常带有某些特殊操作,并且采用hash算法生成文件头部签名,与反病毒首包规则签名进行比较,若能匹配,则判定为病毒。
启发式检测技术
启发式检测是指对传输文件进行反病毒检测时,发现该文件的程序存在潜在风险,极有可能是病毒文件。比如说文件加壳(比如加密来改变自身特征码数据来躲避查杀),当这些与正常文件不一致的行为达到一定的阀值,则认为该文件是病毒。
启发式依靠的是"自我学习的能力",像程序员一样运用经验判断拥有某种反常行为的文件为病毒文件。
启发式检测的响应动作与对应协议的病毒检测的响应动作相同。启发式检测可以提升网络环境的安全性,消除安全隐患,但该功能会降低病毒检测的性能,且存在误报风险,因此系统默认情况下关闭该功能。
启动病毒启发式检测功能∶heuristic-detect enable 。
文件信誉检测技术
文件信誉检测是计算全文MD5,通过MD5值与文件信誉特征库匹配来进行检测。文件信誉征库里包含了大量的知名的病毒文件的MD5值。华为在文件信誉检测技术方面主要依赖于文件信誉库静态升级更新以及与沙箱联动自学习到的动态缓存。文件信誉检测依赖沙箱联动或文件信誉库。
网络流量进入智能感知引擎后,首先智能感知引擎对流量进行深层分析,识别出流量对应的协议类型和文件传输的方向。
判断文件传输所使用的协议和文件传输的方向是否支持病毒检测。
NGFW支持对使用以下协议传输的文件进行病毒检测。
FTP(File Transfer Protocol):文件传输协议
HTTP(Hypertext Transfer Protocol):超文本传输协议
POP3(Post Office Protocol - Version 3):邮局协议的第3个版本
SMTP(Simple Mail Transfer Protocol):简单邮件传输协议
IMAP(Internet Message Access Protocol):因特网信息访问协议
NFS(Network File System):网络文件系统
SMB(Server Message Block):文件共享服务器
NGFW支持对不同传输方向上的文件进行病毒检测。
上传:指客户端向服务器发送文件。
下载:指服务器向客户端发送文件。
判断是否命中白名单。命中白名单后,FW将不对文件做病毒检测。
白名单由白名单规则组成,管理员可以为信任的域名、URL、IP地址或IP地址段配置白名单规则,以此提高反病毒的检测效率。白名单规则的生效范围仅限于所在的反病毒配置文件,每个反病毒配置文件都拥有自己的白名单。
针对域名和URL,白名单规则有以下4种匹配方式:
前缀匹配:host-text或url-text配置为“example”的形式,即只要域名或URL的前缀是“example”就命中白名单规则。
后缀匹配:host-text或url-text配置为“example”的形式,即只要域名或URL的后缀是“example”就命中白名单规则。
关键字匹配:host-text或url-text配置为“example”的形式,即只要域名或URL中包含“example”就命中白名单规则。
精确匹配:域名或URL必须与host-text或url-text完全一致,才能命中白名单规则。
病毒检测:
智能感知引擎对符合病毒检测的文件进行特征提取,提取后的特征与病毒特征库中的特征进行匹配。如果匹配,则认为该文件为病毒文件,并按照配置文件中的响应动作进行处理。如果不匹配,则允许该文件通过。当开启联动检测功能时,对于未命中病毒特征库的文件还可以上送沙箱进行深度检测。如果沙箱检测到恶意文件,则将恶意文件的文件特征发送给FW,FW将此恶意文件的特征保存到联动检测缓存。下次再检测到该恶意文件时,则按照配置文件中的响应动作进行处理。
病毒特征库是由华为公司通过分析各种常见病毒特征而形成的。该特征库对各种常见的病毒特征进行了定义,同时为每种病毒特征都分配了一个唯一的病毒ID。当设备加载病毒特征库后,即可识别出特征库里已经定义过的病毒。同时,为了能够及时识别出最新的病毒,设备上的病毒特征库需要不断地从安全中心平台(sec.huawei.com)进行升级。
当NGFW检测出传输文件为病毒文件时,需要进行如下处理:
判断该病毒文件是否命中病毒例外。如果是病毒例外,则允许该文件通过。
病毒例外,即病毒白名单。为了避免由于系统误报等原因造成文件传输失败等情况的发生,当用户认为已检测到的某个病毒为误报时,可以将该对应的病毒ID添加到病毒例外,使该病毒规则失效。如果检测结果命中了病毒例外,则对该文件的响应动作即为放行。
如果不是病毒例外,则判断该病毒文件是否命中应用例外。如果是应用例外,则按照应用例外的响应动作(放行、告警和阻断)进行处理。
应用例外可以为应用配置不同于协议的响应动作。应用承载于协议之上,同一协议上可以承载多种应用。
由于应用和协议之间存在着这样的关系,在配置响应动作时也有如下规定:
如果只配置协议的响应动作,则协议上承载的所有应用都继承协议的响应动作。
如果协议和应用都配置了响应动作,则以应用的响应动作为准。
如果病毒文件既没命中病毒例外,也没命中应用例外,则按照配置文件中配置的协议和传输方向对应的响应动作进行处理。
案例
某公司在网络边界处部署了FW作为安全网关。内网用户需要通过Web服务器和POP3服务器下载文件和邮件,内网FTP服务器需要接收外网用户上传的文件。公司利用FW提供的反病毒功能阻止病毒文件在这些过程中进入受保护网络,保障内网用户和服务器的安全。
其中,由于公司使用Ctdisk网盘作为工作邮箱,为了保证工作邮件的正常收发,需要放行Ctdisk网盘的所有邮件。另外,内网用户在通过Web服务器下载某重要软件时失败,排查发现该软件因被FW判定为病毒而被阻断(病毒ID为16424404),考虑到该软件的重要性和对该软件来源的信任,管理员决定临时放行该类病毒文件,以使用户可以成功下载该软件。