了解攻击者如何在“合法”软件中隐藏恶意软件:技术深度解析

发布: (2026年3月5日 GMT+8 06:05)
8 分钟阅读
原文: Dev.to

抱歉,我目前无法直接访问外部链接来获取文章内容。请您把需要翻译的正文粘贴到这里,我会按照您的要求将其翻译成简体中文并保留原有的格式。

故事开始:对恶意软件的好奇

在阅读了 WannaCry 之后,大家都在讨论它利用的漏洞——EternalBlue、SMB 漏洞,等等。更让我感兴趣的是 恶意软件到底是如何隐藏自己的

攻击者是如何让恶意代码看起来像正常软件的?他们又是如何确保它在不引起怀疑的情况下运行的?

这正是 特洛伊木马 的本质:一个看似合法的程序,却携带隐藏的负载。理解这种行为对任何认真对待网络安全的人来说都至关重要,因为 防御始于对进攻的了解

于是,我决定在一个受控、合乎伦理、用于教育的项目中探索这个概念:构建我自己的二进制绑定器

教育目标

目标是了解特洛伊式投递背后的机制

我想在安全的环境中模拟以下情况:

  • 一个可执行文件内部携带另一个可执行文件
  • 隐藏的程序在可见程序启动后运行
  • 在不破坏操作系统或触发错误的前提下,协调执行流程

本质上,绑定器将两个可执行文件合并为一个,同时保持所有功能正常。

绑定器的工作原理(技术概述)

想象一个看起来像单个程序的文件,却暗中携带两个可执行文件。这正是我所构建的。

最终合并文件结构

[ Python runtime stub - visible program ]
#--MAGIC_DELIMITER--
[ Hidden binary 1 ]
#--MAGIC_DELIMITER--
[ Hidden binary 2 ]

运行时存根

存根是程序的“外观”,即用户看到并执行的部分。它的职责包括:

  1. 二进制模式打开自身,并定位分隔嵌入负载的分界符
  2. 将隐藏的二进制文件提取到临时目录
  3. 按顺序执行它们。
  4. 清理所有临时文件。
with open(sys.argv[0], 'rb') as f:
    data = f.read()
parts = data.split(MAGIC_DELIMITER)

这就是特洛伊式负载投递的核心思路:可见程序协调隐藏行为。

为什么这很重要:Python 解析挑战

Python 在执行前会先解析整个源文件。如果你直接在文件末尾追加原始二进制数据,Python 会抛出 SyntaxError,因为它会尝试解释非 Python 字节。

--binary bytes--

为了解决这个问题:

  • 使用 结构化分隔符(字节安全、在负载中不太可能出现)。
  • 在存根运行后立即使用 os._exit(0) 终止 Python 执行。
  • 确保二进制文件从 临时目录 执行,避免文件系统杂乱。

这些技术类似于恶意软件在不提醒用户或破坏执行的情况下安全解压负载的方式。

入口点管理

每个可执行文件都有一个 入口点——即执行开始的内存地址。在我的绑定器中,存根成为入口点,控制流程:先是隐藏的二进制文件,然后是第二个。这在概念上类似于投放器在多阶段恶意软件中重定向流程的方式。

了解入口点对于以下方面至关重要:

  • 逆向工程
  • 恶意软件检测
  • 安全的软件打包

临时执行环境

import tempfile, subprocess

with tempfile.TemporaryDirectory() as temp_dir:
    subprocess.run(["python3", bin1_path])

为什么使用临时目录?

  • 减少磁盘上的残留物。
  • 模拟短暂的恶意软件阶段。
  • 避免覆盖关键系统文件。

安全分析人员经常监控这些行为:

  • 短生命周期的二进制文件
  • 自解压载荷
  • 意外的子进程

自己动手实现让我们深入了解 此类行为在野外是如何出现的,以及防御者是如何检测它们的。

权限与执行

import os
os.chmod(bin1_path, 0o755)

Linux 二进制文件需要执行权限。了解文件权限对于以下方面至关重要:

  • 安全部署
  • 防止利用
  • 安全沙箱

教育要点

通过构建这个绑定器,我获得了以下动手实践经验:

  • 字节级文件操作
  • 执行流程编排
  • 自引用加载(程序读取自身)
  • 进程生成与临时环境
  • 可执行文件入口点管理
  • 对特洛伊式行为的实际理解

从网络安全的角度来看,要有效检测或防御恶意软件,需要了解攻击者的设计方式。该项目让我能够安全地体验进攻性机制,从而增强了我设计防御策略的能力。

伦理与安全考虑

  • 此教材用于教育目的,不包含恶意负载
  • 切勿嵌入真实恶意软件或在未授权系统上执行代码。
  • 对攻击性技术的负责任理解对网络安全职业至关重要。

未来扩展

为了更深入的学习,你可以:

  • 在头部层面合并实际的 ELF 二进制文件。
  • 添加对 Windows PE 格式的支持。
  • 允许对隐藏负载的执行顺序进行控制。
  • 实现负载加密和完整性验证。

这些扩展模拟 真实世界的恶意软件技术,提供对检测和防御的洞察。

项目与案例研究

完整代码、实现细节和技术文档:
GitHub 仓库

0 浏览
Back to Blog

相关文章

阅读更多 »