Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/pwn1sher/frostbyte
ShellcodeShellcode 生成
GitHubpwn1sher/frostbyte

frostbyte

将AppDomain Manager注入与shellcode嵌入签名的二进制文件相结合,以规避EDR/AV检测,用于红队载荷。

查看仓库
3834664年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

FrostByte

前言:

过去几天我一直在尝试 AppDomain 管理器注入 技术,在之前的红队演练中,它针对某些 EDR 取得了不错的成功。虽然这对于初始访问向量来说非常不错,但我想发布一个 POC,帮助你将 shellcode 隐藏在其他地方。不再需要嵌入 shellcode 的 DLL 文件!

问题!

虽然这是一项独立使用时非常出色的技术,但当与诸如通过 ISO/ZIP/VHD/VHDX 文件发送 C# ClickOnce 之类的投递技术结合时,真正的问题是:有十分之一的概率,用于 appdomain 的 DLL 会被 AV/EDR 的 AI/ML 启发式检测到。这是因为在初始化 appdomain 之前,DLL 文件需要先被释放到磁盘上。暂时忽略远程 DLL 加载(.config 中的 UNC 路径),appdomain 的 DLL 会包含 shellcode,我强烈认为这是可能导致静态检测的原因,因为其余代码(即 WINAPI 调用)可以动态解析并很好地混淆。

我想在最小化 DLL 初始内容方面改进这项技术。起初,我尝试将加密的 shellcode 放在磁盘上的单独文件中,同时保留注入器 DLL,但后来我偶然发现了 Checkpoint 关于 Zloader 活动 的精彩博客。

TLDR 版本:我们可以将任意数据嵌入 PE 的某些字段中,且不会破坏文件的签名。这样我们的数据就会被嵌入,而 exe 文件仍能保持数字签名。

更多信息 - https://www.blackhat.com/docs/us-16/materials/us-16-Nipravsky-Certificate-Bypass-Hiding-And-Executing-Malware-From-A-Digitally-Signed-Executable-wp.pdf

所以思路是:将一个加密的 shellcode 存根嵌入到已知的已签名可执行文件中,同时设法保持其签名,就像 Zloader 恶意软件所做的那样。这样一来,AppDomain 管理器 DLL 内部将不再包含 shellcode,而只包含从加载它的 PE 二进制文件中解析 shellcode 并解密、作为单独线程执行的逻辑。这样做可能会降低 DLL 的静态检测率,同时你的 shellcode 被巧妙地放置在已签名的二进制文件中。

我试图通过手动篡改从 VirusTotal 获取的 ZLoader 样本来实现这一点,但后来发现了一个已经很好地实现了所有这些技术的项目——Sigflip。在这个 POC 中,我利用 Sigflip 的加载器代码来构建 AppDomain DLL,并使用 SigFlip 注入器将加密的 shellcode 嵌入到我们的 C# exe 中。

优势:

像 Cobalt Strike 的无阶段 shellcode 这样的大块 shellcode 将不再驻留在磁盘上未签名的 DLL 中,无论使用何种混淆/编码技术。DLL 更加干净、小巧、隐蔽,代码量极少,从而降低检测几率。

工作原理

Diagram

构建已签名 Shellcode 可执行文件的步骤

  • 选择任意一个你喜欢的 x64 已签名 C# 二进制文件,即你希望 Cobalt Strike 信标驻留并执行的二进制文件,例如:CasPol.exe 等。
  • 生成你的 Cobalt Strike 无阶段 Shellcode - x64-stageless.bin
  • 将两者放入一个包含 SigFlip 的文件夹中,然后运行以下命令:
    SigFlip.exe -i "Z:\ZLoader\CasPol.exe" "Z:\ZLoader\x64-stageless.bin" "Z:\ZLoader\update.exe" "S3cretK3y"
  • 感谢 SigFlip,现在你有了一个(Windows 已签名?)名为 update.exe 的二进制文件,它将是一个嵌入了加密 shellcode 的数字签名 PE。

构建 AppDomain 加载器 DLL 的步骤

  • 从 这里 获取 C# 模板代码
  • 将你在运行 SigFlip 时选择的加密密钥替换到第 163 行(你可能需要调整几个字节来确认你的 CS shellcode 是否被正确解密)
  • 将第 146 行的二进制路径替换掉
  • 修改第 158、165 行的日志文件路径
  • 使用以下命令将代码编译为 DLL:csc /target:library /out:test.dll test.cs
  • 将编译好的 DLL 和 update.exe.config 文件放在与已签名 shellcode exe 相同的文件夹中。
  • 执行 update.exe。

结论:

这个 POC 只是我脑海中的一个想法,将两种完全不同的防御规避技术组合在一起,帮助我和其他红队成员为其行动构建更好的初始执行载荷。本项目以 AppDomain 管理器注入为例,但该思路同样适用于其他注入技术,如 DLL 侧加载、DLL 劫持等。

致谢:

特别感谢 med0x2e,本 POC 基于他的 SigFlip 项目构建

参考资料:

  • https://research.checkpoint.com/2022/can-you-trust-a-files-digital-signature-new-zloader-campaign-exploits-microsofts-signature-verification-putting-users-at-risk/
  • https://www.blackhat.com/docs/us-16/materials/us-16-Nipravsky-Certificate-Bypass-Hiding-And-Executing-Malware-From-A-Digitally-Signed-Executable-wp.pdf
  • https://pentestlaboratories.com/2020/05/26/appdomainmanager-injection-and-detection/
  • https://github.com/med0x2e/SigFlip
下载工具