Nueva técnica de inyección de procesos elude detección de EDR

Recientemente el equipo de Security Joes ha descubierto una nueva técnica de inyección de procesos a la cual ha denominado Mockingjay, permite a los actores maliciosos eludir la detección de EDRs así como otros sistemas de detección, con la finalidad de ejecutar código malicioso en las maquinas comprometidas.

El método descubierto hace uso de DLLs legítimos con protecciones por defect RWX (Read-Write-Execute). A través del uso mal intencionado de estos DLLs el equipo fue capaz de inyectar código en varios procesos, y así eliminar la necesidad de ejecutar una gran cantidad de APIs de Windows que son regularmente monitoreadas.

La inyección de procesos hace referencia al método por el cual un actor malicioso puede ejecutar código arbitrario en el espacio de direcciones de otro proceso en ejecución, lo que permite al atacante el poder esconder el código inyectado, con la finalidad de evadir su detección.

Como inyección de procesos, se tienen técnicas como: inyección DLL inyección, PE (ejecutable portátil), inyección de DLL reflectante, hijacking de ejecución de hilos, proceso de vaciado, inyección de mapeo, procesos Doppleganging. Entre otros.

Todas estas técnicas, antes descritas, tienen en común qué, el atacante debe aplicar una combinación de las APIs de Windows y varios llamados al sistema, el número de llamadas a funciones y APIs empleadas pueden variar, dependiendo de los fundamentos de la técnica del método de inyección elegida por el atacante.

Según lo menciona Secutity Joes, esto es algo que diferencia a “Mockingjay” de otros enfoques, pues, este no utiliza llamadas a las APIs de Windows que son utilizadas usualmente en este tipo de ataques, tampoco establece permisos especiales o asignaciones de memoria, lo que reduce las posibilidades de ser detectados.

Para lograr esto, primeramente, se debe identificar un DLL vulnerable con la sección RWX por defecto y así el atacante puede modificar el contenido para cargar código malicioso sin la necesidad de realizar pasos adicionales como la obtención de permisos adicionales. En la búsqueda, el equipo encontró el DLL “msys-2.0.dll” dentro de la comunidad Visual Studio 2022, con un espació en la sección RWX por defecto, de 16kb.

Esto permitió a los investigadores mediante el abuso a la sección RWX preexistente, tomar ventaja de las protecciones de memoria inherentes que ofrece, eludiendo eficazmente cualquier función que ya haya sido enganchada por los EDR. Según Security Joes  “Este enfoque no sólo elude las limitaciones impuestas por los hooks de userland, sino que también establece un entorno robusto y fiable para nuestra técnica de inyección”.

Seguidamente, el equipo desarrollo dos métodos de inyección, una para auto inyección y otro para inyección de procesos remotos.

En el primer caso, una aplicación personalizada (“nightmare.exe”) carga la DLL vulnerable directamente en su espacio de memoria utilizando dos llamadas a la API de Windows (LoadLibraryW y GetModuleInformaction) , lo que le otorga acceso directo a la sección RWX sin realizar la asignación de memoria ni establecer los permisos.

Seguidamente, se abusa de un módulo de sistema limpio, NTDLL.DLL, para extraer números de llamadas del sistema que luego se utilizan para eludir los ganchos EDR mediante la técnica “Hell’s Gate EDR unhooking”, permitiendo que el código de Shell inyectado se ejecute sin ser detectado.

En el segundo proceso, se abusa de la sección RWX de msys-2.0.dll para llevar a cabo la inyección de procesos en un proceso remoto. Lo que requiere de la identificación de un binario no malicioso que para este caso especifico fue “ssh.exe”.

Este proceso se inicia como un proceso hijo de la aplicación personalizada mediante el uso de la API de Windows “CreateProcessW” lo que abre un handle al proceso objetivo, e inyecta el código malicioso en el espacio de memoria RWX de la DLL vulnerable. Como se muestra a continuación.

En relación a este PoC llevado a cabo por el equipo, el código Shell inyectado carga el archivo dll denominado MyLibrary.dll en la memoria, lo que establece un Shell reverso con la maquina externa.

Implicaciones

La importancia de esta técnica radica en la posibilidad de que los actores maliciosos puedan eludir la detección por herramientas de detección y respuesta de puntos finales o EDR, por sus siglas en inglés. O bien software de antivirus. eludiendo los ganchos de usuario e inyectando código malicioso en el espacio de procesos del software de confianza.

Entre algunas medidas a tomar en cuenta para la detección de este tipo de acciones, se pueden mencionar: La búsqueda de utilidades GNU lanzadas por procesos sospechosos o que no son comunes; la búsqueda de conexiones de red a puertos no estándar desde procesos como ssh.exe o cualquier otra utilidad GNU; la implementación de sistemas que se basen en la reputación y que asigne niveles de confianza a las DLL.

 

Related Post