
Convierte shellcode en ✨ diferentes ✨ formatos!
Bluffy es una utilidad que se utilizó en experimentos para evadir productos antivirus (de forma estática) formateando shellcode en formatos de datos de apariencia realista.
Herramientas de prueba de concepto, como Ninja_UUID_Runner de 0xBoku y UuidShellcodeExec de ChoiSG, inspiraron el concepto inicial de Bluffy.
Hasta ahora, hemos implementado:
$ python3 bluffy.py -h
⣇⣿⠘⣿⣿⣿⡿⡿⣟⣟⢟⢟⢝⠵⡝⣿⡿⢂⣼⣿⣷⣌⠩⡫⡻⣝⠹⢿⣿⣷
⡆⣿⣆⠱⣝⡵⣝⢅⠙⣿⢕⢕⢕⢕⢝⣥⢒⠅⣿⣿⣿⡿⣳⣌⠪⡪⣡⢑⢝⣇
⡆⣿⣿⣦⠹⣳⣳⣕⢅⠈⢗⢕⢕⢕⢕⢕⢈⢆⠟⠋⠉⠁⠉⠉⠁⠈⠼⢐⢕⢽
⡗⢰⣶⣶⣦⣝⢝⢕⢕⠅⡆⢕⢕⢕⢕⢕⣴⠏⣠⡶⠛⡉⡉⡛⢶⣦⡀⠐⣕⢕
⡝⡄⢻⢟⣿⣿⣷⣕⣕⣅⣿⣔⣕⣵⣵⣿⣿⢠⣿⢠⣮⡈⣌⠨⠅⠹⣷⡀⢱⢕
⡝⡵⠟⠈⢀⣀⣀⡀⠉⢿⣿⣿⣿⣿⣿⣿⣿⣼⣿⢈⡋⠴⢿⡟⣡⡇⣿⡇⡀⢕
⡝⠁⣠⣾⠟⡉⡉⡉⠻⣦⣻⣿⣿⣿⣿⣿⣿⣿⣿⣧⠸⣿⣦⣥⣿⡇⡿⣰⢗⢄
⠁⢰⣿⡏⣴⣌⠈⣌⠡⠈⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣬⣉⣉⣁⣄⢖⢕⢕⢕
⡀⢻⣿⡇⢙⠁⠴⢿⡟⣡⡆⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣵⣵⣿
⡻⣄⣻⣿⣌⠘⢿⣷⣥⣿⠇⣿⣿⣿⣿⣿⣿⠛⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣷⢄⠻⣿⣟⠿⠦⠍⠉⣡⣾⣿⣿⣿⣿⣿⣿⢸⣿⣦⠙⣿⣿⣿⣿⣿⣿⣿⣿⠟
⡕⡑⣑⣈⣻⢗⢟⢞⢝⣻⣿⣿⣿⣿⣿⣿⣿⠸⣿⠿⠃⣿⣿⣿⣿⣿⣿⡿⠁⣠
⡝⡵⡈⢟⢕⢕⢕⢕⣵⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣶⣿⣿⣿⣿⣿⠿⠋⣀⣈⠙
⡝⡵⡕⡀⠑⠳⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠛⢉⡠⡲⡫⡪⡪⡣
Convert shellcode into ✨ different ✨ formats!
Escrito por:
~ Mez0
~ Michael Ranaldo
usage: Bluffy [-h] -b -o -m
optional arguments:
-h, --help muestra este mensaje de ayuda y sale
-b , --bin Especifica el archivo bin a cargar
-m , --mask Especifica la máscara para el shellcode
-x , --xor Aplica XOR al payload
-p , --preview Vista previa del formato creado
-pp, --payload_preview Vista previa del payload antes del formateo en C
--list Lista todas las máscaras disponibles
Escrito por:
Los siguientes elementos deben estar instalados antes de usar Bluff:
sudo apt install python3.9
sudo pip3 install rich
Dependiendo de si se va a ejecutar en Kali, Ubuntu 18, 19, 20, etc., el proceso de obtener y compilar con pcre2.8 puede ser diferente.
Para nosotros en Ubuntu, se desarrolló en:
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 21.04
Release: 21.04
Codename: hirsute
Para enlazar libpcre2-8.a, el archivo .a tuvo que ser incluido dentro de:
/usr/lib/gcc/x86_64-w64-mingw32/10-win32
En cuanto a la obtención de los archivos de encabezado y librería, se utilizó MSYS2. Pero si eres más inteligente que nosotros, entonces hazlo desde la fuente para Mingw64: https://pcre.org/.
La forma más simple de adquirir e instalar es ejecutar los siguientes comandos (después de verificar tu arquitectura, etc.):
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
Para construir un payload, obtén tu archivo binario. Para este ejemplo, usamos calc.bin, que simplemente carga calc.exe como prueba de concepto. Como Bluffy solo busca evadir el análisis estático mediante esteganografía, ocultando el binario dentro de un archivo que de otro modo sería inocuo, necesitarás investigar más para asegurarte de que tu payload también evada la detección dinámica.
Ejecuta bluffy, eligiendo una máscara de tu elección y proporcionando tu archivo .bin:
python ./bluffy.py -b calc.bin -m css -x
Verifica tu payload, luego constrúyelo. Para construir tu payload, copia el archivo .h que bluffy crea, renómbralo como css.c, ejecuta make para compilarlo a un ejecutable, luego prueba usando el directorio de ejemplos incluido:
mv css.h examples/css/css.h
cd examples/css
make
Esto usará el archivo "main.c" incluido para construir un ejecutable de Windows. Pruébalo para confirmar. Si también has usado calc.bin, deberías ver una nueva ventana de Calc abriéndose. Si es así, ¡felicidades!
Para más detalles sobre el uso de Bluffy y un recorrido de cómo funciona y cómo se ve el resultado, visita nuestro blog.
Aquí hay un ejemplo completo:
