检测恶意软件的新策略和技术正在兴起,但高级黑客也在使用高级掩盖来避免发现恶意软件。
1.反汇编和调试器(保护器)
恶意软件作者知道有多少恶意软件研究人员在工作,以及他们用来搜索威胁的工具。例如,研究人员和程序员通常使用反汇编程序和调试器来找到代码的功能。
有许多工具和技术可以检测内置的反汇编程序和调试器Windows函数。这些技术大多是为了帮助打击盗版——盗版者将使用这些工具来破解受版权保护的软件。
不幸的是,恶意软件作者将使用相同的技术来检测他们的程序是否在恶意软件分析师的计算机上运行。如果恶意软件检测到这些工具,它们可以停止运行或改变行为,使分析师难以工作。
2.Rootkits
在最高层,rootkit它是工具或技术的集合,可以使恶意软件深入系统,对操作系统不可见。处理器具有不同级别的执行权限(ring 0-3),攻击者可以利用这些级别的权限玩更高级别的程序。
比如Windows、Linux等操作系统,可以分为用户空间和内核空间。在最高级别,您只需要知道内核空间(ring0)比用户空间(ring3)拥有更高的权限。如果您有一个程序需要列出目录中的文件,您可以调用用户空间函数来做这件事,但也可以调用内核函数。
恶意程序可以获得内核权限“欺骗”在用户空间中运行的程序。因此,如果程序用户空间函数调用扫描文件系统,则内核rootkit在分析文件时欺骗它。当用户空间函数扫描恶意文件时,rootkit可以欺骗它说“这些不是你要找的文件”,或者更具体地说,只是绕过这些文件,而不是返回用户空间程序的执行结果。更糟糕的是,虚拟化rootkit欺诈增加了另一层保护,因为它在核心下运行hypervisor比限高于内核。
总之,恶意软件有时可以使用rootkit隐藏本地反病毒软件——通过隐藏操作系统本身的文件、网络连接或其他东西。然而,现在大多数人AV他们都有自己的核心驱动程序和保护措施,以避免常见的rootkit欺骗。
3.代码,过程和DLL注入
或动态链接库(DLL)注入,代表了一系列可用于在另一个流程上下文中执行代码的技术。恶意软件作者经常使用这些技术使他们的恶意代码在必要的Windows执行过程。
例如,它们可以注入explorer.exe、svchost.exe、notepad.exe或者其他合法的Windows在可执行程序中。选择必要的Windows恶意软件,恶意软件可以使自己难以被反病毒软件检测和杀死。恶意软件也可以通过连接传统的网络过程来隐藏其恶意流量。随着时间的推移,微软修复了许多被网络罪犯使用的过程或代码注入技术,但研究人员和攻击者仍在寻找新技术,如最近发现的技术AtomBombing内存注入技术。
还可以使用其他方法来避免恶意软件AV检测,如绑定或附加到法律程序中,以及休眠,以避免自动分析的计时攻击。当然还有很多其他的例子。
那么,如何检测或打败反恶意软件程序呢?不幸的是,这个问题没有简单的解决方案,技术和军备竞赛仍在继续。然而,我们在反病毒武器库中有一个非常强大的武器——恶意软件检测的行为分析。
许多规避技术要么修改恶意软件代码,以避免基于签名的检测和静态分析,要么实施一些看似明显的恶意操作。但即使可以改变,它所做的也不能改变,至少只要恶意软件想要感染计算机,制造后门或加密文件,这些行为是必不可少的。因此,许多先进的检测解决方案已经建立了基于行为识别恶意软件的系统。
一般来说,这些解决方案创建了“沙箱”,它的行为类似于受害者的计算机,并附有所有正常的支持软件。当系统收到新的/可疑的文件时,它在沙箱环境中执行并检查它们。通过监控数百种已知的恶意软件行为,包括已知的规避技术,这些解决方案可以准确、积极地报告可执行文件是否恶意。在机器学习的进一步驱动下,行为分析可能是恶意软件防御的未来和整体防御的未来。