Bluffy 是一个用于实验的工具,通过将 shellcode 格式化为看起来像真实数据格式的形式,来(静态)绕过杀毒软件。
一些概念验证工具,例如 0xBoku 的 Ninja_UUID_Runner 和 ChoiSG 的 UuidShellcodeExec,启发了 Bluffy 的初始概念。
目前已实现:
$ python3 bluffy.py -h
⣇⣿⠘⣿⣿⣿⡿⡿⣟⣟⢟⢟⢝⠵⡝⣿⡿⢂⣼⣿⣷⣌⠩⡫⡻⣝⠹⢿⣿⣷
⡆⣿⣆⠱⣝⡵⣝⢅⠙⣿⢕⢕⢕⢕⢝⣥⢒⠅⣿⣿⣿⡿⣳⣌⠪⡪⣡⢑⢝⣇
⡆⣿⣿⣦⠹⣳⣳⣕⢅⠈⢗⢕⢕⢕⢕⢕⢈⢆⠟⠋⠉⠁⠉⠉⠁⠈⠼⢐⢕⢽
⡗⢰⣶⣶⣦⣝⢝⢕⢕⠅⡆⢕⢕⢕⢕⢕⣴⠏⣠⡶⠛⡉⡉⡛⢶⣦⡀⠐⣕⢕
⡝⡄⢻⢟⣿⣿⣿⣷⣕⣕⣅⣿⣔⣕⣵⣵⣿⣿⢠⣿⢠⣮⡈⣌⠨⠅⠹⣷⡀⢱⢕
⡝⡵⠟⠈⢀⣀⣀⡀⠉⢿⣿⣿⣿⣿⣿⣿⣿⣼⣿⢈⡋⠴⢿⡟⣡⡇⣿⡇⡀⢕
⡝⠁⣠⣾⠟⡉⡉⡉⠻⣦⣻⣿⣿⣿⣿⣿⣿⣿⣿⣧⠸⣿⣦⣥⣿⡇⡿⣰⢗⢄
⠁⢰⣿⡏⣴⣌⠈⣌⠡⠈⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣬⣉⣉⣁⣄⢖⢕⢕⢕
⡀⢻⣿⡇⢙⠁⠴⢿⡟⣡⡆⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣵⣵⣿
⡻⣄⣻⣿⣌⠘⢿⣷⣥⣿⠇⣿⣿⣿⣿⣿⣿⠛⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣷⢄⠻⣿⣟⠿⠦⠍⠉⣡⣾⣿⣿⣿⣿⣿⣿⢸⣿⣦⠙⣿⣿⣿⣿⣿⣿⣿⣿⠟
⡕⡑⣑⣈⣻⢗⢟⢞⢝⣻⣿⣿⣿⣿⣿⣿⣿⠸⣿⠿⠃⣿⣿⣿⣿⣿⣿⡿⠁⣠
⡝⡵⡈⢟⢕⢕⢕⢕⣵⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣶⣿⣿⣿⣿⣿⠿⠋⣀⣈⠙
⡝⡵⡕⡀⠑⠳⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠛⢉⡠⡲⡫⡪⡪⡣
将 shellcode 转换为 ✨ 不同的 ✨ 格式!
编写者:
~ Mez0
~ Michael Ranaldo
用法:Bluffy [-h] -b -o -m
可选参数:
-h, --help 显示此帮助信息并退出
-b , --bin 指定要加载的 bin 文件
-m , --mask 指定 shellcode 的掩码
-x , --xor 对 payload 进行 XOR 处理
-p , --preview 预览创建的格式
-pp, --payload_preview 在 C 格式化之前预览 payload
--list 列出所有可用的掩码
编写者:
使用 Bluffy 之前必须安装以下项目:
sudo apt install python3.9
sudo pip3 install rich
根据是在 Kali、Ubuntu 18、19、20 等系统上运行,获取和构建 pcre2.8 的过程可能不同。
我们在 Ubuntu 上开发时使用的版本是:
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 21.04
Release: 21.04
Codename: hirsute
为了链接 libpcre2-8.a,需要将 .a 文件放置在:
/usr/lib/gcc/x86_64-w64-mingw32/10-win32
至于获取头文件和库文件,我们使用了 MSYS2。但如果您比我们更聪明,可以直接从 Mingw64 的源码构建:https://pcre.org/。
因此,最简单的获取和安装方法是运行以下命令(请先确认您的架构等):
sudo apt install mingw-64
sudo wget https://packages.msys2.org/package/mingw-w64-x86_64-pcre2?repo=mingw64 -P /usr/lib/gcc/x86_64-w64-mingw32/10-win32
要构建 payload,请准备好您的二进制文件。在本例中,我们使用了 calc.bin,它仅作为概念验证,用于加载 calc.exe。由于 Bluffy 仅旨在通过隐写术来逃避 静态 分析,将二进制文件隐藏在一个看似无害的文件中,您还需要进一步研究,以确保您的 payload 也能逃避 动态 检测。
运行 bluffy,选择您想要的掩码并提供 .bin 文件:
python ./bluffy.py -b calc.bin -m css -x
检查您的 payload,然后构建它。要构建 payload,请复制 Bluffy 创建的 .h 文件,将其重命名为 css.c,运行 make 构建为可执行文件,然后使用附带的 examples 目录进行测试:
mv css.h examples/css/css.h
cd examples/css
make
这将使用附带的 "main.c" 构建一个 Windows 可执行文件。确认测试结果。如果您也使用了 calc.bin,应该会看到一个 Calc 窗口弹出。如果成功,恭喜!
有关 Bluffy 的更多详细信息、工作原理及输出样式的介绍,请查看我们的博客。
以下是一个完整示例:
