密码算法如何帮助黑客绕过杀毒软件?

信息安全 密码学 恶意软件 AES 杀毒软件
2021-08-20 02:48:01

我想知道黑客如何使用密码学绕过防病毒软件。

我对防病毒软件的工作原理没有深入的了解,但我知道每个防病毒软件都有签名库,所以当我们扫描 .exe 文件时,它实际上会将 .exe 的签名与它自己的库中的签名进行比较,如果匹配,防病毒软件会将 .exe 识别为病毒。

因此,通过在 .exe 文件上应用一些加密算法(使用工具“Crypter”),他们会更改 .exe 的签名,因此防病毒软件无法将其检测为恶意软件,对吧?但具体来说,他们如何在 .exe 文件上应用密码算法?我只在我的书中看到明文是如何加密的。

2个回答

可执行文件加密比真正的加密更容易混淆,因为加密文件仍然必须执行。所以“解密器”部分必须知道解密算法和/或密钥。

杀毒软件有:

  • 各种模拟器,用于 x86 代码、x64 代码、规范化 JavaScript 代码等。

  • 防病毒供应商已知的所有“加密器”和档案的各种解密器/解包器(例如,ESET 目前有 1228 个解密器/解包器)

至于你的问题:基本上签名匹配是解包、解密等之后完成的,当防病毒引擎发现当前文件没有更多已知的存档/加密/混淆级别时。


但是有两个例外:

  1. 有模块化病毒,例如。Flame,其中只有一个模块具有另一个模块的解密密钥,而另一个模块具有另一个模块的解密密钥,依此类推。捕获此类病毒需要在防病毒引擎中编写专用代码。

  2. 有一些勒索软件病毒,虽然本身没有被加密,但可以加密受感染计算机上的随机文件,除了病毒作者之外没有人拥有解密密钥。被此类病毒加密的文件无法通过防病毒软件恢复。

简而言之,攻击者可以创建一个可执行文件,其中包含加密病毒。当可执行文件下载到受害者机器时,它不会被检测为病毒,因为坏部分已加密。当用户点击文件时,外部可执行文件会将加密数据加载到内存中并对其进行解密,然后执行它,所有这些都使用 RAM,因此它永远不会接触硬盘驱动器。因此,防病毒软件不会检测到它,除非它具有运行时保护。根据使用的防病毒软件,通常可以绕过运行时检测我的调用 thread.sleep('10'); 或类似的东西。单击可执行文件时,它会等待 10 秒,然后执行加密文件。