raskolnikov90/Beatrice.py
GitHub: raskolnikov90/Beatrice.py
一款通过等价 x64 指令替换来绕过 YARA 与字节模式检测的机器码修补工具。
Stars: 12 | Forks: 1
# Beatrice.py
为了绕过 YARA 规则等检测方法(这些方法会查找特定字节并使用内存扫描器),Beatrice.py 会用相同大小的替代 x64 汇编操作码修补二进制文件中的机器码。该工具还旨在修改可执行文件或复杂二进制文件的机器码,这些文件包含字符串和其他数据,它会严格匹配机器码以避免破坏二进制文件。

# 用法
```
python3 beatrice.py
@@@@@@@ @@@@@@@@ @@@@@@ @@@@@@@ @@@@@@@ @@@ @@@@@@@ @@@@@@@@ @@@@@@@ @@@ @@@
@@@@@@@@ @@@@@@@@ @@@@@@@@ @@@@@@@ @@@@@@@@ @@@ @@@@@@@@ @@@@@@@@ @@@@@@@@ @@@ @@@
@@! @@@ @@! @@! @@@ @@! @@! @@@ @@! !@@ @@! @@! @@@ @@! !@@
!@ @!@ !@! !@! @!@ !@! !@! @!@ !@! !@! !@! !@! @!@ !@! @!!
@!@!@!@ @!!!:! @!@!@!@! @!! @!@!!@! !!@ !@! @!!!:! @!@@!@! !@!@!
!!!@!!!! !!!!!: !!!@!!!! !!! !!@!@! !!! !!! !!!!!: !!@!!! @!!!
!!: !!! !!: !!: !!! !!: !!: :!! !!: :!! !!: !!: !!:
:!: !:! :!: :!: !:! :!: :!: !:! :!: :!: :!: :!: :!: :!:
:: :::: :: :::: :: ::: :: :: ::: :: ::: ::: :: :::: ::: :: ::
:: : :: : :: :: : : : : : : : : :: :: : : :: :: ::: : :
Usage: beatrice.py
-h for usage and flags
-v for Verbose mode
-s for Safer mode, normal mode already mostly safe but still may break some binaries
```
# 该工具的功能
### 它会:
- 生成简单汇编 x64 指令及其替代指令的模式,将它们转换为机器码并在匹配时修补机器码。
- 构建包含立即数和其他难以转换为模式的指令的不同指令列表,并对它们应用适当的更改。
- 在可能的情况下应用替代指令编码方式。
- 创建一个在功能上与原始二进制文件完全相同但应用了上述修补的文件,从而帮助绕过 YARA 规则和一些杀毒软件解决方案。
### 它不会:
- 提供一种万能的解决方案。
- 修改字符串,因此基于字符串的检测仍然可能。
- 修改导入或对 Windows API 函数的调用,这些可能被某些 AV 和 EDR 检测到。
- 完全规避基于行为的检测。虽然这足以在某种程度上欺骗基于行为的检测,但不会改变核心功能,因此仍有可能被检测到。
虽然该工具可以单独使某些二进制文件绕过杀毒软件,但最好与其他规避技术结合使用(例如:修改用于加载器的 shellcode、帮助定制或修改的工具)。
# 针对 Windows Defender 和 Elastic YARA 规则的测试(2026 年 4 月)
### 可执行文件(.exe)
**Mimikatz 并带有混淆字符串** → [绕过 Defender,详见我的 Medium 文章](https://medium.com/@luisgerardomoret_69654/modifying-mimikatz-to-evade-defender-2026-dc701000289d)
**Metasploit** stageless 反向 TCP shell → 结果不一致,有时能绕过 Defender,有时会被检测到,但可绕过 Elastic YARA 规则。
**Havoc** payload 使用默认配置且未修改 → 绕过 Defender(在上方 GIF 中可见),但因默认哈希和默认配置被 Elastic YARA 检测到。
**Sliver** payload 使用其默认混淆 → 被 Defender 检测到,但绕过了 Elastic YARA 规则。
**Sliver** 使用 skip-symbols 选项 → 因字符串被 Defender 和 Elastic YARA 共同检测到。
**AdaptixC2** payload 使用 IAT 隐藏 → 已对 Defender 具有规避性,但工具可在微软创建更多签名时提供帮助,同时绕过 Elastic YARA 规则。
**CobaltStrike** stageless payload → 绕过了检测字节,但仍因少量字符串被检测到。
### 原始二进制文件 / Shellcode(.bin)
使用 [DefenderYara](https://github.com/roadwy/DefenderYara/tree/main/Trojan/Win64)、[defender2yara](https://github.com/t-tani/defender2yara/tree/yara-rules/Win64/Trojan) 和 [Elastic 规则](https://github.com/elastic/protections-artifacts) 进行测试。
**Metasploit** stageless 反向 TCP shell → 绕过 YARA 规则。
**Havoc** payload 使用自定义配置且未修改 → 绕过 Defender YARA 规则,但因默认哈希和默认配置被 Elastic YARA 检测到。
**Sliver** payload 使用其默认混淆 → 绕过 YARA 规则。
**Sliver** 使用 skip-symbols 选项 → 因字符串被 Defender 和 Elastic YARA 共同检测到。
**AdaptixC2** payload 使用 IAT 隐藏 → 绕过 YARA 规则。
**CobaltStrike** stageless payload → 绕过了检测字节,但仍因少量字符串被检测到。
**Donut** shellcode → 绕过 YARA 规则。
关于 Havoc 的说明:在 Docker 中运行以解决编译器兼容性问题,因此 payload 能像最初编译时那样工作。
关于 CobaltStrike:我没有许可证,但我可以访问提供实验室的课程。
# 已知问题
使用 Garble 进行混淆的 Golang 编译二进制文件可能会损坏。
尽管大多数情况下有效,但某些二进制文件仍可能损坏,因此添加了安全模式选项,仅使用最基本的特性。
# 支持我
https://buymeacoffee.com/lainkusanagi
标签:AV 绕过, opcode 替换, python, x64 指令集, x64 汇编, YARA 绕过, 二进制分析, 二进制补丁, 云安全运维, 云资产清单, 代码混淆, 免杀技术, 内存扫描规避, 可执行文件修改, 指令替代, 暴力破解检测, 机器码修改, 漏洞利用开发, 补丁工具, 逆向工具, 逆向工程, 静态分析绕过