in

Inceptor – Marco de evasión AV / EDR basado en plantillas


[*]



Las pruebas de penetración modernas y la formación de equipos rojos a menudo requieren eludir los dispositivos AV / EDR comunes para ejecutar código en un objetivo. Con el tiempo, las contramedidas se vuelven más complejas e intrínsecamente más difíciles de solucionar de manera constante.

Inceptor es una herramienta que puede automatizar gran parte de este proceso y, con suerte, no requiere ningún esfuerzo adicional.

caracteristicas

Inceptor es un empaquetador de PE basado en plantillas para Windows, el probador de penetración y Red Teamer para evitar las soluciones AV y EDR comunes. Inceptor está diseñado pensando en la facilidad de uso y permite una amplia personalización.

Para tener una buena idea de lo que se implementa y por qué, puede ser útil echar un vistazo a los siguientes recursos:

Transformación / carga de shellcode

Inceptor puede convertir EXE / DLL existentes en shellcode con varios convertidores de código abierto:

Codificador LI frente a codificador LD

Inceptor puede cifrar, comprimir o cifrar shellcode de diversas formas. Durante el desarrollo de la herramienta, comencé a diferenciar entre lo que llamo codificación independiente del cargador (LI) y codificación dependiente del cargador (LD).

La codificación independiente del cargador es un tipo de codificación que no es administrada por la plantilla (cargador) elegida por el usuario. Por lo general, esto significa que el código auxiliar de decodificación no es parte de la plantilla, sino que está incrustado en el propio código de shell. Inceptor proporciona este tipo de función con la herramienta de código abierto sgn que se utiliza para hacer que la carga útil sea polimórfica e indetectable con el reconocimiento de firma común.

Incluso si es fuerte, Shikata-Ga-Nai no es realmente adecuado para ciertas plantillas. Por esta razón, Inceptor también implementa codificadores dependientes del cargador, que están diseñados de tal manera que el cargador realiza la decodificación. Por lo tanto, los codificadores LD instalan el código auxiliar de decodificación directamente en la plantilla. Estos tipos de codificadores, tal como se implementan en Inceptor, también son «encadenables», lo que significa que se pueden encadenar para codificar una carga útil.

Si bien el uso de una cadena de codificadores a veces puede mejorar la ofuscación de una carga útil en particular, esta técnica también puede exponer múltiples rutinas de decodificación que pueden ayudar a los defensores a redactar firmas en su contra. Debido a esto, Inceptor ofrece varias opciones para disfrazar los artefactos finales y fortalecer el proceso de RE.

En el momento de escribir este artículo, la versión pública de Inceptor se ha implementado con los siguientes codificadores / compresores / cifradores:

  • Indígena
  • .LA RED
    • Maleficio
    • Base64
    • Xor
    • No (insertar)
    • AES
    • Zlib
    • RLE
  • Potencia Shell
    • Maleficio
    • Base64
    • Xor
    • No (insertar)
    • AES

Inceptor puede validar una cadena de codificación tanto estática como dinámicamente, verificar estáticamente los tipos de entrada / salida de los decodificadores y también verificar dinámicamente la implementación con una implementación independiente.

Un usuario puede crear fácilmente una cadena en cualquier momento utilizando el chain-validate.py Utilidad.

Mecanismos de bypass AV

Inceptor también implementa de forma nativa mecanismos de derivación AV y, como tal, ofrece la posibilidad de incluir funciones de derivación AV en la carga útil en forma de «módulos» (complementos).

Los complementos que se pueden incrustar son:

Mecanismos de derivación EDR

Inceptor también implementa mecanismos de evasión de EDR, como: Las llamadas al sistema directas se implementan en C # con el destacado proyecto «DInvoke», también de TheWover. En C / C ++, las llamadas al sistema se implementan utilizando proyectos SysWhispers y SysWhispers2, desde Jackson_T. Además, Inceptor también ofrece soporte integrado para llamadas al sistema x86.

Como funciones de bypass AV, estas funciones se pueden activar como módulos, con la única diferencia de que deben ejecutarse en una plantilla que las soporte. Las técnicas implementadas hasta el momento son:

Ofuscación

Inceptor admite la ofuscación de cargas útiles mediante el uso de utilidades externas como ConfuserEx y Chameleon y brinda soporte para la ofuscación de C / C ++ con LLVM-Obfuscator, un ofuscador basado en IR que utiliza la plataforma de compilación LLVM.

Firma de código

Otra característica de Inceptor es que puede codificar el binario / DLL resultante utilizando la herramienta CarbonCopy. Normalmente, los archivos firmados con certificados de firma de código se analizan de forma menos estricta. Muchos productos anti-malware no validan / verifican estos certificados.

flujo de trabajo

El flujo de trabajo completo se puede resumir en el siguiente esquema general y simplificado:

instalación

Inceptor fue desarrollado para Windows. los update-config.py La utilidad puede encontrar los binarios de Microsoft necesarios y actualizar la configuración en consecuencia. Es posible que deba instalar Microsoft Build Tools, Windows SDK y Visual Studio. update-config.py guía al usuario a través de la instalación de las dependencias necesarias.

git clone --recursive https://github.com/klezVirus/inceptor.git
cd inceptor
virtualenv venv
venvScriptsactivate.bat
pip install -r requirements.txt
cd inceptor
python update-config.py

consejos útiles

Cargador estándar

La versión actual de Inceptor busca una plantilla en particular utilizando una convención de nomenclatura simple (no cambie los nombres de las plantillas) y los argumentos proporcionados por el usuario. Los argumentos también incluyen el cargador (-t). Si no se especifica, el cargador se selecciona según el archivo que se empaquetará de acuerdo con este sencillo esquema:

$ python inceptor.py -hh

[*] Default Loaders
Input File Extension SpecialCondition Guessed Filetype Default Loader Default Template
0 .raw NaN Shellcode Simple Loader Classic
1 .exe .NET Dotnet Executable Donut Classic
2 .exe NaN Native Executable Pe2Shellcode PE Load
3 .dll NaN Native Library sRDI Classic

Convención de nomenclatura para plantillas

Es muy importante comprender también la convención del nombre de la plantilla para evitar malinterpretar el comportamiento de los artefactos.

  • Clásico: una plantilla clásica generalmente significa que utiliza las API VirtualAlloc / VirtualAllocEx y CreateThread / CreateRemoteThread para asignar y ejecutar código arbitrario
  • Dinvoke: si una plantilla contiene solo dinvoke (por ejemplo, classic-dinvoke.cs), significa que utiliza la función de resolución de función dinámica de dinvoke
  • dinvoke-Subingeniería: Una plantilla que contiene dinvoke seguida de otra palabra clave utiliza una función específica de dinvoke, como manual_mapping, overload_mapping o syscalls
  • Llamadas al sistema: como sugiere el nombre, esta plantilla utiliza llamadas al sistema
  • Carga de PE: esta plantilla intenta mapear un PE completo en la memoria sin transformarlo
  • Carga de ensamblaje: esta plantilla intenta ejecutar un ensamblado .NET con reflexión

propósito de uso

$ usage: inceptor.py [-h] [-hh] [-Z] {native,dotnet,powershell} ...

inceptor: A Windows-based PE Packing framework designed to help
Red Team Operators to bypass common AV and EDR solutions

positional arguments:
{native,dotnet,powershell}
native Native Binaries Generator
dotnet .NET Binaries Generator
powershell PowerShell Wrapper Scripts Generator

optional arguments:
-h, --help show this help message and exit
-hh Show functional table
-Z, --check Check file against ThreatCheck

Próximos desarrollos

  • Nuevo motor de plantillas
  • Nuevas plantillas
  • Nuevos codificadores
  • Ofuscación basada en código C #

recursos


[*]

What do you think?

Written by Helen Lafayette

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

GIPHY App Key not set. Please check settings

¡Somos titulares oficiales del récord mundial Guinness!

FIDO Alliance Research busca la autenticación sin contraseña en su camino hacia la corriente principal