「作者简介」:冬奥会网络安全中国代表队,CSDN Top100,就职奇安信多年,以实战工作为基础著作 《网络安全自学教程》,适合基础薄弱的同学系统化的学习网络安全,用最短的时间掌握最核心的技术。
这一章节我们需要知道病毒的分类、传播方式、清除与防护方式,重点是恶意代码检测技术的实现原理。
「计算机病毒」的定义是:编制或者在计算机程序中插入的 破坏计算机功能或者损坏数据,影响计算机使用,并能自我复制的一组计算机指令或者程序代码。
病毒是「恶意代码」的一部分,凡是能够引起计算机故障,破坏计算机数据,影响计算机系统的正常使用的代码或指令,都是恶意代码。比如exe、dll这种二进制代码,或者asp、php、jsp这种脚本语言,或者微软提供给offic用户的宏语言都属于恶意代码。
也就是说,病毒只是恶意代码的一种,所以后续内容中,我们会围绕着恶意代码的防护来讲解。
恶意代码
- 1、恶意代码分类
- 2、恶意代码的传播方式
- 3、恶意代码检测技术
- 3.1、特征匹配
- 3.2、行为检测
- 3.3、云查杀
- 4、恶意代码的清除
- 6、恶意代码的防护
1、恶意代码分类
除了病毒,恶意代码还分为以下几类:
- 病毒(Virus):依赖宿主文件传播,本身无法独立存在。
- 蠕虫(Worm):不依赖宿主文件就能传播,有独立的进程和文件。
- 后门程序(Backdoor):负责远程控制
- 木马(Torjan):盗取账号、文件、数据
- 流氓软件(Adware/Spyware):盗取用户隐私数据,浏览器首页锁定,捆绑安装等
- 逻辑炸弹(Logic bomb):以破坏为目的,锁定硬盘或操作系统
2、恶意代码的传播方式
恶意代码的传播方式有文件传播、网络传播、软件传播三种。
文件传播:
- 病毒感染:在正常的文件中插入恶意代码,使文件感染病毒,文件被发送到别的电脑上,实现传播。
- 移动介质:U盘等移动存储设备,利用电脑的自动播放(Autorun.inf)功能执行恶意代码,实现传播。
网络传播:
- 网页:(水坑式攻击)黑客在网页上挂马,用户访问网站,恶意代码就会执行,实现传播。
- 电子邮件:(鱼叉式攻击)黑客发送钓鱼邮件,邮件的内容包含恶意url或二维码,点击或扫码恶意代码就会执行;或者邮件的附件中包含恶意程序,点击附件就会执行恶意代码,实现传播。
- 即时通讯:通过QQ、微信等通讯攻击发送恶意url、二维码、恶意程序等,执行恶意代码,实现传播。
- 共享:黑客拿下文件共享服务器,用户通过共享服务器下载文件时,文件中被插入恶意代码,实现传播。
- 漏洞;利用系统漏洞,比如永恒之蓝的MS17010漏洞。
软件传播:主要是后门文件,黑客入侵服务器以后,上传后门文件,实现长期控制。
3、恶意代码检测技术
3.1、特征匹配
使用「静态分析技术」(不执行恶意代码,直接分析文件内容),根据已知病毒的特征码进行查杀,也叫特征库或「病毒库」。
安全厂商通过各种途径获取病毒「样本」,将病毒文件的MD5(校验和)或部分代码特征当做「特征码」保存到数据库中。定期扫描或实时监控文件操作,当文件出现创建、修改操作时,就用病毒库的特征码去匹配文件的内容,匹配到了就判定有毒。
对于「加密」的文件,也就是病毒加壳,安全厂商会先解密,再分析解密后文件的特征码,
即使无法解密,病毒在内存中执行时也会还原成原本的代码,杀软对「内存」中的代码匹配特征码,实现查杀。
病毒库准确率高、误报率低,但病毒库依赖于安全厂商的能力,需要持续更新,不更新就检测不到;并且具有滞后性,先有病毒才能提取病毒特征,无法查杀未知病毒。
3.2、行为检测
使用「动态分析技术」(执行恶意代码,分析程序行为),从最原始的病毒定义出发,根据程序的「行为」进行查杀,也叫「主动防御」。
自动防御会实时监控程序的文件操作、注册表操作、网络操作、进程操作、关键函数调用等行为,发现自启动、释放文件、调用敏感DLL等操作时,每有一个操作,就累加恶意权重,权重超过阈值,就判定有毒。
行为检测能够检测到未知的病毒,但误报率高。如果自动处置,则可能误杀正常的业务程序;如果弹窗让用户选择处置,用户的安全能力很难做出正确的选择。
3.3、云查杀
云查杀是特征匹配的一种延伸技术,将病毒库的角色从终端设备转移到了云端服务器。
因为病毒库是要下载到终端本地的,不能占用太大的空间,而云查的病毒库在「云端」,不担心空间占用问题,可以存储巨量的病毒特征,是一个十亿甚至百亿级别的巨大的「黑白灰名单数据库」。
终端将本地无法检测的可疑文件的「MD5」等信息发送给云查服务器,由云查服务器匹配检检测。
如果MD5无法识别,终端就发送「文件样本」给云查服务器,云查服务器放到沙箱里运行样本,检测样本的行为。由于这个操作比较敏感,很多场景下都不会发送文件样本,只发送MD5。
终端就像云查服务器的样本采集设备,终端数量越多,样本就越多,云查能力就越强。
除了终端采集,安全厂商还会根据已有的病毒库,通过「机器学习」做模型训练,加强云查能力。
因此在实际项目中 ,通常使用病毒库+云查的组合形式,互联网终端直连或通过代理连接公有云查服务器,隔离网在网络中部署私有云查服务器,提高病毒查杀能力。
4、恶意代码的清除
根据恶意代码对系统的影响,分为4种:
- 感染引导区:不常见,系统启动前执行恶意代码,需要修复/重建引导区。
- 感染文件:删除文件中的恶意代码或使用正常的文件替换感染文件。
- 独立文件:结束相关进程,删除文件。
- 嵌入型:不常见,将恶意代码嵌入到现有程序中,很难编写,需要重装系统。
6、恶意代码的防护
恶意代码的防护主要体现在三个方面:
1)增强安全意识:根据恶意代码的传播方式来增强安全意识,比如不熟悉的U盘不要插,陌生网页不要访问,链接不要随便点,收到邮件时根据邮箱地址而不是名字判断收件人,与相关人员确认邮件内容是否属实。
2)减少漏洞:该升级的升级,该打补丁的打补丁。
3)三方安全产品:
- 终端上装防病毒。
- 网络边界部署IPS、IDS、防毒墙等设备,
- 网络中部署蜜罐、蜜网
蜜罐(Honeypot)技术就是部署一个存在漏洞的网站,然后检测用户对这个网站的访问流量,从而进行预警。工作中只要有人访问蜜罐,就很可能有问题,原因很简单:我没有这个业务网站你为什么要访问。
多个蜜罐组成的网络叫做蜜网(Honeynet),蜜网可以帮助业务网站抵挡很多攻击,因为蜜罐也不做实际业务,所有的性能都可以用来监测攻击,可以帮助我们分析攻击者的行为,提供威胁情报,并及时阻断。