Tutoriales

Entorno de creación de carga útil diseñado en torno a la derivación de EDR

Fantoche es un situación de creación de carga útil para gestar cargadores para el uso de carga adyacente (no inyección) en un proceso oficial de Windows (sin sobrevenir por los controles de la serie blanca de aplicaciones). Una vez que el cargador de DLL se carga en la memoria, se utiliza una técnica para pincharse el ganzúa de un EDR de las DLL del sistema que se ejecutan en la memoria del proceso. Esto funciona porque sabemos que los ganchos de EDR se colocan cuando se genera un proceso. ScareCrow puede apuntar a estas DLL y manipularlas en la memoria utilizando la función de API VirtualProtect, que cambia una sección de los permisos de memoria de un proceso a un valencia diferente, específicamente de Ejecutar-Adivinar a Adivinar-Escribir-Ejecutar.

Cuando se ejecuta, ScareCrow copiará los bytes de las DLL del sistema almacenadas en el disco en C:WindowsSystem32. Estas DLL se almacenan en el disco «limpias» de los ganchos de EDR porque el sistema las utiliza para cargar una copia inalterada en un nuevo proceso cuando se genera. Cedido que los EDR solo enganchan estos procesos en la memoria, permanecen inalterados. ScareCrow no copia todo el archivo DLL, sino que solo se centra en la sección .text de las DLL. Esta sección de una DLL contiene el ensamblado ejecutable y, al hacerlo, ScareCrow ayuda a acortar la probabilidad de detección, ya que retornar a deletrear archivos completos puede hacer que un EDR detecte que hay una modificación en un petición del sistema. Luego, los datos se copian en la región derecha de la memoria utilizando el desplazamiento de cada función. Cada función tiene un desplazamiento que denota el número exacto de bytes desde la dirección almohadilla donde residen, proporcionando la ubicación de la función en la pila. Para hacer esto, ScareCrow cambia los permisos de la región .text de la memoria usando VirtualProtect. Aunque se prostitución de una DLL del sistema, ya que se ha cargado en nuestro proceso (que controlamos), podemos cambiar los permisos de memoria sin requerir privilegios elevados.

Una vez que se eliminan estos ganchos, ScareCrow utiliza llamadas al sistema personalizadas para cargar y ejecutar shellcode en la memoria. ScareCrow hace esto incluso luego de que se eliminan los ganchos de EDR para ayudar a evitar ser detectado por herramientas de compilación de telemetría basadas en enganches que no son de usufructuario, como Event Tracing para Windows (ETW) u otros mecanismos de registro de eventos. Estas llamadas al sistema personalizadas incluso se utilizan para realizar la llamamiento de VirtualProtect para eliminar los ganchos colocados por los EDR, descritos anteriormente, para evitar ser detectados por cualquier control anti-manipulación de EDR. Esto se hace llamando a una interpretación personalizada de VirtualProtect syscall, NtProtectVirtualMemory. ScareCrow utiliza Golang para gestar estos cargadores y luego ensamblar para estas funciones personalizadas de llamamiento al sistema.

ScareCrow carga el código de shell en la memoria descifrando primero el código de shell, que está oculto de forma predeterminada mediante el oculto AES con una esencia vectorial de descifrado e inicialización. Una vez descifrado y cargado, se ejecuta el shellcode. Dependiendo de las opciones del cargador especificadas, ScareCrow configurará diferentes funciones de exportación para la DLL. La DLL cargada siquiera contiene la función DLLmain estereotipado que todas las DLL normalmente necesitan para funcionar. La DLL aún se ejecutará sin problemas porque el proceso en el que cargamos buscará esas funciones de exportación y no se preocupará de que DLLMain esté allí.

Muestra binaria

1615391534 692 Marco de creacion de carga util disenado en torno a
Entorno de creación de carga útil diseñado en torno a la derivación de EDR 5

Luego

1615391534 768 Marco de creacion de carga util disenado en torno a
Entorno de creación de carga útil diseñado en torno a la derivación de EDR 6

Durante el proceso de creación del cargador, ScareCrow utiliza una biblioteca para mezclarse con el fondo luego de que una baliza fogata a casa. Esta biblioteca hace dos cosas:

  • El código firma el cargador: los archivos que están firmados con certificados de firma de código a menudo se someten a menos investigación, lo que facilita su ejecución sin ser cuestionados, ya que los archivos firmados con un nombre de confianza suelen ser menos sospechosos que otros. La mayoría de los productos antimalware no tienen tiempo para validar y efectuar estos certificados (ahora algunos lo hacen, pero normalmente los nombres de proveedores comunes se incluyen en una serie blanca) ScareCrow crea estos certificados utilizando una interpretación de paquete de la utensilio. limelighter para crear un archivo pfx12. Este paquete toma un nombre de dominio ingresado, especificado por el usufructuario, para crear un certificado de firma de código para ese dominio. Si es necesario, incluso puede usar su propio certificado de firma de código si tiene uno, usando la opción de carrera de comandos válida.
  • Falsificar los atributos del cargador: esto se hace usando archivos syso que son una forma de archivos de bienes incrustados que cuando se compilan anejo con nuestro cargador, modificarán las partes de atributos de nuestro código compilado. Ayer de gestar un archivo syso, ScareCrow generará un nombre de archivo casual (basado en el tipo de cargador) para usar. Una vez predilecto, este nombre de archivo se asignará a los atributos asociados para ese nombre de archivo, asegurando que se asignen los títulos correctos.

Ejemplo de atributo de archivo

Marco de creacion de carga util disenado en torno a

Con estos archivos y el código go, ScareCrow los compilará de forma cruzada en archivos DLL utilizando la opción de biblioteca c-shared. Una vez que se compila la DLL, se ofusca en una prisión base64 rota que se incrustará en un archivo. Esto permite extraer el archivo, aceptar a él y ejecutarlo mediante programación de forma remota.

Instalar en pc

El primer paso como siempre es clonar el repositorio. Ayer de agrupar ScareCrow, deberá instalar las dependencias.

Para instalarlos, ejecute los siguientes comandos:

ve a github.com/fatih/color
ve a github.com/yeka/zip
ve a github.com/josephspurrier/goversioninfo

Asegúrese de que lo sucesivo esté instalado en su sistema operante:

openssl
osslsigncode
mingw-w64

Entonces constrúyelo

ve a construir ScareCrow.go

Cargador

El cargador determina el tipo de técnica para cargar el código de shell en el sistema de destino. Si no se elige la opción de cargador, ScareCrow simplemente compilará un archivo DLL estereotipado, que puede ser utilizado por rundll32, regsvr32 u otras técnicas que utilicen una DLL. ScareCrow utiliza tres tipos diferentes de cargadores para cargar shellcode en la memoria:

  • Panel de control – Esto genera un subprograma del panel de control (Software y características de IE, o Reproducción cibernética). Al agrupar el cargador para tener funciones específicas de exportación de DLL en combinación con una extensión de archivo .cpl, generará un proceso de panel de control (rundll32.exe) y el cargador se cargará en la memoria.
  • WScript – Genera un proceso WScript que utiliza un archivo de manifiesto y técnicas Com sin registro para cargar el cargador de DLL en paralelo (no inyectado) en su propio proceso. Esto evita registrar la DLL en la memoria, ya que el archivo de manifiesto le dice al proceso cuál, dónde y qué interpretación de una DLL cargar.
  • Excel – Genera un archivo XLL que son archivos DLL basados ​​en Excel que cuando se cargan en Excel ejecutarán el cargador. Se generará un proceso de Excel oculto, lo que obligará a cargar el archivo XLL.

ScareCrow incluso puede gestar cargas bártulos basadas en binarios si es necesario utilizando el -loader opción de carrera de comando. Estos binarios no se benefician de ninguna técnica de carga en paralelo, pero sirven como una técnica adicional para ejecutar shellcode dependiendo de la situación.

Consola

ScareCrow utiliza una técnica para crear primero el proceso y luego moverlo a un segundo plano. Esto hace dos cosas, primero ayuda a ayudar el proceso oculto y segundo, evita ser detectado por cualquier producto EDR. Suscitar un proceso de inmediato en segundo plano puede ser muy sospechoso y un indicador de malicia. ScareCrow hace esto llamando a la función de Windows ‘GetConsoleWindow’ y ‘ShowWindow’ luego de que se crea el proceso y se cargan los ganchos de EDR, y luego cambia los atributos de Windows a ocultos. ScareCrow utiliza estas API en sitio de utilizar las tradicionales -ldflags -H=windowsgui ya que está mucho firmado y clasificado en la mayoría de los productos de seguridad como un indicador de compromiso.

Si el -console La opción de carrera de comandos está seleccionada, ScareCrow no ocultará el proceso en segundo plano. En su sitio, ScareCrow agregará varios mensajes de depuración que muestran lo que está haciendo el cargador.

Entrega

El argumento de la carrera de comandos de entrega le permite gestar un comando o una prisión de código (en el caso de la macro) para extraer de forma remota el archivo desde una fuente remota al host de la víctima. Estos métodos de entrega incluyen:

  • Bits – Esto generará un comando bitsadmin que mientras descarga el cargador de forma remota, lo ejecuta y lo elimina.
  • HTA – Esto generará un archivo HTA en blanco que contiene el cargador. Esta opción incluso proporcionará una carrera de comando que ejecutará la HTA de forma remota.
  • Macro – Esto generará una macro de Office que se puede colocar en un documento de macro de Excel o Word. Cuando se ejecuta esta macro, el cargador se descargará desde una fuente remota y se ejecutará y luego se eliminará.

Hacer

  • Actualmente solo admite cargas bártulos x64
  • Algunas versiones anteriores del sistema operante de Windows (es opinar, Windows 7 o Windows 8.1) tienen problemas para recargar los archivos DLL del sistema, como resultado, se incorpora una demostración de interpretación para asegurar la estabilidad.

Crédito

  • Un agradecimiento particular al cómico, Luciano Buonamici por la obra de arte.
  • Un agradecimiento particular a josephspurrier por su repositorio.

Publicaciones relacionadas

Deja una respuesta

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

Botón volver arriba