Problema de dependencia de arquitectura asociado con cargas útiles maliciosas

4

Mi pregunta es sobre las restricciones de arquitectura asociadas con las cargas útiles de backdoor / bind / reverse tcp que se utilizan normalmente para obtener shell a través de la explotación.

En una situación en la que la arquitectura del cuadro de destino (x86, x64, ARM, etc.) es desconocida.

  1. ¿Funcionaría una carga útil x64 en una arquitectura x86 sin la intervención del usuario? Por ejemplo, Windows solicita al usuario que ejecute el ejecutable en un modo de capacidad.
  2. ¿Existe una solución para la entrega de carga útil que no tenga dependencias arquitectónicas?
  3. ¿La codificación de una carga útil x64 con un codificador x86 crearía problemas de compatibilidad cuando se ejecutara?

Cualquier ayuda es apreciada! Lo aprecio porque ahorraré tiempo preguntando aquí en lugar de probar manualmente.

    
pregunta Sh1nu11bi 11.02.2015 - 17:05
fuente

1 respuesta

2

1. ¿Puede funcionar una carga útil x64 en una arquitectura x86?

Los ejecutables de 64 bits no pueden funcionar en arquitecturas x86 porque hay dos diferencias entre las arquitecturas. Más allá de las limitaciones del espacio de direcciones, existen registros de 64 bits que simplemente no existen. Los parámetros para las funciones se manejan de manera totalmente diferente. Las instrucciones de la máquina funcionan de manera diferente.

Windows de 64 bits contiene una gran cantidad de código para garantizar que haya compatibilidad para que los programas x86 se ejecuten en una arquitectura x64, pero los ejecutables deben escribirse para aprovechar esto. En este caso, el exploit debería construirse como una aplicación de 32 bits y utilizar el subsistema WOW64 . Este subsistema es como una caja de arena para ejecutar aplicaciones de 32 bits. Esencialmente emula un sistema de 32 bits para fines de ejecución.

2. ¿Existe una solución para la entrega de carga útil que no tenga dependencias arquitectónicas?

Compilación de compiladores para una arquitectura específica. Como dije anteriormente, el código independiente de la arquitectura requiere un tiempo de emulación. Por ejemplo, Java usa una máquina virtual para ejecutarse en múltiples plataformas. Esto viene a un costo de rendimiento.

3. ¿La codificación de una carga útil x64 con un codificador x86 crearía problemas de compatibilidad cuando se ejecutara?

No sé qué es un codificador x86. Si quiere decir que está transformando el código de máquina x64 en el código de máquina x86 ... es posible que, para empezar, compile con x86. Ya que es más o menos lo mismo.

    
respondido por el RoraΖ 11.02.2015 - 17:57
fuente

Lea otras preguntas en las etiquetas