¿Los exploits dependen de la plataforma?

11

Revisando un descripción general del último exploit de IE publicado , noté que creo que es ensamblaje. No sé nada sobre el desarrollo de exploits, pero sé un poco sobre el ensamblaje. Al ver ese código de ensamblaje, ¿eso significa explotar arquitecturas específicas de destino en sistemas operativos específicos?

Al igual que en, ¿significa eso que la vulnerabilidad de IE debe desarrollarse EN ENSAMBLAJE una vez para cada SO (XP, Vista, 7, 8), duplicarse en función de 32/64 bits, y luego duplicarse nuevamente en función del orden de bytes? / p>     

pregunta user2738698 28.04.2014 - 18:03
fuente

4 respuestas

15

Sí, la mayoría de los exploits dependen de la plataforma. Hay detalles.

Por ejemplo, si un atacante apunta a Internet Explorer, entonces apunta a sistemas Windows . La mayoría de los sistemas de Windows se ejecutan en x86. Además, en Windows hasta 7, el IE predeterminado es la versión de 32 bits, incluso si el sistema operativo es un Windows de 64 bits. Además, a nivel de ensamblaje, XP, Vista y 7 son muy similares (de hecho, pueden ejecutar las mismas aplicaciones, por lo que, desde el punto de vista de las aplicaciones, las cosas no cambian mucho).

Esto significa que una única versión de exploit (32 bits x86, para "Windows") ya funcionará en la mayoría de los casos. Un atacante laborioso también pensará en una versión de 64 bits para Windows 8, o en los (muy pocos) usuarios con un sistema operativo pre-8 de 64 bits que ejecuta el IE de 64 bits. Un atacante muy trabajador intentará hacer una versión ARM para la Surface RT .

Todas estas plataformas son little-endian. IE para otra CPU ha estado inactivo durante bastante tiempo (usé la versión Sparc / Solaris en el año 2000, pero era una versión 5.x).

El punto importante es que los atacantes no necesitan hacer mucha garantía de calidad. No es un problema para el atacante si lo que envía a un objetivo no funcionará perfectamente en otras máquinas a las que no está apuntando actualmente.

    
respondido por el Tom Leek 28.04.2014 - 18:22
fuente
3

Las explotaciones dependen de la plataforma, ya que cada plataforma puede tener una forma diferente de manejar el diseño de la memoria y la ejecución del proceso. Por ejemplo, ejecutar un exploit en WinXP será relativamente más fácil que en otras versiones recientes de Windows. Hablando particularmente sobre las vulnerabilidades de IE, tiene más que ver con encontrar vulnerabilidad en algunas de las funciones del navegador o DLL y aprovechar esas vulnerabilidades para evitar los mecanismos de seguridad del sistema operativo.

    
respondido por el abhinav singh 28.04.2014 - 20:19
fuente
3
  

¿Los exploits dependen de la plataforma?

Sí.

  

Al igual que en, ¿significa eso que la vulnerabilidad de IE debe desarrollarse EN ENSAMBLAJE una vez para cada SO (XP, Vista, 7, 8), duplicarse en función de 32/64 bits, y luego duplicarse nuevamente en función del orden de bytes? / p>

No.

El uso del ensamblaje no lo hace más dependiente de la plataforma. Es solo tan dependiente de la plataforma como lo sería si estuviera escrito en, por ejemplo, C, (aunque para la mayoría de los propósitos C hace que sea mucho más fácil apuntar a esas plataformas diferentes).

La página enlazada no indica en qué plataformas se encuentran los objetivos de explotación, y solo muestra el código x86. Si también apunta a x64, todavía son solo dos plataformas: x86 Windows y x64 Windows, e incluso para esas dos, el código sería en gran medida isomorfo (similar). El simple hecho de que tenga un ensamblaje no explota repentinamente la complejidad de admitir diferentes ediciones de Windows que se ejecutan en la misma arquitectura de CPU.

(Solo para resaltar el punto: el ensamblaje portátil se puede escribir y compilar una vez, de manera que el mismo blob de código de máquina se ejecutará bajo Windows, OS X, Linux y ningún sistema operativo en absoluto , en la misma arquitectura de CPU. De esta manera, el ensamblaje es menos dependiente de la plataforma que otros idiomas, ya que requiere menos de una plataforma. Los formatos de archivo ejecutables estándar que el código de máquina de la casa todavía Sin embargo, específico del sistema operativo; por ejemplo, OS X no sabrá cómo cargar un archivo .exe de Windows, incluso si el código de la máquina podría ejecutarse si estuviera cargado.)

El orden de bytes no es un problema, ya que x86 & x64 son puramente little endian.

También tenga en cuenta que el ensamblaje que está viendo tiene un desmontaje , por lo que no se escribió necesariamente en el ensamblaje; podría haber sido escrito en casi cualquier idioma. Como se trata de un exploit, y está diseñado para hacer cosas extralingüísticas extrañas, las partes de hackers habrían sido más fáciles de escribir en el propio ensamblaje, y algunas podrían haber sido escritas con más facilidad en C, y algunas podrían haberse iniciado en C, desmontadas, y adaptado en el montaje.

Entonces, la respuesta corta es que admitir diferentes versiones de Windows en el exploit no es tan difícil como te imaginas.

    
respondido por el Boann 29.04.2014 - 15:33
fuente
2

Es posible que un exploit sea multiplataforma o navegador cruzado. Dependería de las bibliotecas, los marcos y el tipo de explotación.

La mayoría de los exploits se dirigirán a una plataforma específica, una versión específica, etc. Un exploit es un ataque a la lógica, por lo que puede ser posible escribir código una vez que funcione en arquitecturas basadas en la lógica, sin embargo, en algunos casos es posible que tengas que apuntar a arquitecturas más específicas.

por ejemplo, es una cuestión de explotar alguna optimización del compilador o hacer que salte a una instrucción diferente.

    
respondido por el Eric G 28.04.2014 - 18:16
fuente

Lea otras preguntas en las etiquetas