Tutoriales

FrostByte es un proyecto POC que combina diferentes defensas

byte helado Es un proyecto POC que combina diferentes técnicas de evasión de defensa. He estado experimentando con la técnica de inyección del administrador AppDomain durante los últimos días, con buen éxito en mis compromisos anteriores del equipo rojo contra algunos EDR. Si bien esto es excelente para el acceso inicial a los vectores, me gustaría publicar un POC que ayude a ocultar su shellcode en otro lugar. ¡No más archivos DLL incrustados con shellcode!

¡pregunta!

Si bien es una técnica excelente cuando se usa sola, se usa junto con técnicas de entrega, como enviar C# ClickOnce en archivos ISO/ZIP/VHD/VHDX. El problema real es que la heurística AI/ML de AV/EDR detecta la DLL 1 del dominio de la aplicación en 10 veces. Esto se debe a que el archivo DLL debe colocarse en el disco antes de que se pueda inicializar el dominio de la aplicación. Ignorando la carga DLL remota (ruta UNC en .config) por ahora, la DLL del dominio de la aplicación contendrá shellcode, que creo firmemente que es la razón por la que es posible la detección estática, ya que el resto del código para las llamadas WINAPI se puede resolver dinámicamente y ofuscar bien.

Me gustaría mejorar esta técnica en términos de minimizar lo que contiene inicialmente la DLL.Primero puse el shellcode encriptado en un archivo separado en el disco con el DLL del inyector, pero luego encontré este increíble blog de Checkpoint campaña de Zloader

Versión TLDR: podemos incrustar datos arbitrarios en algunos campos en el PE de una manera que no rompa la firma del archivo. Por lo tanto, nuestros datos se incrustarán y el exe seguirá estando firmado digitalmente.

Más información–

Entonces, la idea es incrustar un código auxiliar cifrado en un ejecutable firmado conocido y aún así lograr mantener la firma como el malware Zloader. Al hacer esto, la DLL del administrador AppDomain ya no contendrá el código de shell en sí mismo, sino que simplemente tendrá la lógica para analizar el código de shell del binario PE que lo carga para descifrarlo y ejecutarlo como un subproceso separado. Si lo hace, puede reducir la tasa de detección estática de la DLL mientras su shellcode está bien ubicado en el binario firmado.

Traté de hacer esto manipulando manualmente las muestras de ZLoader que obtuve de VirusTotal, pero luego encontré un proyecto que ya implementa todas estas técnicas bastante bien: Sigflip. En este POC, utilizo el código del cargador de Sigflip para compilar el inyector AppDomain DLL y SigFlip para incrustar el shellcode encriptado en nuestro C# exe.

ventaja

Independientemente de la técnica de ofuscación/codificación utilizada, fragmentos de shellcode como el shellcode sin etapas de Cobalt Strike ya no residirán en archivos DLL sin firmar en el disco. Los archivos DLL son más limpios, más pequeños y sigilosos, con un código mínimo, lo que genera menos cambios detectados.

Servicio

Pasos para compilar un ejecutable Shellcode firmado

Pasos para compilar la DLL del cargador de dominio de aplicaciones

LEER  Hablemos de diseño de plan abierto | Ubuntu

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