
Ferramenta automatizada de sideloading de DLL com capacidades de evasão de EDR

Embora o DLL sideloading possa ser usado para fins legítimos, como carregar bibliotecas necessárias para o funcionamento de um programa, ele também pode ser usado para fins maliciosos. Atacantes podem usar o DLL sideloading para executar código arbitrário em um sistema alvo, frequentemente explorando vulnerabilidades em aplicativos legítimos que são usados para carregar DLLs.
Para automatizar o processo de DLL sideloading e torná-lo mais eficaz, a Chimera foi criada como uma ferramenta que inclui metodologias de evasão para contornar produtos EDR/AV. Esta ferramenta pode criptografar automaticamente um shellcode via XOR com uma chave aleatória e criar imagens de modelo que podem ser importadas para o Visual Studio para criar uma DLL maliciosa.
Além disso, são usadas Dynamic Syscalls do SysWhispers3 e uma versão de assembly modificada para evadir o padrão que o EDR procura, são adicionados NOP sleds aleatórios e registradores são movidos. Além disso, o Early Bird Injection também é usado para injetar o shellcode em outro processo que o usuário pode especificar, com mecanismos de Evasão de Sandbox como verificação de disco rígido e se o processo está sendo depurado. Finalmente, um ataque de temporização é colocado no loader que usa temporizadores de espera para atrasar a execução do shellcode.
Esta ferramenta foi testada e mostrou-se eficaz em contornar produtos EDR/AV e executar código arbitrário em um sistema alvo.
A versão atualizada do Chimera Unleashed demonstrou avanços significativos na evasão de análise estática e dinâmica, particularmente no contexto do sistema de Detecção e Resposta de Endpoint (EDR) do Microsoft 365. As técnicas de sideloading da ferramenta, mesmo quando aplicadas a binários bem conhecidos como o OneDrive, conseguiram escapar da detecção. No entanto, é importante notar que, embora o aspecto de sideloading tenha permanecido não detectado, o processo de Early Bird Injection empregado pela ferramenta foi identificado pelo sistema EDR. Isso destaca uma área para refinamento adicional no aprimoramento das capacidades gerais de discrição da ferramenta.
Atualizações e Recursos Principais:
A Chimera é escrita em python3 e não há necessidade de instalar dependências extras.
Atualmente, a Chimera suporta duas opções de DLL: Microsoft Teams ou Microsoft OneDrive.
Alguém pode criar userenv.dll, que é uma DLL ausente do Microsoft Teams, e inseri-la na pasta específica em
%USERPROFILE%/Appdata/local/Microsoft/Teams/current
Para o Microsoft OneDrive, o script usa a DLL version, que é comum porque está ausente do binário, por exemplo, onedriveupdater.exe
O Chimera Unleashed usa argparser para análise de argumentos de linha de comando. Os seguintes argumentos estão disponíveis:
--raw ou -r: Caminho para o arquivo contendo o shellcode. Obrigatório.--path ou -p: Caminho para a saída do arquivo de template C. Obrigatório.--pname ou -n: Nome do processo para injetar o shellcode. Obrigatório.--dexports ou -d: Especificar quais Exportações de DLL usar ('teams' ou 'onedrive'). Obrigatório.--enc ou -e: Especificar a criptografia preferida (XOR / AES). Obrigatório.--inj ou -i: Especificar a técnica de injeção preferida (EB / MS). Obrigatório.--rshell ou -s: [Opcional] Substituir o nome da variável do shellcode por um nome único. O padrão é 'encoded_shell'.--rxor ou -x: [Opcional] Substituir o nome da criptografia XOR por um nome único. O padrão é 'do_xor'.--rkey ou -k: [Opcional] Substituir o nome da variável de chave por um nome único. O padrão é 'key'.--rsleep ou -z: [Opcional] Tempo total de sono a ser incluído durante a execução (segundos). O padrão é 4000.--size ou -f: [Opcional] Tamanho do arquivo de dados lixo em KB. Zero (0) é desabilitado e um (1) é tamanho aleatório. O padrão é 0.Exemplo de uso: python Chimera.py --raw <caminho_para_shellcode> --path <caminho_saida> --pname <nome_processo> --dexports <arquivo_exports> --enc AES --inj EB --rshell meu_shellcode
Após a conclusão do processo de compilação, uma DLL será gerada, que deve incluir "version.dll" para o OneDrive ou "userenv.dll" para o Microsoft Teams. Em seguida, é necessário renomear as DLLs originais.
Por exemplo, a original "userenv.dll" deve ser renomeada como "tmpB0F7.dll", enquanto a original "version.dll" deve ser renomeada como "tmp44BC.dll". Além disso, você tem a opção de modificar o nome da DLL proxy conforme desejado, alterando o código-fonte das exportações da DLL em vez de usar os nomes padrão do script.
O arquivo code.h contém o shellcode.
Passo 1: Criando um Novo Projeto no Visual Studio com Template DLL


Passo 2: Importando Arquivos para o Projeto Visual Studio
Passo 3: Personalização de Compilação