在红队行动 (Red Team) 或渗透测试中,如何有效地将载荷 (Payload) 投递到目标机器并执行,同时又不引起对方的怀疑,是至关重要的一步。常见的策略之一就是将恶意程序与一个看似无害的正常文件(如:PDF文档、图片、安装包等)进行捆绑。当用户打开这个捆绑后的文件时,表面上是正常文件被打开,但实际上我们的恶意载荷已在后台悄悄执行。

为了简化和高效化这一过程,我使用 Go 语言开发了一款钓鱼捆绑框架——GoPhantom

🚀 项目简介

GoPhantom 是一个轻量级的文件捆绑工具,旨在将一个正常文件(如文档、图片等)与一个恶意载荷(Payload,通常是 .exe 程序)打包成一个全新的可执行文件。当用户运行这个新生成的文件时,它会首先释放并打开正常的“诱饵”文件以迷惑用户,同时在后台静默执行我们预设的恶意载荷。

这种技术在钓鱼攻击和社会工程学场景中非常实用,可以大大提高载荷的执行成功率。

✨ 主要特性

GoPhantom 的设计目标是简单、高效和稳定。其核心功能包括:

  1. 文件捆绑 (File Bundling): 支持将任意类型的“诱饵”文件与一个 .exe 载荷文件进行捆绑。
  2. 图标伪装 (Icon Spoofing): 能够提取并应用“诱饵”文件的原始图标到生成的程序上,使其更具迷惑性。
  3. 静默执行 (Silent Execution): 在后台执行载荷,对用户完全透明。
  4. UAC绕过 (UAC Bypass): 内置了基于 FodHelper.exe 的 UAC 绕过技术,尝试以高权限执行载荷,增加了权限维持的可能性。
  5. 跨平台编译: 基于 Go 语言的特性,可以轻松地在 Windows, macOS 或 Linux 上编译出 Windows 平台的可执行程序。

🛠️ 使用方法

使用 GoPhantom 非常简单,只需通过命令行参数指定相关文件路径即可。

1. 环境准备

确保你已经安装了 Go 语言环境 (Golang)。

2. 获取项目

git clone https://github.com/watanabe-hsad/GoPhantom.git
cd GoPhantom

3. 编译

你可以直接运行 main.go,或者编译成可执行文件。

# 直接运行
go run main.go -normal "C:\path\to\your\normal\file.pdf" -payload "C:\path\to\your\payload.exe" -output "C:\path\to\output\NewFile.exe"

# 编译后运行
go build -ldflags "-s -w -H=windowsgui" main.go
./main.exe -normal "C:\path\to\your\normal\file.pdf" -payload "C:\path\to\your\payload.exe" -output "C:\path\to\output\NewFile.exe"

参数说明:

  • -normal: 指定正常的“诱饵”文件路径。
  • -payload: 指定你的恶意 .exe 载荷文件路径。
  • -output: 指定生成的捆绑文件的输出路径及名称。

例如,我们想把一个名为 report.pdf 的报告和我们的后门程序 shell.exe 捆绑起来,生成一个名为 final_report.exe 的文件:

go run main.go -normal "D:\files\report.pdf" -payload "D:\payloads\shell.exe" -output "D:\output\final_report.exe"

执行后,final_report.exe 会拥有和 report.pdf 相同的图标。当目标用户双击运行时,PDF阅读器会自动打开 report.pdf,而 shell.exe 会在后台被悄无声息地执行。

⚙️ 技术实现浅析

GoPhantom 的核心原理分为几个步骤:

  1. 资源读取: 程序首先读取 -normal-payload 参数指定的两个文件的二进制数据。
  2. 数据拼接: 它将这两个文件的二进制数据拼接在一起,并在它们之间或头部加入特定的分隔符或元数据(如每个文件的原始大小)。
  3. 模板编译: GoPhantom 的主体是一个“模板”程序。在编译时,它会将拼接好的二进制数据块作为一个字节数组资源嵌入到这个模板程序的代码中。
  4. 运行时逻辑:
    • 当用户运行最终生成的程序时,它会从自身的资源中读取嵌入的字节数组。
    • 根据元数据,它将数据块拆分回原始的“诱饵”文件数据和“载荷”文件数据。
    • 它将这两个文件写入到临时目录(如 C:\Users\Username\AppData\Local\Temp)下。
    • 使用 exec.Command 或类似的系统调用来打开“诱饵”文件,给用户一个即时反馈。
    • 同时,它会尝试利用 FodHelper.exe 来绕过 UAC 并执行“载荷”文件。

整个过程被封装在一个 main 函数中,利用 Go 语言强大的标准库和简单的交叉编译能力,使得工具的生成和使用都非常便捷。

展望

GoPhantom 目前已经实现了核心的捆绑和执行功能。未来可以从以下几个方面进行增强:

  • 内存执行: 直接在内存中加载和执行 Shellcode 或 PE 文件,而不是先写入磁盘,以增强隐蔽性。
  • 多种UAC绕过技术: 集成更多、更新的 UAC Bypass 方法,并允许用户选择使用哪一种。
  • 反沙箱/反调试: 加入一些基础的反分析技术。
  • 加密荷载: 对嵌入的载荷进行加密,在运行时再进行解密,以绕过静态查杀。

⚠️ 免责声明

本项目仅供授权的渗透测试和安全研究使用。请勿用于任何非法活动。对于滥用本工具造成的任何后果,开发者不承担任何责任。

希望 GoPhantom 能成为你工具库中实用的一员!欢迎大家 StarFork 和提交 Pull Request