
Extrai e descriptografa payloads internos de amostras do ofuscador Donut, detectando assinaturas de shellcode do loader, analisando a estrutura DONUT_INSTANCE e extraindo dados DONUT_MODULE.
Um extrator de configuração e módulo para o ofuscador de binários donut
donut-decryptor verifica arquivo(s) em busca de assinaturas conhecidas do shellcode do loader do ofuscador donut. Se localizado, ele analisará o shellcode para localizar, descriptografar e extrair a estrutura DONUT_INSTANCE incorporada no binário, e relatar dados de configuração pertinentes. Se um DONUT_MODULE estiver presente no binário, ele é descriptografado e gravado em disco.
Você pode instalar o donut-decryptor para uso navegando até o diretório raiz do projeto e usando o pip:
cd /path/to/donut-decryptor
python -m pip install .
Após a instalação, um script de linha de comando fica disponível. Para instruções de uso, utilize:
donut-decryptor --help
Este projeto utiliza Hatch para gerenciamento de projeto, Ruff para linting e formatação, e mypy para verificação de tipos.
Instale o Hatch:
pip install hatch
hatch run test
hatch run test-cov # with coverage
hatch run lint:style # check style
hatch run lint:fmt # format code and fix issues
hatch run lint:typing # run mypy type checking
hatch run lint:all # run all checks
Os arquivos presentes no diretório samples são arquivos 7z protegidos por senha usando a senha infected, todos os quais contêm donuts que podem ser decodificados usando este script.