APP下载

计算机病毒中的密码算法应用及防御方法综述

2020-03-24芦天亮李国友欧阳立王国栋

科技管理研究 2020年2期
关键词:加密算法勒索解密

芦天亮,李国友,吴 警,欧阳立,王国栋

(1.中国人民公安大学信息技术与网络安全学院,北京 100038;2.国家密码管理局商用密码检测中心,北京 100039)

1 研究背景

密码学理论是网络空间安全学科的核心理论和基础支撑,是保证信息安全机密性、完整性和可认证性的重要手段之一,但是密码学理论及密码应用技术的发展是一把“双刃剑”,其在发挥数据保护和认证作用的同时也会被黑客和犯罪分子等用于各类违法犯罪活动,为不法分子躲避安全产品的检测、政府监管和追踪溯源提供了极大的便捷,今后我国的网络安全及公安执法工作将更多地面对来自高技术犯罪的密码加密和数据破解等难题。

密码技术的应用加大了安防企业和政府对病毒检测及网络攻击防范的工作量和难度,给用户带来巨大的经济损失。密码加密手段滥用带来的国家安全和网络安全问题主要体现在以下3个方面:

(1)保密通信技术的使用。基于密码学加密和认证技术的网络通信协议的应用,为犯罪分子躲避执法部门的追踪提供了有力帮助。犯罪分子使用加密协议、境外代理进行网络诈骗等犯罪活动,可顺利绕过公安机关的调查取证。趋势科技公司[1](Trend Micro)的分析报告指出,恐怖分子对WhatsApp、Telegram等加密通信软件的使用使其活动更加隐蔽和猖獗,据调查,34%的恐怖分子使用匿名加密聊天服务Telegram。对加密流量的还原难度极大,现有研究工作主要集中在加密流量的识别,如He 等[2]提出了一种针对移动应用加密网络流量识别的方法。

(2)数据加密及设备解锁难题。智能手机的加密强度更高,厂商解锁手机也很困难。由于无法有效地解密数据,给警方的线索调查和电子数据的取证带来严重阻碍,甚至可能帮助违法者游走在法律之外,如2016年美国联邦调查局(FBI)曾强迫苹果公司解锁恐怖分子使用的苹果手机。

(3)病毒等网络攻击中密码算法的使用。病毒编写者将加密技术用于保护病毒样本不被检测、隐藏通信特征、躲避安全防护设备和加密数据勒索用户等目的。加密手段在计算机病毒等黑客攻击中的广泛应用,给用户数据和财产带来巨大损失,如2018年有多家大型医院的医疗数据被Globelmposter勒索病毒加密,造成系统瘫痪无法挂号。对称密码、非对称密码以及区块链等技术是勒索病毒常用的方法[3]。

加密技术在病毒中的应用最早可追溯到1988年,“小瀑布”(Cascade)病毒是最早的能够自我加密解密的病毒[4]。在之后的30年时间中,计算机病毒程序更加普遍地利用密码技术达到自身防护和用户攻击的目的。随着密码算法的发展,各类高强度加密算法如DES、AES以及RSA等被用于病毒数据加密中,数据的破解难度极高。同时,各类网络安全通信协议和应用不断出现,如VPN、TLS、HTTPS和匿名通信网络Tor等加密通信手段也开始被计算机病毒采用[5-8],尤其是被网络木马程序、僵尸网络用于发送远程控制命令和盗取数据隐秘回传等场合,有效地躲避了网络环节的监管和追踪溯源。

本文重点研究密码算法在计算机病毒中的应用,主要从病毒的样本加壳技术、通信加密技术和数据加密勒索技术3个方面进行分析和综述,为计算机病毒的检测和防御工作提供参考依据。

2 密码算法在病毒加壳免杀中的应用

2.1 加壳免杀技术概述

杀毒软件查杀病毒程序主要是基于特征码匹配。所谓特征码,是指安全人员对捕获到的病毒样本进行分析,提取出该病毒的一组特征[9-10]。特征码需准确地标识该病毒程序,杀毒软件通过更新特征库即可识别出新出现的病毒程序。免杀,是一种“反杀毒”的技术,通过对病毒样本文件的修改,达到隐藏特征、规避杀毒软件检测的目的。历史上爆发的高危病毒,除了具有极快的传播速度和极强破坏能力,必不可少的还需要具备高水平的免杀防御能力。为了对抗基于特征码匹配的杀毒软件,攻击者创新地推出了多种免杀技术,包括:

(1)修改特征码。利用特征码定位工具MyCCL等,定位杀毒软件的病毒特征码,并通过篡改清除特征实现免杀。

(2)加花指令。在病毒文件头加入一段汇编指令和在入口点内存地址的乱跳转,使杀毒软件无法准确识别病毒程序,达到免杀的效果。

(3)修改导入表。每个PE文件格式的病毒程序一般都有导入表,用于定位动态链接库中API函数的地址,查找到导入表函数名并将其移位。

(4)加壳。壳是一种专门负责保护病毒不被修改或反编译的一段程序,它一般是先于病毒运行、拿到控制权,然后完成保护病毒不被查杀的任务[11]。当病毒加壳后,外壳段代码首先开始运行,它把压缩、加密后的病毒文件还原成原始病毒文件,然后按照相应的规则将其加载映射到内存中,再把执行权交还给原始病毒程序。加壳病毒的结构如图1所示。壳分加密壳和压缩壳,通过加壳可以有效地抵抗特征码查杀技术[12]。压缩壳主要是减小病毒文件的大小,如UPX和PECompact等;加密壳,即利用编码及密码算法对病毒文件的特征码区段进行加密,如EncryptPE、EXECryptor和Themida等。随着杀毒软件技术的发展,尤其是虚拟执行技术的出现,杀毒软件对于简单的病毒加壳算法可以实现有效地识别和脱壳,但若有多个加壳算法可随机选择,将会加大脱壳难度,进一步提高病毒免杀效果。

图1 计算机加壳病毒的结构

为了应对加壳等特征码篡改技术,部分学者提出了基于行为特征启发式计算机病毒检测方法,基于恶意 API调用序列模式检测病毒程序[13]。

2.2 加壳算法分析

在传统的静态加壳技术下,加壳的病毒在执行时都会有相同的编码,因此比较容易被检测和破解。为了更好地满足计算机病毒保护的要求,攻击者提出了动态加壳技术思想,充分利用随机加密的算法,实现对计算机病毒程序的代码和数据加密。为了生成不同特征的加密壳,基于随机的密钥加密算法可实现多态引擎技术,在确保具有相同功能的病毒样本前提下,利用新方法生成很多个不相同的病毒代码序列,而且这些病毒代码序列中特征码是完全不相同的,使得基于单一特征码匹配的检测技术失效。主流的加密壳有ASProtect、EncryptPE、Themida、EXECryptor等。

(1)ASProtect加壳算法分析。ASProtect具有加密、压缩、花指令和对抗反汇编逆向分析的防护功能[14]。ASProtect使用了 Blowfish、Twofish、TEA等复杂的对称加密算法用于加密原始病毒文件数据,还用非对称密码算法RSA 1024加密对称密钥。

(2)EncryptPE加壳算法分析。EncryptPE能加密保护内壳文件(EXE、DLL等),防止静态分析,对抗动态跟踪调试,有效地起到保护病毒程序的作用;采用随机加密技术,支持100多种加密算法,病毒程序破解难度极大。

(3)Themida加壳算法分析。Themida是一个强劲的保护壳,采用多层的加密措施,可有效隐藏病毒程序代码和数据,使安全分析人员无法还原和分析病毒程序的代码和数据[15]。

(4)EXECryptor加壳算法分析。EXECryptor是一种加密强度较强的壳,可以指定核心代码区域实施多层加密保护,并拥有强大的反调试、反跟踪和反破解技术[16]。

2.3 加壳病毒的检测与防御技术

由于加壳的算法种类很多,尤其是在不了解加壳算法和加密密钥的情况下,对病毒脱壳和检测的难度很大。在对病毒脱壳之前,一般利用壳指纹特征匹配技术对壳的类型进行识别,常用的壳识别工具有Exeinfo PE和FileInfo等。加壳过程中病毒文件会被压缩或加密处理,该过程提高了病毒文件字节分布的随机性。借助通信领域信息熵的概念,可判断病毒文件是否加壳,计算得出的信息熵越高,病毒文件字节分布的随机性越大,即病毒加壳的可能性越大。

Xie等[17]对常用的脱壳工具和技术进行了介绍,分析了病毒代码入口点(OEP)启发式定位方法、运行时脱壳环境和anti-unpacking技术。Ugarte-Pedrero 等[18]分析了针对信息熵加壳检测的绕过技术,提出了一种改进的熵度量方法,实验表明该方法达到了较高的病毒加壳检测率和较低的误报率。通用病毒脱壳器已经提出,可以提取加密代码中的病毒执行文件,脱壳后的病毒本体文件可被传统的基于特征码的杀毒软件检测;然而,通用脱壳器时间消耗非常高,扫描大量被病毒感染的文件可能需要几个小时甚至几天。Perdisci 等[19]提出应用模式识别技术快速检测加壳病毒文件的方法,实现了对加壳病毒文件的准确识别与较低的时间消耗。

3 密码算法在病毒加密通信中的应用

3.1 计算机病毒通信功能分析

计算机病毒一般都具有网络通信的功能,以方便接收黑客的指令和传递窃取的用户数据,典型的具有网络通信功能的病毒程序包括特洛伊木马和僵尸网络。木马是由控制端和被控端组成,被控制的用户电脑和黑客远程控制端需要隐蔽通信,往往采用高级加密标准(Advanced Encryption Standard,AES)等对称加密算法,或者使用安全套接层(Secure Sockets Layer,SSL)协议加密传输数据。木马设计者通常会采取端口复用、反弹端口、隐蔽通道等技术增强通信的隐蔽性。僵尸网络(Botnet)是由黑客远程控制的大量计算机群,可对目标发起网络攻击。僵尸网络具有分层的网络结构,如图2所示,受感染的用户主机称为“肉鸡”(Bot),攻击者(Botmaster)通过命令与控制服务器(C&C)可以操控多台Bot发起攻击,包括分布式拒绝服务攻击DDoS、盗号木马下载分发、垃圾邮件发送等。僵尸网络可以分为因特网中继聊天(Internet Relay Chat,IRC)、超文本传输协议 (HTTP)和对等网络 (Peer To Peer,P2P)等协议类型[20]。僵尸网络可将通信流量伪装成Web等服务的流量,绕过防火墙以及躲避IDS,增强了僵尸网络隐蔽性和健壮性。

图2 僵尸网络结构

3.2 典型的计算机病毒加密通信算法

攻击者利用各种方法来加密和隐藏僵尸网络的通信流量,使得僵尸网络更加难以检测,可有效地躲避政府的监管。下面对典型的计算机病毒使用的加密通信算法进行分析。

3.2.1 基于SSL/TLS的加密通信

SSL协议可保护信息传输的机密性和完整性。1999年,SSL被标准化并改名为传输层安全 (Transport Layer Security,TLS),网络通信开始广泛使用TLS协议。据统计,60%的网络通信采用了TLS协议,但同时,各种恶意程序也逐渐使用TLS协议来增强其通信的保密性[21],约有10%的恶意程序已经使用了TLS协议。与SSL/TLS协议相结合,僵尸网络开始使用超文本传输安全协议(HTTP over Secure Socket Layer,HTTPS)对命令和控制信道进行加密,这一趋势将会使得恶意程序变得更加难以探测,因为TLS的使用使普通的深度包检测技术(Deep Packet Inspection,DPI)很难发挥作用。Anderson 等[22]提出了一种识别恶意代码使用的TLS协议流量的方法,并且通过分析流量的特征可以将恶意代码的家族区分开。Prasse 等[23]针对网络病毒程序,提出了一种基于神经网络的HTTPS加密网络流量检测方法。

3.2.2 基于对称密码算法的加密通信

木马及僵尸网络程序在网络通信过程中往往使用对称加密方法,包括移位、异或、Base64编码和AES等对称加密算法。病毒编写者除了使用已知的加密算法外,有时还会使用自定义的编码和加密算法。以gh0st木马为例,该木马会对上线用户的IP地址等信息进行加密,加密方式是逐个进行简单的异或相加,然后进行Base 64编码。

基于对称密码算法通信的僵尸网络盛行较早,自2012年年底,IPK僵尸网络作为一种新型DDoS僵尸网络开始出现在境外。近两年,IPK僵尸网络在境外已经处于爆发状态,在2016年年底至2017年年初的4个月内就对全球12个国家发起了581次间接性DDoS攻击。IPK僵尸网络首先通过垃圾邮件、软件捆绑等方式向目标用户植入木马,随后执行大规模的DDoS攻击并继续扩大感染范围。在生成控制端时,对多种配置信息使用双重XOR算法加密,同时木马的网络通信也使用该加密方式,但加密密钥不同。虽然目前IPK僵尸网络在国内活动较少且攻击类型不算丰富,但IPK僵尸网络在通信方式上使用了双层加密算法,大大增强了通信的安全性和隐蔽性。

3.2.3 基于匿名网络的加密通信

匿名网络技术已经发展多年,I2P和Tor是当前主流的匿名网络,采用洋葱路由的方式隐藏通信双方的关系,使用高强度加密协议和中转网络层的方法加密通信内容和隐藏通信用户身份[24]。最近,攻击者已经使用Tor来隐藏僵尸网络C&C服务器,所有的Tor流量都是加密传输的,因此可有效躲避安全防护系统以及政府的追踪。

病毒程序逐渐开始搭建基于Tor网络的通信信道。2012年,通过Tor实现远程控制的Skynet僵尸网络开始出现。Skynet的C&C服务器通过匿名网络才能访问,有效地隐藏了控制者的网络位置及受感染主机的地址。Cryptowall 3.0基于I2P网络实现加密和匿名通信[25]。2013年,“蝎子”病毒爆发,该病毒会在用户不知情下安装Tor程序,并使用Tor网络进行比特币挖矿。2014年出现了首个基于Tor匿名网络的Android僵尸网络,受感染的设备被用于DDoS攻击和发送欺诈短信[26]。在Tor网络中托管的僵尸网络C&C服务器更加难以识别,加密算法和隐藏手段的不断升级给僵尸网络的监管和阻断造成巨大困难。但是,Tor网络也会给僵尸网络带来延迟、减速和不可靠等问题,同时还需投入更多的开发工作;而且Tor网络本身的流量特征非常明显,反而增加了僵尸主机的异常性。以目前的技术,基于Tor网络的僵尸程序还不能达到预期的完美隐藏和可靠通信的效果,而且Tor网络还面临着各类安全威胁,如路由攻击和流量分析等[27-28]。

3.3 加密流量的检测与防御技术

木马和僵尸网络等通过加密和隧道技术,将机密信息传输给攻击者。对僵尸网络监控和打击的重点是C&C服务器,C&C负责攻击主机和所有受感染主机之间数据和指令的中转,通过网络流量监控可以发现它,甚至通过流量仿冒可以接管僵尸网络。

潘吴斌等[29]对现有的加密流量识别技术进行了概述和对比。董建亚[30]从加密算法的逆向分析和通信协议的逆向分析两个方面,提出了对加密网络程序的逆向分析方法。姜鹏[31]通过统计正常加密流量和恶意加密流量的不同,分析网络通信过程中元数据、SSL协议和数字证书的特征,实现了APT攻击下C&C加密信道的检测。网络流量的加密过程会增加通信数据字节分布的随机性,根据该特点,Dorfinger[32]提出了基于信息熵度量的加密网络流量实时分析和检测方法。Anderson等[33]提出了基于机器学习的加密恶意流量的识别方法。石小龙等[34]提出了一种基于动态污点分析的加密通信协议逆向分析方法,通过定位网络数据解密后的明文,还原加密通信协议的格式。

多年以来,攻击者已经实现了一系列复杂和高强度的加密和隐蔽通信的方法,虽然部分安全研究人员提出了针对僵尸网络加密通信的检测方法[35-36],但实际上在僵尸网络检测和阻断方面仍面临着巨大的困难。

4 密码算法在勒索病毒对文件加密中的应用

4.1 勒索病毒概述

勒索病毒是恶意代码的一种,利用钓鱼邮件、网页挂马、漏洞攻击等方式感染用户设备,劫持系统的使用权、破坏数据可用性,通过弹窗、电话、邮件等方式告知勒索信息,要求用户限期通过比特币等方式支付赎金,以恢复设备使用权或解密文件数据。

2016年,全球新增电脑端勒索病毒样本16.7万个,近500万用户电脑遭到了勒索病毒攻击,其中11.9%的受害者会支付勒索赎金[37]。据FBI发布的信息,2016年第一季度发生的网络勒索事件中,被攻击者支付的赎金超过2亿美元[38]。目前主流的勒索病毒家族包括Cerber、Locky和XTBL等。勒索病毒除了攻击普通用户,为了获得更大数额的赎金,还将目标转向企业和政府部门,如LeChiffre攻陷印度3家银行、国内某央企受到Locky攻击等。2017年2月召开的RSA 2017信息安全大会上,会议组织者将“勒索病毒”作为重要议题设定了整天议程。2017年5月,“蠕虫式”勒索病毒“WannaCry”利用美国国家安全局(NSA)泄漏出来的微软MS17-010漏洞大范围传播,波及150多个国家,受害者多达20万个用户,并且还出现了变种。

勒索病毒发展到今天,越来越多地使用非对称加密算法比如RSA等,解密的私钥是存放在攻击者的服务器中,这使得文件解密几乎成了不可能。

4.2 勒索病毒文件加密算法分析

勒索病毒通过密码算法对用户文件进行加密,并且要保证用户在没有获得解密密钥的情况下无法恢复文件数据。勒索病毒的加密过程包括3个方面:密钥生成、文件加密、密钥传输。多种类型的密码算法均被勒索病毒使用,病毒编写者充分掌握和发挥各类密码算法的优势,如:使用加密速度较快的对称加密算法对大量用户文件进行加密,提高加密强度和速度;使用非对称密码算法用于密钥的安全传输。勒索病毒使用的加密算法主要包括以下4类:

(1)对称密码算法,加密过程和解密过程使用相同的密钥。其特点是速度快,主要用来对文件加密。常用AES、3DES、RC4等算法,其中AES算法占绝大多数。

(2)非对称密码算法,由公钥和私钥组成密钥对。其特点在于公钥加密的数据只有私钥可以解密,加密速度较慢,因此常常与对称密码算法组合使用,主要使用公钥加密对称密钥,只有掌握私钥的攻击者才可解密。常用算法包括RSA、ECDH等。

(3)散列算法,又称为Hash函数,将输入转换成不可逆的固定字符串,主要对主机信息计算摘要,生成唯一ID,用于标识用户主机。常用MD5、SHA等算法。

(4)其他算法,如Base64、deflate等算法。

为了增强破解的难度,不同勒索病毒会使用两种甚至多种的加密算法。

4.2.1 使用自定义加密算法的勒索病毒分析

对于自定义加密算法来说,通常情况下是利用常量或循环字节组对文件数据进行逐字节异或运算。在这种情况下,算法通常比较简单,只需逆向分析该算法的代码,就可以知道它是如何修改或加密文件的,然后针对这些加密步骤执行反向操作,即可恢复文件数据。下面分析一种自定义加密算法的勒索病毒。

2016年,采用自定义密码算法的Apocalypse勒索病毒出现,加密流程:将其密钥内置在病毒样本之中,通过异或XOR实现对用户文件数据的加密,被加密的文件都以.encrypted为扩展名,病毒会生成“原文件名.How_To_Decrypt.txt”的文件,用于提醒用户被病毒攻击并勒索赎金[39]。Apocalypse采用的自定义密码算法属于对称密码,因此解密密钥与加密密钥是相同的。

4.2.2 使用单一密码算法的勒索病毒分析

除了使用自定义加密方式的勒索病毒之外,大部分勒索病毒都会使用已有的加密算法,例如AES、RSA等。其中单一加密算法主要使用AES、3DES等强度较高的对称加密算法,加密和解密密钥是一样的。下面对使用单个加密算法的Jigsaw勒索病毒和Unlock92勒索病毒进行介绍。

Jigsaw勒索病毒使用了AES算法,其密钥和初始向量内嵌在病毒文件中,经过逆向分析可提取出密钥,利用该密钥能实现文件解密[39];加密完成后,添加“.fun”扩展。Jigsaw勒索病毒会定期对计算机中的加密文件进行删除,文件被删除后将无法恢复。

病毒加密用户文件时,通常使用运算速度较快的对称密码,但Unlock92勒索病毒却使用了非对称的RSA算法。该病毒出现了多个版本,不同版本加密后的用户文件会使用不同的扩展名,以.CRRRT和以.CCCRRRPPP为常见。在加密文件的目录下,病毒会自动生成一个“.jpg”格式的图片文件,该图片的内容是提示用户文件被加密。Unlock92勒索病毒都内置一个RSA公钥Pk1,与其配对的RSA私钥Sk1掌握在攻击者手中。加密流程:Unlock92勒索病毒采用的是两次RSA加密,加密用户文件时病毒会随机生成新的RSA公私钥对Pk2和Sk2,其中Sk2使用Pk1加密后只有攻击者可以解密,Pk2用于加密用户文件。因为RSA加密速度很慢,该病毒只选择每个文件的前0x300字节进行加密。解密流程:首先获得私钥Sk1,然后解密出随机RSA私钥Sk2,最后私钥Sk2解密用户文件。

4.2.3 使用两种加密算法的勒索病毒分析

为了增加解密难度和勒索行为的成功率,更多勒索病毒混合使用两种加密算法,通常会结合对称加密算法和非对称加密算法,如“RSA算法+AES算法”,或者利用其他算法进行两两结合,以达到提高加密速度和密钥安全传输的目的。

WannaCry勒索病毒爆发于2017年5月12日,造成英国国民健康服务中心的多家医院瘫痪,并使得日本本田公司暂时关闭[40]。该病毒主要有两个特点:一是,利用操作系统漏洞大规模传播;二是,加密过程设计比较复杂和精妙,充分利用了RSA算法和AES算法的特点和优势。WannaCry病毒内嵌了RSA主公钥,攻击者保留RSA主私钥。如图3所示,加密和解密流程描述如下:加密过程,首先生成随机的RSA子公钥和子私钥,使用RSA主公钥对子私钥加密后保存为“.eky”格式文件,将子公钥保存为“.pky” 格式文件,随后WannaCry生成AES密钥,对用户数据加密,加密后的文件为M2,之后用“.pky” 格式公钥加密AES密钥和文件大小等数据生成M1,最后合并M1和M2,添加“WANACRY!”文件头后保存为加密文件;解密文件时,攻击者将“.eky”格式用私钥解密,解密后的私钥保存为“.dky”格式文件,最终实现文件解密[41]。

图3 WannaCry勒索病毒的加密和解密过程

Petya勒索病毒使用了两种加密算法——ECDH算法和流密码算法SALSA20。Petya病毒并不直接加密用户文件数据,而是通过加密磁盘分区和覆盖MBR,使得计算机无法正常启动。2016年3月,Cerber勒索病毒开始广泛传播,目前已经出现了多个变种。被该病毒加密的文件扩展名为Cerber,每个目录下还会生成额外的3个文件提示用户被Cerber勒索病毒并索要赎金。Cerber病毒结合了RSA算法与RC4算法[39]。

勒索软件除了攻击个人用户外,为了索要更多的赎金,还会攻击大型公司,包括银行、互联网公司及工厂等。2019年3月,挪威的全球最大铝生产公司Norsk Hydro受到一款名为LockerGoga的勒索病毒攻击,造成多个工厂关闭。该勒索病毒通过伪造数字证书,躲过了病毒查杀,病毒采用了AES和RSA混合加密方式,使用CBC模式的AES算法加密用户文件,密钥长度为128比特,利用病毒内嵌的RSA公钥将AES密钥加密后发送给攻击者[42]。

4.2.4 使用其他软件加密模块的勒索病毒分析

勒索病毒为了提高解密难度以达到更好的勒索效果,除了使用更多的加密算法和增加加密层数以外,部分勒索病毒还使用其他正常软件的加密模块实现加密功能。针对该类加密方式,使用对应的解密代码和密钥即可解密文件。例如,CryptoHost勒索病毒加密用户文件时,使用了WINRAR加密模块,加密的压缩文件名称由41个字符组成,压缩密码由RAR文件名称和计算机登录用户名组成,所以较容易破解没有给互联网用户带来太多危害。VaultCrypt勒索病毒使用了Windows批处理文件和开源GnuPG软件的加密模块为用户文件加密提供支持[43],后缀名“.vault”被附加到每个加密文件;为了说服用户支付赎金,像大多数其他勒索病毒一样,VaultCrypt提供了免费恢复4个被加密文件的能力,以证明它能够做到解密。

4.3 勒索病毒的破解与防御技术

4.3.1 勒索病毒破解技术

虽然,已经有安全人员或安全公司发布了部分勒索病毒的文件恢复和解密工具,但实际上大部分勒索病毒还是无法破解的。病毒编写者如果能主动释放出解密密钥,这样解密将会更加容易和可靠。例如,Vault勒索病毒因其编写者被逮捕得以破解,TeslaCrypt勒索病毒的编写者主动释放出了ECDH私钥。

Palisse 等[44]通过分析主流的勒索病毒及其特性,提出了两种在不支付赎金的情况下的解密方法,包括:利用某些勒索病毒运行模式的缺陷和通过对微软Windows系统CryptoAPI的拦截,但是这两种解密防护方法必须在勒索病毒攻击前激活,且不能应对所有的勒索病毒。Wecksten 等[45]对4款勒索病毒进行了分析,找到病毒编写过程中的一个明显漏洞,通过对文件拷贝功能的系统工具的重命名,能够恢复被勒索病毒感染的数据。

4.3.2 勒索病毒检测和防御技术

与其他病毒相比,勒索病毒的行为特征更加明显:它会大量地读写用户磁盘文件,尤其是对文档、图片等几十种格式的文件频繁读写;它会调用CryptoAPI等函数库完成生成密钥及加密过程。这些特征可以作为识别和检测勒索病毒的重要依据。

龚琪等[46]提出了一种基于行为统计特征的勒索病毒检测方法,重点对特定后缀文件格式的读写操作和加密函数API调用的特征进行监控和分析。Ouerdi等[47]提出一种基于多层感知器的人工神经网络的勒索病毒分类方法,利用avclass工具标签将勒索病毒分成了10个类别。Maiorca等[48]实现了一个基于机器学习的Android勒索病毒检测系统R-PackDroid,通过分析病毒程序调用的系统API库来提取特征,利用最新样本测试结果表明,该系统能够检测勒索病毒,并能准确将手机勒索病毒与其他类型的病毒区分出来。Scaife 等[49]提出了一个名为CryptoDrop的勒索病毒早期预警系统,该系统构建一组勒索病毒恶意行为指标,当监控到恶意程序大量篡改用户文件数据时能够及时预警和有效阻断。

实际上,大部分勒索病毒仍然无法实现文件恢复,而且对于加密强度较高的勒索病毒,文件恢复难度极大。因此,勒索病毒的防御工作中,事前的预防和文件备份更为重要。

5 展望

计算机病毒程序是攻击者精心设计和编写的,尤其是病毒的加密算法的选择、密钥生成和存储等环节都有周密的考虑。密码技术的应用,使得计算机病毒的查杀、检测、阻断和数据恢复等安全防护技术面临着严峻的考验,在与计算机病毒的博弈过程中,安全防护方一直处于十分被动的位置。当前的计算机病毒防御手段暴露出较多缺陷,如特征码提取过程人工成本投入过高、新型病毒及变种不断出现、病毒加密技术的应用导致检测响应延时增大、特征库庞大带来查杀速度的下降等。在计算机病毒的检测与防御方面,尤其是密码算法在病毒中的应用和对抗技术,还存在着很多未解决的难题,需要更多的安全学者进一步开展深入研究。未来主要的研究思路如下:

(1)研究病毒程序中密码算法的快速和准确识别方法,可以大大提高病毒程序分析速度和防御效果。目前,国内外对计算机病毒密码检测分析缺乏系统性的方法,常用的密码算法识别方法包括:基于静态特征码的密码算法识别和基于动态分析的密码算法识别[50-51]。基于静态特征码的密码算法识别,会建立密码算法和特征码的对应关系:在二进制层面,抽取密码算法的静态数据特征,包括初始化值、S盒、置换盒以及素数表等;在反汇编层面,利用逆向工程对可执行文件进行反汇编,建立密码函数签名特征、汇编指令特征、程序逻辑结构及多轮循环特征等。部分病毒样本由于采用了加壳及指令混淆等技术,加大了静态分析的难度,密码算法的静态特征码也被隐藏;大多数病毒直接调用Windows CryptAPI等密码函数库实现加密等功能,对病毒文件本身的静态分析或者反汇编无法找到密码算法特征。为了提高病毒加密行为识别的准确率,搭建具有计算机病毒自动分析功能的沙箱系统,对加密函数动态库的加载和加密API函数的调用进行监测和分析,通过分析API函数名称及参数特征对密码算法准确识别,并通过提取密码API函数的时间调用序列,构建病毒程序对多种密码算法组合应用的流程。

(2)勒索病毒的密码算法破解和文件恢复难度很大,亟待加强研究,并且应以事前防御和数据备份为主。理论上密码算法破解难度极大,因此对勒索病毒加密的文件进行解密和恢复极为困难。从目前的研究成果看,勒索病毒被破解的情况主要包括以下几种情况:一是通过逆向分析破解自定义的加密算法;二是密钥保存不当,尤其是程序内嵌的固定对称密钥;三是弱密钥及长度不够导致的暴力破解等安全问题;四是利用密钥管理服务器存在的漏洞获取大量用户解密密钥;五是利用磁盘文件恢复功能还原被加密文件。通过对目前已经公布的破解方法和工具的统计,只有极少数勒索病毒是可以被破解的。从未来发展来看,勒索软件使用的密码算法将会更加复杂,其安全强度将进一步提升,这将大大提高加密数据恢复的难度。

(3)可信计算技术是实现网络空间安全免疫防御体系的重要支撑,以可信计算为代表的基于密码算法的病毒防御技术已成为当前热点研究方向。密码技术的发展是一把“双刃剑”,密码算法可以被计算机病毒滥用作为攻击用户的“矛”,同时密码算法可以作为安全防护的“盾”。早在2008年,陈泽茂等[52]就已提出了基于密码原理的计算机病毒免疫模型,该模型克服了基于访问控制的逻辑隔离的脆弱性,可以有效阻断计算机病毒的执行和传播。现有的杀毒软件的安全产品通过提取已知病毒的特征,可有效进行病毒查杀,但对未知病毒漏报率极高。基于密码算法构建的可信计算技术可有效地对抗非预知病毒的攻击[53]。可信计算采用主动免疫的防护机制,通过程序的数字签名可准确识别出病毒程序。

计算机病毒的防护问题是网络安全领域研究的热点问题,已引起了政府部门、安防企业及科研人员的广泛关注。网络攻击和防御的对抗是“道高一尺,魔高一丈”的过程,安全人员与病毒编写者的博弈将持续下去,密码算法的应用将使得博弈更加激烈。未来更多的计算机病毒程序将会使用密码算法及安全通信协议,更高强度的算法及更加复杂的算法组合将会出现;作为安全防御方必须提前做好准备,提出针对加密型计算机病毒的分析检测和安全防护方法。

猜你喜欢

加密算法勒索解密
炫词解密
情绪勒索:警惕以爱之名的伤害
解密“一包三改”
遭遇勒索
炫词解密
炫词解密
勒索
获奖产品介绍:对勒索病毒说不
——美创科技“诺亚”防勒索系统向勒索病毒“宣战”
DES加密算法的实现
基于整数矩阵乘法的图像加密算法