A continuación, se muestran algunas de las técnicas de exploits conocidas y detectadas por Adaptive Defense.
Algunas de estas detecciones se han producido antes de que las aplicaciones confiables resulten comprometidas. Otras han sido detectadas durante la explotación por parte del exploit de las vulnerabilidades, lo que ha activado la puesta en práctica de medidas de resolución.
Los exploits utilizan las técnicas de heap Spraying para facilitar la ejecución de código arbitrario durante la explotación de vulnerabilidades. Mediante estas técnicas, se inyectan ciertas secuencias de bytes en una ubicación predeterminada de la memoria de un proceso para su posterior explotación. Esta técnica es muy empleada para explotar vulnerabilidades de navegadores y sus plugins correspondientes.
ROP es una técnica de explotación de vulnerabilidades que consiste en encadenar instrucciones del propio programa comprometido para desactivar las protecciones modernas de los sistemas operativos, como puede ser DEP y ASLR. El atacante se hace con una secuencia de código del programa comprometido para ejecutar su propio código que le permite seguir con la cadena del ataque.
Mediante estas técnicas, los ciber delincuentes evitan con facilidad la tecnología DEP (prevención de ejecución de datos), implementada en hardware y software y cuyo objetivo es prevenir la ejecución de código en la cadena del ataque.
Las tecnologías ASLR y DEP están orientadas a la prevención de ejecución de shellcodes y de explotación de vulnerabilidades de buffer overflow.
Microsoft introdujo ASLR (Aleatorización de la distribución del espacio de direccionamiento) y DEP en Windows XP SP2, presentándolo como mecanismos significativos y eficientes anti-exploit.
Sin embargo, muchos ataques APT (Amenaza Persistente Avanzada) y ataques de día cero utilizan diferentes técnicas de evasión de ASLR y DEP.
Estos ataques se basan en la capacidad del ciber delincuente para identificar con precisión los procesos específicos o funciones del sistema que residen en la memoria. Para que un atacante pueda explotar o aprovechar una función, primero debe ser capaz de decirle a su código dónde encontrará la función o proceso que explotará.
Temas relacionados