让我们假设(在基于 UNIX 的平台上)安装了带有一些社会工程技巧的恶意软件。最初安装的代码本身可能是良性的,但唯一的恶意活动是恶意软件连接到 C&C 服务器并检索一些额外的恶意负载。然后,恶意软件会尝试执行检索到的恶意负载。
对我来说不太清楚的是恶意负载是如何执行的?是否需要将其写入文件然后调用 execve?还有其他可能性吗?
让我们假设(在基于 UNIX 的平台上)安装了带有一些社会工程技巧的恶意软件。最初安装的代码本身可能是良性的,但唯一的恶意活动是恶意软件连接到 C&C 服务器并检索一些额外的恶意负载。然后,恶意软件会尝试执行检索到的恶意负载。
对我来说不太清楚的是恶意负载是如何执行的?是否需要将其写入文件然后调用 execve?还有其他可能性吗?
有很多方法可以运行下载的代码:
mmap执行内存,将有效负载加载到其中,分配函数指针并调用它。我确信还有更多方法,但我怀疑涵盖了主要类别(编写和执行、解释它、将其交给其他人解释或直接运行)。可能有一些方法可以诱使系统执行未写入文件系统的 ELF 可执行文件(可能通过命名管道),但没有立即想到。
编辑:见fexecve()。这应该让您创建一个管道、fork,然后 fexecve 从父管道读取可执行文件,而无需写入文件。
可能会使用像 The Grugq 的“userland exec ”这样的东西。这种方法的优点是不会在磁盘上留下任何法医证据。这一切都在记忆中。