计算机病毒密码算法检测系统研究
2022-07-20张文川
张文川
(兰州石化职业技术大学,甘肃兰州,730060)
0 引言
随着计算机技术的快速发展,人们的日常生产生活发生了巨大转变,也获得了各种便捷,从而演变成了现代化社会最不可获取的部分。但是计算机系统的安全性依旧有待提高,其不安全因素主要有计算机信息系统自身与人为操作,而计算机病毒是最常见且最不安全的因素,病毒的存在不仅会造成资源与财富浪费,还会导致社会性灾难。并且在互联网技术的大范围普及下,邮件、脚本、网页、木马、蠕虫等病毒愈发泛滥,计算机用户随时随地可能会遭遇攻击,所以采用多元化算法与技术检测并预防计算机病毒已是必然趋势[1]。据此本文基于密码算法设计了计算机病毒检测系统,以期能够为防控病毒做出一定贡献。
1 密码算法分析
密码算法可保护并认证数据,通常用于为计算机提供安全防护,但是密码算法实际上一把双刃剑,其在提供安全保护的同时,很多攻击者也会利用密码算法逃避安全部门的追踪检测,导致有关调查取证工作难以有序开展,从而严重威胁着网络安全与社会和谐[2]。
一般情况下,密码算法主要基于加壳免杀、加密通信、加密勒索方式散播计算机病毒。其中加壳免杀方式会隐藏病毒特性,无法以静态特征码识别并查杀病毒;加密通信方式会通过HTTP 协议伪装为网页,以此绕过防火墙入侵计算机;加密勒索方式的破坏性更巨大,此方式下散播的病毒会直接导致用户的计算机文件访问异常,给用户带来不可挽回的损失。比特币勒索病毒便是以加密勒索方式攻击了数百万计算机,支付赎金用户上万,用户根本无法获取解密私钥,无法破解,很多用户只能通过支付赎金的方式获取密钥。
现阶段基于密码算法的计算机病毒依旧在蔓延,对此如何有效迅速地检测并分析病毒的工作已经迫在眉睫,但是当前计算机病毒密码算法的自动化系统研究仍旧亟待深入[3]。
2 计算机病毒结构模式分析
虽然当前的计算机病毒逐渐海量化,类型也逐步复杂化,但基于病毒程序代码分析,对比可知大部分病毒程序均是由引导模块、传染模块、破坏表现模块共同组成的。计算机病毒结构模式[4]具体见图1。
图1 计算机病毒结构模式
3 计算机病毒密码算法检测系统设计
3.1 系统架构
计算机病毒密码算法检测系统整体架构具体见图2。
图2 计算机病毒密码算法检测系统整体架构
用户通过传输待分析病毒文件于系统中,经过三种算法检测之后生成最终分析结果[5-6]。
第一环节,加壳算法检测。基于加壳指纹特征库和PE 文件信息熵相结合的方式,可保障计算机病毒加壳算法识别精确度。其中已知壳需构建指纹特征库,以指纹特征匹配可迅速精准地检测出既知病毒使用的加壳算法;而未知壳由于加壳会造成文件数据信息熵增高,对此可通过PE 文件信息熵方式对病毒进行检测,以得知是否加壳。第二环节,静态特征密码算法检测。以病毒静态特征的详细分析实现密码算法和静态特征的映射建设,通过算法特征匹配检测病毒所使用的加密算法。第三环节,动态行为加密算法检测。一般情况下病毒为了逃避追踪检测,会采取加壳或指令转变技术隐匿算法的静态特征码,这时便可基于静态检测分析,进行算法动态分析与实时跟踪,从而提升密码算法检测精确度。
3.2 密码算法
3.2.1 加壳检测算法分析与实验
3.2.1.1 算法分析
传统静态加壳技术影响下,加壳病毒执行过程中会具备相同编码,所以检测与破解难度较小。为满足计算机病毒防护需求,攻击者提供了动态加壳技术理念,以随机加密算法,加密病毒程序代码与数据。为生成各种特征加密壳,通过随机密钥加密算法可实现多态引擎技术,基于保障同功能病毒样本,以新方式生成不同病毒代码序列,且序列中的特征码完全不同,从而导致单一特征码匹配检测技术逐渐失去了效用。
3.2.1.2 检测实验
通常基于UPX 加壳算法指纹特征匹配模式进行已知壳检测,结果具体见图3。
图3 UPX 加壳算法检测结果
由图可以看出,UPX 加壳算法能够迅速且准确地识别病毒为64 为可执行程序,且可通过UPX 实现加壳处理。
检测未知壳的时候利用以信息熵检测技术研发检测仪器,检测结果具体见图4。
图4 未知壳算法检测结果
由图可以看出,第一个样本评估为加壳,第二个样本评估为未加壳,准确率较高。
3.2.2 静态特征密码检测算法分析与实验
3.2.2.1 算法分析
静态特征密码检测算法即基于提取算法所需静态特征码,以标识密码算法。所以特征码提取合理性在很大程度上决定了密码算法识别准确率。
就原理不同主要划分为Hash 函数、分组密码算法、公钥密码算法三种算法。Hash 函数密码算法主要利用初始链值进行加密数据处理分析,即算法使用的初始链值保持不变的状态下,以这些数据为静态特征;分组密码算法则通过S 盒和置换盒等常数发挥辅助作用,其中S 盒负责混淆视听,定义为静态数值,就AES 算法来讲若病毒文件匹配到了S 盒,则病毒可能使用了AES 算法;公钥密码算法中的RSA 算法在生成密钥的时候需采用2 个大素数,而大素数的生成以小素数表为载体,所以此特征可在RSA 算法中得以应用。
3.2.2.2 检测实验
通过静态特征密码检测算法原理进行特征提取,并将其输入到IDA 密码算法检测插件特征库中。就AES 算法来讲,S盒作为16×16 数组,在内存内可存储为256 长度字符串。AES字节替代是关于字节的非线性变换,可通过可逆变换复合生成。
首先计算字节E 于有限域内的乘法逆元,结果记录为F=f0f1f2f3f4f5f6f7,规定字节00 变化成自身;其次对结果F 进行仿映射变换,字节E 替代之后的结果记录为字节G=G0G1G2G3G4G5G6G7。
基于转变生成S 盒字节代替数组,以其中前32 个字节作为算法识别特征。
基于以上所提取静态字符串特征,进行AES 密码算法识别检测,结果具体见图5。
图5 静态AES 密码算法识别结果
由图可以看出,静态特征密码检测算法可以快速准确识别出待检测程序内所包含的AES 算法。
3.2.3 动态行为密码检测算法
分析与实验
3.2.3.1 搭建环境
以Cuckoo 沙箱为载体搭建病毒动态行为密码检测分析环境,动态分析环境配置具体见表1。
表1 动态分析环境配置
3.2.3.2 算法库调用
许多病毒程序基于调用既有密码算法库得以实现。以动态行为密码检测算法调动过程识别技术,能够对病毒程序运行过程中加载的密码算法动态链接库加以准确识别,还可就API 函数跟踪调取的加密函数与所传输相关参数进一步生成密码算法调取序列,以还原勒索病毒中密码算法的具体调用过程。病毒可通过Crypto API 给予的有关函数对用户数据进行加密,并保障解密密钥不被用户获取。
3.2.3.3 加密通信流量
就已经感染病毒的计算机来讲,所有主机操作系统类型均需以网络实现和攻击者之间的通信交流,还可为了逃避检测选用加密通信方式。在计算机病毒动态化运行过程中会产生网络流量数据,将其储存为pcap 格式文件,在此文件中可分析病毒所用加密通信协议。通过加密通信流量分析可以顺利获得病毒在外对接的控制端或中转站的具体IP。对于比较简单的加密通信方式来讲,可以选用还原流量的方式,但是高强复杂的加密通信方式选用流量还原方式虽然难度非常大,但是依旧可在获取IP 通信地址的同时,以防火墙为辅助阻隔木马或者僵尸网络,最大程度上防控威胁,避免信息丢失。
通过Cuckoo 沙箱环境执行病毒程序,可获取加密流量数据报文,以数据报文分析可知,病毒程序与控制服务器的信息传输均会基于TLS 加密处理。
4 系统测试
以WannaCry 勒索病毒为例进行计算机病毒密码算法检测系统测试。
WannaCry 是一种蠕虫式勒索病毒软件,在2017 年爆发时,大量高校与企业内网遭遇感染,甚至部分政府机构业务被迫中断。此病毒加密设计比较复杂,切实结合了RSA 算法密钥安全分发和AES 算法数据加密速度快的优点。为进一步检验病毒密码算法检测系统精确性,给定勒索病毒加密和解密过程具体见图6。
图6 WannaCry 勒索病毒加密与解密
放置WannaCry 勒索病毒试样于计算机病毒密码算法检测系统后运行,跟踪检测发现了加密与解密函数的调用及参数,并详细分析调用的加密函数与参数,可以切实还原其生成密钥、导出密钥、加密处理等流程。
Crypt Acquire Context A 函数调用可实现CSP 密钥容器句柄获取,而参数provider_type 指定加密算法类型,而数值24 代表PROV_RSA_AES,明确病毒程序基于AES 与RSA 算法混合加密方式进行加密。可通过调用Crypt Gen Key 函数,以生成RSA 子密钥;可通过调用Crypt Export Key 函数,以导出RSA 子公钥;可通过调用Nt Write File 函数,编写RSA子公钥于文件内;可通过调用Crypt Export Key 函数,实时到处RSA 子私钥;可通过调用Crypt Encrypt 函数,基于RSA主公钥加密处理其子私钥;可通过调用Nt Write File 函数,把加密之后的RSA 子私钥结果储存于文件中。在文件加密处理之后会通过网络传输到攻击者服务器上,但是只有在用户缴纳赎金时,才可以获取解密密钥,从而实现数据信息解密。