
Mangle es una herramienta que manipula aspectos de ejecutables compilados (.exe o DLL) para evadir la detección de los EDR
Para ver la última versión de Mangle o enviar un problema, consulte https://github.com/Tylous/Mangle.
Escrito por Tyl0us
Presentado en Source Zero Con 2022
Mangle es una herramienta que manipula aspectos de ejecutables compilados (.exe o DLL). Mangle puede eliminar cadenas conocidas basadas en Indicadores de Compromiso (IoC) y reemplazarlas con caracteres aleatorios, cambiar el archivo inflando su tamaño para evadir EDRs, y puede clonar certificados de firma de código de archivos legítimos. Al hacerlo, Mangle ayuda a los cargadores a evadir escáneres en disco y en memoria.
Mangle fue desarrollado en Golang.
El primer paso, como siempre, es clonar el repositorio. Antes de compilar Mangle, necesitarás instalar las dependencias. Para instalarlas, ejecuta los siguientes comandos:
go get github.com/Binject/debug/pe
Luego compílalo
go build Mangle.go
Aunque Mangle está escrito en Golang, muchas de las características están diseñadas para funcionar en archivos ejecutables de otros lenguajes. En el momento del lanzamiento, la única característica específica de Golang es la parte de manipulación de cadenas.
./mangle -h
_____ .__
/ \ _____ ____ ____ | | ____
/ \ / \\__ \ / \ / ___\| | _/ __ \
/ Y \/ __ \| | \/ /_/ > |_\ ___/
\____|__ (____ /___| /\___ /|____/\___ >
\/ \/ \//_____/ \/
(@Tyl0us)
Usage of ./Mangle:
-C string
Path to the file containing the certificate you want to clone
-I string
Path to the orginal file
-M Edit the PE file to strip out Go indicators
-O string
The new file name
-S int
How many MBs to increase the file by
Mangle toma el ejecutable de entrada y busca cadenas conocidas que los productos de seguridad buscan o alertan. Estas cadenas por sí solas no son el único punto de detección. A menudo, estas cadenas están en conjunto con otros puntos de datos y piezas de telemetría para la detección y prevención. Mangle encuentra estas cadenas conocidas y reemplaza los valores hexadecimales con otros aleatorios para eliminarlas. IMPORTANTE: Mangle reemplaza el tamaño exacto de las cadenas que está manipulando. No agrega ni más ni menos, ya que esto crearía desalineaciones e inestabilidades en el archivo. Mangle hace esto usando la opción de línea de comandos -M.
Actualmente, Mangle solo maneja archivos Golang, pero con el tiempo se agregarán otros lenguajes. Si conoces alguno para otros lenguajes, por favor abre un ticket de incidencia y envíalos.
Antes
Después
Prácticamente todos los EDR no pueden escanear archivos en disco o en memoria más allá de un cierto tamaño. Esto simplemente se debe a que los archivos grandes tardan más en revisarse, escanearse o monitorearse. Los EDR no quieren afectar el rendimiento ralentizando la productividad del usuario. Mangle infla los archivos creando un relleno de bytes nulos (Ceros) al final del archivo. Esto asegura que nada dentro del archivo se vea afectado. Para inflar un ejecutable, use la opción de línea de comandos -S junto con el número de bytes que desea agregar al archivo. Los payloads grandes ya no son realmente un problema con la velocidad de Internet actual, dicho esto, no se recomienda crear un archivo de 2 GB.
Basado en casos de prueba a través de numerosos EDR de espacio de usuario y kernel, se recomienda aumentar el tamaño entre 95 y 100 megabytes. Debido a que los vendedores no verifican archivos grandes, la actividad pasa desapercibida, resultando en la ejecución exitosa del shellcode.

Mangle también contiene la capacidad de tomar toda la cadena y todos los atributos de un certificado de firma de código legítimo de un archivo y copiarlos en otro archivo. Esto incluye la fecha de firma, contrafirmas y otros atributos medibles.
Aunque esta característica puede sonar similar a otra herramienta que desarrollé, Limelighter, la principal diferencia entre ambas es que Limelighter crea un certificado falso basado en un dominio y lo firma con la fecha y hora actuales, en lugar de usar atributos válidos donde la marca de tiempo se toma del archivo original. Esta opción puede usar archivos DLL o .exe para copiar usando la opción de línea de comandos -C, junto con la ruta al archivo del que desea copiar el certificado.