0xhmza/washmachine

GitHub: 0xhmza/washmachine

Washmachine 是一个基于模板的 Windows shellcode 加载器生成框架,通过 YAML 驱动的方式集成多种规避技术,帮助红队快速构建不易被检测的可执行文件。

Stars: 0 | Forks: 0

# Washmachine Washmachine 是一款面向红队成员、恶意软件研究员和 CTF 选手的友好小工具箱。你只需放入一些 shellcode,选择几个选项,点击执行,就能得到一个可运行的 Windows 可执行文件。就这么简单。 如果你曾经历过将同一个加载器模板复制粘贴整个周六下午,替换一种反调试技巧,重新编译,然后纳闷为什么这还没自动化——那么这个工具就是为你准备的。 它提供两种形式,功能完全一致: - 带有按钮和下拉菜单的桌面应用,适合只想点击操作的时候 - 带有交互式 shell 的 CLI(类似于 `msfconsole` 的风格),适合想要编写脚本或通过 SSH 工作的时候 📖 [完整文档在此](https://0xhmza.github.io/washmachine-docs/) ## 功能说明 你提供一些 shellcode(一个 `.bin` 文件、剪贴板上的十六进制字符串,或一个 URL),然后选择你想要集成到加载器中的技巧:反调试、反沙箱、护栏、诱饵、持久化、进程注入等常见手段。点击构建,就会生成一个能运行你的 payload 的 Windows 可执行文件。 需要将 payload 注入到现有程序中吗?还有“后门”模式,提供五种不同的注入风格可选。 需要在接触某个 Windows 二进制文件之前对其进行分析吗?`analyze` 命令可以快速查看其头部、节、导入表和代码洞。 这就是全部功能。 ## 你可能喜欢它的原因 - **一个 YAML 文件控制一切。** 所有加载器模板、所有代码片段、所有技巧都存放在 `Assets/default.yaml` 中。当某个技术被标记时,只需编辑这个文件。无需重新编译或重建。你甚至可以将该文件粘贴到聊天机器人中,让它为你创造新的代码片段。 - **合理的默认设置。** 选择默认模板,点击执行,就能得到一个可运行的加载器。详细的调节选项在你需要时显示,不需要时隐藏。 - **无需额外操心。** 如果你没有编译器,它会自动为你获取 MinGW。如果缺少 `bin2shell` 或 `SGN`,`provision` 命令会下载它们。 - **自我测试。** 运行 `Testing\run_tests.ps1`,它会遍历每种编码器、每种代码片段组合以及测试文件夹中的每个 shellcode,并告诉你哪些出了问题。 ## 快速开始 ``` # 构建它 .\build.ps1 -Release # 仅首次:下载 bin2shell + sgn .\Output\Release\washmachine-cli.exe provision # 将一些 shellcode 编码为 loader exe .\Output\Release\washmachine-cli.exe encode -s Testing\binary\shellcodes\messagebox.bin # 改为进入交互式 shell .\Output\Release\washmachine-cli.exe ``` 偏好 GUI?同样,只需双击 `washmachine.exe` 即可。 ## 你可以用它做什么 | 命令 | 功能 | |---|---| | `encode` | 将 shellcode 封装到全新的加载器中并编译。 | | `analyze` | 查看 Windows PE 文件内部结构(头部、节、导入表、代码洞)。 | | `backdoor` | 将 shellcode 注入到现有 PE 中。提供五种注入方法可选。 | | `strip` | 提取或删除 PE 节和覆盖数据。 | | `show` | 浏览剧本:模板、代码片段、编码器、编译器。 | | `test` | 运行自动化测试套件。 | | `doctor` | 检查编译器和辅助工具是否存在。 | | `provision` | 下载外部辅助工具(bin2shell、SGN)。 | 你也可以输入不带任何标志的命令(仅 `encode`),CLI 会进入交互式设置界面,类似于 Metasploit 的 `msfconsole`。支持 Tab 补全。 ## 一些示例 ``` # 使用所有默认设置进行编码 washmachine-cli encode -s payload.bin # 选择一个 encoder 和一个 envelope washmachine-cli encode -s payload.bin -e 1 -v 1 # 在 bin2shell 之上添加 Shikata Ga Nai washmachine-cli encode -s payload.bin --sgn --shikata-enc 2 --shikata-max 64 # 从 donor exe 克隆图标和元数据,并将结果填充 1 MB 的 NOPs washmachine-cli encode -s payload.bin --clone-from "C:\path\to\7z.exe" --pad-nops 1048576 # 使用 code-cave 方法后门一个现有二进制文件 washmachine-cli backdoor --pe target.exe -s payload.bin -o patched.exe --method code-cave # 快速 PE 分析 washmachine-cli analyze target.exe ``` ## 功能概览 🗂️ **多种 shellcode 来源。** 从 `.bin` 文件加载、粘贴十六进制字符串、从 URL 获取,或使用内置测试 payload。 🧙 **Web payload 向导。** 引导式流程,带你完成编码、信封、Web 获取加载阶段,并在生成加载器之前验证你托管的 payload 是否正常响应。 📄 **YAML 剧本。** 一个文件包含所有模板和代码片段。可以替换、调整或发明新技术,而无需修改 C# 代码。 🔌 **可插拔的节。** 混合搭配反仿真、反沙箱、反调试、反分析、护栏、诱饵、UAC 绕过、安装、持久化、规避、进程注入和 shellcode 执行。大多数节允许你选择“无”以不包含它们。 🔍 **自动发现编译器。** 在 `PATH` 和常见的 Visual Studio 路径中查找 `cl.exe`、`g++.exe`、`clang++.exe`。如果找不到,它会自动为你获取 MinGW。 🧩 **捐赠克隆。** 从真实的已签名二进制文件中窃取资源、图标和元数据,使你的加载器能够融入其中。 🔄 **EXE 转平坦二进制文件。** 编译完整的加载器 exe,然后将其剥离回平坦的 `.bin`,以便重新注入到其他地方。 💉 **五种 PE 注入方法。** 代码洞、新节、节扩展、文本节填充和 TLS 回调。每种方法在隐蔽性和容量之间有不同的权衡。 🧪 **内置测试框架。** 三阶段无头测试,覆盖每种编码器、每种代码片段组合以及一组安全的 shellcode(包括一个 4 MB 的合成 payload,确保大输入路径得到测试)。 ## 系统要求 对于 CLI: - Windows 10(1809 或更高版本)或 Windows 11 - .NET 8 运行时(x64) - 在 `PATH` 上的 C++ 编译器(MSVC、MinGW 或 Clang)。如果没有,首次运行时会自动获取 MinGW。 - Python 3.10+(如需要编码功能,由 bin2shell 使用)。 对于桌面应用,除上述要求外,还需要 Windows App SDK 1.8 运行时。 仅此而已。 ## 测试 两个脚本涵盖自动化测试: ``` # 全面扫描:小 payload、大 payload、snippet matrix、multi-shellcode .\Testing\run_tests.ps1 # 仅小 payload encoder x envelope matrix(使用 messagebox.bin) .\Testing\run_tests.ps1 -Phase small # 大 payload 扫描(如果尚不存在,则合成一个 4 MB 的 NOP-sled) .\Testing\run_tests.ps1 -Phase big # 手动精选的 CLI 参数组合 .\Testing\run_param_tests.ps1 ``` 结果会生成到 `Testing\test_results.*.json` 和 `Testing\param_test_results.json`。 ## 项目结构 ``` washmachine/ ├── Assets/default.yaml the playbook: templates + snippets ├── Washmachine.Core/ the brains (shared library) ├── Washmachine.Cli/ the CLI app ├── Views/ Controllers/ ... the desktop app (WinUI 3) ├── Testing/ shellcodes, injectables, test scripts └── Output/ build artefacts (gitignored) ``` CLI 和桌面应用都基于 `Washmachine.Core`。两个 UI 层中均不包含业务逻辑,因此在一个界面中能做的事情,在另一个界面中同样可以做到。 ## 注意事项 这是一个研究工具。请将其用于你拥有、受雇测试或 CTF 中的内容。不要当个恶人。 ## 许可证 许可证详情请参见仓库。
标签:CLI, DNS 反向解析, DOM解析, Evasion Framework, Gophish, GUI, pdftotext, SSH蜜罐, Washmachine, WiFi技术, Windows可执行文件, YAML配置, 反沙箱, 反调试, 后门注入, 安全意识培训, 恶意软件研究, 数据展示, 模板框架, 红队, 规避检测, 进程注入, 逆向工具