我一直在阅读很多关于多态和变形恶意软件的文章,以及它们在被发现后如何逃避基于签名的检测。这些技术似乎被用来逃避 AV 和 IDS 的反复检测。我突然想到,恶意软件作者的一个高优先级目标可能是首先防止他们的恶意软件被分析。恶意软件作者是否采用了任何类似的技术来防止他们的恶意软件被首次发现,从而使他们永远不会被报告/分析?
恶意软件如何逃避最初的发现?
今天的沙盒正在成为了解威胁的最快和最简单的方法。因此,反沙箱检测通常用于规避检测。高级恶意软件专门设计用于检测它何时在沙箱中运行。发生这种情况时,恶意软件将避免采取任何恶意行为并逃避检测。随后,当恶意软件被允许进入网络并发现自己处于真机中时,它将开始其恶意行为。
为了避免检测,高级恶意软件可以更改其签名。签名是通过检查对象的内部组件来创建的。熟练的恶意软件作者修改这些组件,同时保留对象的功能。恶意软件作者使用了多种转换技术,应用以下任何过程都可以改变签名:
• 代码排列
• 寄存器重命名
• 扩展和收缩代码
• 插入垃圾代码或其他结构
正如评论所暗示的那样,“恶意软件与防病毒软件”的主题作为一个整体是复杂的,而且通常过于宽泛,无法在这里给出答案。但是,我想解决我认为可能是您的误解导致您提出问题的问题。
在问题中,您写(我的重点):
我已经阅读了很多关于多态和变形恶意软件以及它们一旦被发现后如何逃避基于签名的检测的文章。
并在您添加的评论中(也是我的重点):
我认为一旦恶意软件已经被发现、分析和提取签名,这些技术更多地用于逃避 AV 和 IDS 的检测。我想知道是否有任何类似的技术专门用于防止恶意软件的初始发现,这样一开始就没有人会打扰报告、分析或从中提取签名。
根据我对上述内容的阅读,我认为您认为会发生的是:
- 有人部署了新的恶意软件。
- 它被发现、分析并提取“检测签名”。反病毒软件现在已准备好抵御新的恶意软件。
- 该恶意软件现在开始使用多态措施来逃避进一步的检测。
我不是恶意软件与反病毒之战的专家,但我认为发生的事情更像是:
- 分析现有恶意软件的各种示例并提取“检测签名”。它们的复杂性/微妙性可能有很大差异,但最简单的是,这些是任何未来的恶意软件(以简单的方式从现有恶意软件衍生而来)都可能包含的字节序列。
- 有人创建了一个新的恶意软件。为了掩饰其起源,并试图逃避现有的“检测签名”,作者采用了一种或多种多态技术。
- 如果“成功”,新的恶意软件将不会被AV 软件自动检测到:它需要手动检测。这通常只会在触发恶意软件的不良影响并且对受感染的机器进行取证分析后才会发生。
恶意软件如何逃避最初的发现?
通过混淆它的源代码。假设一个工具创建了一个恶意软件(使用解释性编程语言),其来源总是有点不同。通过混合代码,加密部分源代码,不同类型的编码等等......它每次都让自己组成有点不同。
之后,当源再次被编译成可执行文件(例如 .exe)时,我们可能会利用额外的编码和加密。该恶意软件不需要拥有解密自身的密钥,而是使用暴力破解。(只是一个例子)
这使得很难比较两个可执行文件并得出相同的软件和平结论。还有其他技术,例如在多台机器上部署源。每台机器执行一个过程/操作的一部分。
请注意,并非每个恶意软件在执行时都会做“讨厌”的事情。解密的行为可能会引起一些警觉,但这不是一个大问题。
逃避对基础设施的分析?
现代恶意软件需要一个由服务组成的后端。主要是 API 和图形界面。内部网络有不同的层,每层都有其用途。
可以通过在可信网络内部署关键软件来规避对恶意软件基础设施的分析。位于防火墙、代理等后面的网络......(是的,它确实需要防火墙)它不仅仅是一个有问题的可执行文件,而是部署了整个基础架构。最终的恶意软件可执行文件只是感染媒介。即使它变得容易识别,组织也可能编写(或购买)另一个代码并部署在现有基础架构上。
几乎不可能进入后端服务所在的受信任网络。即使你试图侵入它,他们也会知道这一点,并采取相应的行动。也许通过删除实例,抹去所有存在的线索。正在使用的软件已更新和修补。可能具有可靠的配置。请注意,需要许多不同的软件才能使其正常工作。单个可执行文件可能只是进入机器的一步,但从那时起,部署了更多软件以提供后期利用。足迹可执行文件可能是良性的。