当前位置: 首页 > 科技观察

解密无文件攻击的各种姿势和最新检测方法

时间:2023-03-19 02:15:40 科技观察

“无文件攻击”并不是没有文件,而是一种攻击策略。出发点是避免将恶意文件放在磁盘上以逃避安全检测。所谓无文件并不一定是整个攻击过程中没有文件,而是其中一部分使用了无文件攻击[1]。最近受NDSS2020顶会文章[2]的启发,查阅了趋势科技等几篇安全报告和网络文章,认为无文件攻击是一种趋势,“离地/不可见/无文件”是一个很目前流行的方向。因此,本文围绕fileless进行研究,收集了2020年4月之前的相关资料,包括最新的fileless勒索、fileless挖矿等无fileless攻击手段,并进行总结。同时对这篇顶会文章的核心内容进行分析,进一步理解无文件攻击的检测思路。1.无文件勒索软件最近变得更加特殊,有ProLock(BMP图像中嵌入的shellcode)、WannaRen(office激活工具中的硬编码powershell命令),以及结合powershell将常见的恶意代码注入合法进程和宏。具体情况如下:ProLock[3](2020.4.19)将恶意shellcode嵌入到BMP图片文件中(之前版本的PwndLocker被嵌入到AVI视频中,加密文件可能被恢复),混淆后的powershell代码将镜像中的代码是直接注入内存执行的,这样可执行文件是不落地的。使用ShellCode开发的勒索软件比宏结合powershell更难被安全软件识别,未来可能会成为更多勒索软件开发者的选择。ProLock勒索软件的作者将代码嵌入到名为“WinMgr.bmp”的BMP图像中。ShellCode代码片段如下:PowerShell脚本反混淆后,直接将ShellCode注入内存运行。Powershell脚本如下:ShellCode代码注入内存:ProLock勒索病毒为了成功加密文件,会调用cmd执行命令停止大量服务。这些服务包括数据库相关服务、数据备份相关服务、安全软件相关服务,如下图:WannaRen勒索病毒[4](2020.4.14)网上某软件园2016office激活工具硬编码powershell相关命令,如下:解码后得到可执行代码。执行后会延迟2000秒(约33分钟)检测是否有相关的安全保护进程。针对性很强,看得出来是针对国内普通的个人用户环境。最后会执行一个powershell脚本,将站点返回的内容作为命令执行。FTCode勒索软件[5](2020.1)FTCode勒索软件是一种基于PowerShell脚本的勒索软件,主要通过垃圾邮件进行传播。/2019.1.2)它向目标系统的合法进程svchost.exe注入恶意代码,然后自毁以逃避检测。2、无文件挖矿无文件挖矿的方法比较普遍,一般是使用powershell直接在内存中执行,在powershell中嵌入PE文件加载等,也有使用WMI+powershell驻留在内存中的。最近一篇关于powershellfilelessmining病毒处置的文章[7]也表明,filelessmining仍然存在。具体案例如下:PowerGhost最新样本2019.11[6][7]PowerGhost是2018年发现的一种挖矿和DDOS病毒,利用powershellfileless方式进行攻击感染。其感染方式采用永恒之蓝、MSSQL爆破、SSH爆破、wmi、smb爆破远程命令执行等,同时攻击windows和linux,病毒一旦进入内网,就会在内网迅速传播。目前,其主要感染区在广东、浙江、上海和江苏。病毒父模块分为x86和x64两个版本,x86使用antitrojan.ps1,x64使用antivirus.ps1,本次分析分析的是x64版本的antivirus.ps1。当前病毒版本为1.5。Parentpayload分布及执行图,antivirus.ps1主要分为3个部分,如下图:永恒之蓝木马[8][9]2019年4月3日,腾讯安全御鉴威胁情报中心检测到永恒之蓝下载器木马又更新了。本次更新改变了原有挖矿木马的执行方式。通过在Powershell中嵌入PE文件加载,可以执行“无文件”挖矿攻击。新的挖矿木马执行方式没有文件,直接运行在Powershell.exe进程中,可能难以检测和清除。这种注入“白进程”执行的方式会使检测和删除恶意代码变得困难。Coinminer2019年第二季度,新的挖矿病毒变种也出现了。首先值得注意的是,趋势科技近期截获了“Coinminer.Win32.MALXMR.TIAOODCJ”病毒,该病毒可先利用CVE-2019-2725漏洞执行特定命令利用PowerShell进行恶意操作并下载来自远程C??&C服务器的证书文件cert.cer,使用Windows中的证书管理组件CertUtil对该文件进行解码,从而躲避杀毒软件的检测。PowershellMiner[10]2018年3月,使用WMI+Powershell实现无文件攻击,目的是在内存中永久挖矿。由于本次攻击没有本地登陆文件,检测难度大,企业利益被无声侵犯。这种攻击具有无文件攻击的特点,所有模块函数都加载到内存中执行,没有本地登陆文件。为了在内网快速传播,使用了SMB弱口令爆破攻击和“永恒之蓝”漏洞攻击。只要二者之一能够成功,就可以横向感染其他宿主。病毒直接使用powershell.exe进行挖矿,CPU占用率达到87%。它的脚本功能是从wmi类中读取并执行挖矿代码。如上图所示,原始病毒体为info*.ps1(64位系统对应info6.ps1,32位系统对应info3.ps1),是一个Powershell脚本。加载后内存中有4个模块,分别是挖矿模块、Minikatz模块、WMIExec模块、MS17-010攻击模块。攻击顺序如下:1.首先,挖矿模块启动,继续挖矿。2、其次,Minikatz模块对目的主机进行SMB爆破,获取NTLMv2数据。3、然后,WMIExec使用NTLMv2绕过哈希认证,进行远程执行操作。如果攻击成功,就会执行shellcode,让病原体再复制一份到目标主机上,使其运行。该过程结束。4、最后,如果WMIExec攻击失败,尝试使用MS17-010“永恒之蓝”漏洞攻击。如果攻击成功,则执行shellcode将病原体复制到目标主机并使其运行(对每台被感染主机重复1、2、3、4)。该病毒采用WMI+Powershell内存驻留方式,模块以服务形式存在,每5600秒可自动触发一次。3、无文件攻击检测由于通常运行在内存中避免登陆文件,powershell脚本容易混淆检测困难,传统的基于文件的杀毒软件很难检测到此类攻击。因此,NDSS2020上有学者提出了一种有效的离地攻击检测方法[2],作者认为也可以推广到一般的无文件攻击检测。引入概念:离地攻击,攻击者仅使用预安装的软件,而没有在系统上安装额外的二进制可执行文件。带有宏、VB脚本、powershell脚本或使用系统命令(如netsh命令)的文档都属于离地攻击的范围。在使用军民两用工具时,如果下载了Mimikatz等,就不能称为离地攻击[11][12]。问题描述:现有的杀毒软件检测方法很难检测到此类攻击,并分析检测到这种攻击所需的条件。解决方案:依靠内核级本源监控来捕捉各个目标程序的动态行为。异常检测模型是通过嵌入来源数据来构建的,以检测偏离先前观察到的历史程序运行时的行为,从而检测到先前未见过的攻击。使用神经嵌入模型,流程原点图的不同部分被投影到n位值向量空间,其中相似的组件在地理上更靠近。使用一种新的基于密度的检测方法检测原始图中的异常因果路径。文章贡献:设计并实现了provendetector,一个基于源的系统,用于检测带有伪装技术的隐蔽恶意软件;为了保证较高的检测精度和效率,提出了一种新的路径选择算法来识别潜在的恶意部分;设计了一个新的神经嵌入和机器学习管道来自动为每个程序建立一个配置文件并识别异常过程;对真实恶意软件的系统评估通过多项可解释性研究证明了其有效性。其核心ProvDetector分为四个部分:图构建、特征提取、嵌入和异常检测。部署监控代理收集系统数据,并根据定义放入数据库。定期扫描数据库以检查是否有新添加的进程被劫持。对于每个过程,首先构造一个原始图(图构造)。然后从源点图中选择路径子集(特征提取),并使用新型检测器将路径转换为数值向量(嵌入)以获得嵌入向量的预测并报告最终决策(异常检测)。实验评价:评价其检测准确率,使用precision、recall和F1-score来衡量。同时对测试结果进行说明,指出测试结果正确的原因,并给出理论证明。分析其在训练和测试过程中的运行性能、管理费用和费用,评估其企业实用性。是一篇工作量大、意义重大的精品文章。根据赛门铁克的一份报告,隐蔽的恶意软件占2019年上半年所有攻击的35%,增长了364%,而且这些攻击成功的可能性是传统攻击的10倍。更多的隐蔽攻击手段和更高的成功率使得无文件攻击越来越流行。同时,由于其难以捕获和探测的特点,给传统防御技术带来了巨大挑战。