
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'.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
Passo 4: Habilitar MASM

Passo 5:


Passo 1: Alterar otimização

Passo 2: Remover Informações de Depuração

Contribuidor Original:
Contribuidor:
Na máxima extensão permitida pela lei aplicável, eu (George Sotiriadis) e/ou afiliados que enviaram conteúdo ao meu repositório não serão responsáveis por quaisquer danos indiretos, incidentais, especiais, consequenciais ou punitivos, ou qualquer perda de lucros ou receitas, seja incorrida direta ou indiretamente, ou qualquer perda de dados, uso, boa vontade ou outras perdas intangíveis, resultantes de (i) seu acesso a este recurso e/ou incapacidade de acessar este recurso; (ii) qualquer conduta ou conteúdo de qualquer terceiro referenciado por este recurso, incluindo, sem limitação, qualquer conduta difamatória, ofensiva ou ilegal de outros usuários ou terceiros; (iii) qualquer conteúdo obtido deste recurso
https://evasions.checkpoint.com/
https://github.com/Flangvik/SharpDllProxy
--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.