
Converta shellcode em ✨ diferentes ✨ formatos!
Bluffy é um utilitário que foi usado em experimentos para contornar produtos Antivírus (estaticamente) formatando shellcode em formatos de dados com aparência realista.
Ferramentas de prova de conceito, como o Ninja_UUID_Runner do 0xBoku e o UuidShellcodeExec do ChoiSG, inspiraram o conceito inicial do Bluffy.
Até agora, implementamos:
$ python3 bluffy.py -h
⣇⣿⠘⣿⣿⣿⡿⡿⣟⣟⢟⢟⢝⠵⡝⣿⡿⢂⣼⣿⣷⣌⠩⡫⡻⣝⠹⢿⣿⣷
⡆⣿⣆⠱⣝⡵⣝⢅⠙⣿⢕⢕⢕⢕⢝⣥⢒⠅⣿⣿⣿⡿⣳⣌⠪⡪⣡⢑⢝⣇
⡆⣿⣿⣦⠹⣳⣳⣕⢅⠈⢗⢕⢕⢕⢕⢕⢈⢆⠟⠋⠉⠁⠉⠉⠁⠈⠼⢐⢕⢽
⡗⢰⣶⣶⣦⣝⢝⢕⢕⠅⡆⢕⢕⢕⢕⢕⣴⠏⣠⡶⠛⡉⡉⡛⢶⣦⡀⠐⣕⢕
⡝⡄⢻⢟⣿⣿⣷⣕⣕⣅⣿⣔⣕⣵⣵⣿⣿⢠⣿⢠⣮⡈⣌⠨⠅⠹⣷⡀⢱⢕
⡝⡵⠟⠈⢀⣀⣀⡀⠉⢿⣿⣿⣿⣿⣿⣿⣿⣼⣿⢈⡋⠴⢿⡟⣡⡇⣿⡇⡀⢕
⡝⠁⣠⣾⠟⡉⡉⡉⠻⣦⣻⣿⣿⣿⣿⣿⣿⣿⣿⣧⠸⣿⣦⣥⣿⡇⡿⣰⢗⢄
⠁⢰⣿⡏⣴⣌⠈⣌⠡⠈⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣬⣉⣉⣁⣄⢖⢕⢕⢕
⡀⢻⣿⡇⢙⠁⠴⢿⡟⣡⡆⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣵⣵⣿
⡻⣄⣻⣿⣌⠘⢿⣷⣥⣿⠇⣿⣿⣿⣿⣿⣿⠛⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣷⢄⠻⣿⣟⠿⠦⠍⠉⣡⣾⣿⣿⣿⣿⣿⣿⢸⣿⣦⠙⣿⣿⣿⣿⣿⣿⣿⣿⠟
⡕⡑⣑⣈⣻⢗⢟⢞⢝⣻⣿⣿⣿⣿⣿⣿⣿⠸⣿⠿⠃⣿⣿⣿⣿⣿⣿⡿⠁⣠
⡝⡵⡈⢟⢕⢕⢕⢕⣵⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣶⣿⣿⣿⣿⣿⠿⠋⣀⣈⠙
⡝⡵⡕⡀⠑⠳⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠛⢉⡠⡲⡫⡪⡪⡣
Convert shellcode into ✨ different ✨ formats!
Written by:
~ Mez0
~ Michael Ranaldo
usage: Bluffy [-h] -b -o -m
optional arguments:
-h, --help show this help message and exit
-b , --bin Specify bin file to load
-m , --mask Specify the mask for the shellcode
-x , --xor XOR the payload
-p , --preview Preview the created format
-pp, --payload_preview Preview the payload prior to C formatting
--list List all the available masks
Escrito por:
Os seguintes itens devem ser instalados antes de usar o Bluff:
sudo apt install python3.9
sudo pip3 install rich
Dependendo se será executado no Kali, Ubuntu 18, 19, 20, etc., o processo de obter e compilar com pcre2.8 pode ser diferente.
Para nós no Ubuntu, foi desenvolvido em:
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 21.04
Release: 21.04
Codename: hirsute
Para vincular libpcre2-8.a, o arquivo .a teve que ser incluído em:
/usr/lib/gcc/x86_64-w64-mingw32/10-win32
Quanto à obtenção dos arquivos de cabeçalho e lib, o MSYS2 foi usado. Mas se você é mais esperto que nós, faça a partir da fonte para Mingw64: https://pcre.org/.
A maneira mais simples de adquirir e instalar é executar os seguintes comandos (após verificar sua arquitetura 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 um payload, obtenha seu arquivo binário. Neste exemplo, usamos calc.bin, que apenas carrega calc.exe como prova de conceito. Como o Bluffy busca apenas evadir a análise estática usando esteganografia, ocultando o binário dentro de um arquivo inócuo, você precisará fazer mais pesquisas para garantir que seu payload também evite a detecção dinâmica.
Execute bluffy, escolhendo uma máscara de sua preferência e fornecendo seu arquivo .bin:
python ./bluffy.py -b calc.bin -m css -x
Verifique seu payload e então compile-o. Para compilar seu payload, copie o arquivo .h que o bluffy cria, renomeie-o para css.c, execute make para compilá-lo em um executável e então teste usando o diretório de exemplos incluso:
mv css.h examples/css/css.h
cd examples/css
make
Isso usará o "main.c" incluso para construir um executável Windows. Teste isso para confirmar. Se você também usou calc.bin, deverá aparecer uma nova janela do Calc. Se sim, parabéns!
Para mais detalhes sobre o uso do Bluffy e um passo a passo de como funciona e como é a saída, confira nosso blog.
Aqui está um exemplo completo:
