
Herramienta automatizada de sideloading de DLL con capacidades de evasión de EDR

Aunque la carga lateral de DLL se puede usar con fines legítimos, como cargar las bibliotecas necesarias para que un programa funcione, también se puede usar con fines maliciosos. Los atacantes pueden usar la carga lateral de DLL para ejecutar código arbitrario en un sistema objetivo, a menudo explotando vulnerabilidades en aplicaciones legítimas que se utilizan para cargar DLL.
Para automatizar el proceso de carga lateral de DLL y hacerlo más efectivo, se creó Chimera, una herramienta que incluye metodologías de evasión para eludir productos EDR/AV. Esta herramienta puede cifrar automáticamente un shellcode mediante XOR con una clave aleatoria y crear Imágenes de plantilla que se pueden importar a Visual Studio para crear una DLL maliciosa.
Además, se utilizan Dynamic Syscalls de SysWhispers3 y una versión de ensamblador modificada para evadir el patrón que busca el EDR, se agregan NOP sleds aleatorios y se mueven registros. Asimismo, también se utiliza Early Bird Injection para inyectar el shellcode en otro proceso que el usuario puede especificar, con mecanismos de evasión de Sandbox como la comprobación de disco duro y si el proceso está siendo depurado. Finalmente, se coloca un ataque de temporización (Timing attack) en el cargador que utiliza temporizadores de espera para retrasar la ejecución del shellcode.
Esta herramienta ha sido probada y ha demostrado ser efectiva para eludir productos EDR/AV y ejecutar código arbitrario en un sistema objetivo.
La versión actualizada de Chimera Unleashed ha demostrado avances significativos en la evasión tanto del análisis estático como dinámico, particularmente en el contexto del sistema de Detección y Respuesta de Puntos Finales (EDR) de Microsoft 365. Las técnicas de carga lateral de la herramienta, incluso cuando se aplican a binarios conocidos como OneDrive, lograron eludir la detección con éxito. Sin embargo, es notable que, mientras que el aspecto de carga lateral permaneció sin detectar, el proceso de Early Bird Injection empleado por la herramienta fue identificado por el sistema EDR. Esto resalta un área para refinamiento adicional para mejorar las capacidades generales de sigilo de la herramienta.
Actualizaciones y Características Clave:
Chimera está escrito en python3 y no es necesario instalar dependencias adicionales.
Chimera actualmente soporta dos opciones de DLL: Microsoft Teams o Microsoft OneDrive.
Alguien puede crear userenv.dll, que es una DLL faltante de Microsoft Teams, e insertarla en la carpeta específica en
%USERPROFILE%/Appdata/local/Microsoft/Teams/current
Para Microsoft OneDrive, el script utiliza version.dll, que es común porque falta en el binario, por ejemplo, onedriveupdater.exe.
Chimera Unleashed utiliza argparser para el análisis de argumentos de línea de comandos. Los siguientes argumentos están disponibles:
--raw o -r: Ruta al archivo que contiene el shellcode. Obligatorio.--path o -p: Ruta para generar el archivo de plantilla C. Obligatorio.--pname o -n: Nombre del proceso en el que inyectar el shellcode. Obligatorio.--dexports o -d: Especificar qué exports de DLL usar ('teams' o 'onedrive'). Obligatorio.--enc o -e: Especificar el cifrado preferido (XOR / AES). Obligatorio.--inj o -i: Especificar la técnica de inyección preferida (EB / MS). Obligatorio.--rshell o -s: [Opcional] Reemplazar el nombre de la variable del shellcode con un nombre único. Por defecto es 'encoded_shell'.Ejemplo de uso: python Chimera.py --raw <ruta_al_shellcode> --path <ruta_de_salida> --pname <nombre_del_proceso> --dexports <archivo_de_exports> --enc AES --inj EB --rshell my_shellcode
Una vez completado el proceso de compilación, se generará una DLL que debe incluir ya sea "version.dll" para OneDrive o "userenv.dll" para Microsoft Teams. A continuación, es necesario renombrar las DLL originales.
Por ejemplo, la "userenv.dll" original debe renombrarse como "tmpB0F7.dll", mientras que la "version.dll" original debe renombrarse como "tmp44BC.dll". Además, tienes la opción de modificar el nombre de la DLL proxy según lo desees alterando el código fuente de los exports de la DLL en lugar de usar los nombres predeterminados del script.
El archivo code.h contiene el shellcode.
Paso 1: Crear un Nuevo Proyecto en Visual Studio con Plantilla DLL


Paso 2: Importar Archivos al Proyecto de Visual Studio
Paso 3: Personalización de la Compilación
Paso 4: Habilitar MASM

Paso 5:


Paso 1: Cambiar la optimización

Paso 2: Eliminar Información de Depuración

Contribuyente original:
Contribuyente:
En la máxima medida permitida por la ley aplicable, yo (George Sotiriadis) y/o afiliados que hayan enviado contenido a mi repositorio, no serán responsables por daños indirectos, incidentales, especiales, consecuentes o punitivos, ni por pérdidas de ganancias o ingresos, ya sea incurridas directa o indirectamente, ni por pérdida de datos, uso, buena voluntad u otras pérdidas intangibles, que resulten de (i) su acceso a este recurso y/o incapacidad para acceder a este recurso; (ii) cualquier conducta o contenido de cualquier tercero referenciado por este recurso, incluyendo sin limitación, cualquier conducta difamatoria, ofensiva o ilegal de otros usuarios o terceros; (iii) cualquier contenido obtenido de este recurso
https://evasions.checkpoint.com/
https://github.com/Flangvik/SharpDllProxy
--rxor o -x: [Opcional] Reemplazar el nombre del cifrado XOR con un nombre único. Por defecto es 'do_xor'.--rkey o -k: [Opcional] Reemplazar el nombre de la variable clave con un nombre único. Por defecto es 'key'.--rsleep o -z: [Opcional] Tiempo total de suspensión a incluir durante la ejecución (segundos). Por defecto es 4000.--size o -f: [Opcional] Tamaño del archivo de datos basura en KB. Cero (0) está deshabilitado, y uno (1) es un tamaño de archivo aleatorio. Por defecto es 0.