Controlar las variables utilizadas por una aplicación

2

Una cosa que he visto comúnmente usada por los motores de trampas del juego es controlar las variables que usa el juego. La idea es editar las variables utilizadas por el juego para decir, darles municiones ilimitadas. Un ejemplo de este tipo de herramienta es tsearch .

No tengo idea de cómo replicar este ataque por mi cuenta, ni cómo se llama. Me gustaría saber cómo funciona y cómo mitigarlo.

    
pregunta Aurora 20.01.2015 - 21:50
fuente

3 respuestas

2

Esto generalmente se hace mediante ingeniería inversa del juego para averiguar dónde viven las variables dentro del programa. Hay dos formas de modificar esas variables.

Programa de revisión
Un atacante puede parchear el ejecutable o el DLL en sí mismo si no hay protecciones de integridad en él. Básicamente, los bytes reales del programa se modifican para ser / hacer algo diferente. Mientras el programa no verifique que no se haya cambiado ningún dato, esta es una opción muy viable.

Esto se puede mitigar realizando algún tipo de suma de comprobación en todo el ejecutable. Un hash criptográficamente fuerte haría. No querría usar algo como CRC32 porque con suficientes cambios en el binario, un atacante podría hacer coincidir las sumas de comprobación.

También puedes firmar tu programa. Antes de ejecutar el programa verifica la firma del programa. Si esto falla, entonces el programa no se ejecuta.

En el parche de memoria
Esta técnica es generalmente un poco más molesta. Mientras el programa está ejecutando, un atacante inyecta un código en él, o encuentra dónde vive en la RAM y parchea el programa allí. La inyección de código es mucho más difícil de hacer, pero los parches de memoria son casi lo mismo que los parches regulares. El atacante tiene que realizar esto cada vez que se ejecuta el programa, ya que la RAM se borrará. Esto es mucho más difícil de mitigar ya que el programa ya se está ejecutando.

Existen técnicas que puede utilizar para evitar la ingeniería inversa en general. Durante las partes del programa que desea proteger, puede detectar la presencia de un depurador. Es casi seguro que los ingenieros inversos necesitarán usar un depurador para averiguar exactamente qué pirciones de memoria afectan lo que hace el programa durante la ejecución. Manipular la memoria en un depurador para ver cómo se ve afectado el programa.

También puedes usar la ofuscación de código para hacer que el desmontaje o descompilación de tu código sea mucho más difícil.

Aquí hay un enlace divertido en esa dirección general .

    
respondido por el RoraΖ 20.01.2015 - 22:04
fuente
0

En términos generales, esto no incluye la validación correcta de una entrada no confiable. Si hay datos (el nivel de municiones) que están controlados por una entidad no confiable (el usuario) y esto no está validado por la aplicación (no verifica que la cantidad de municiones no haya sido modificada por el usuario). Tienes una vulnerabilidad potencial.

Ahora, si esto es una vulnerabilidad real depende de su modelo de amenaza. Por ejemplo, si se trata de un juego sin conexión para un solo jugador, puede que no lo sea. Puede que no te importe que el usuario pueda manipular el juego de esta manera. Para un juego multijugador en línea, puede ser una vulnerabilidad muy real. En este caso, puede mitigarlo mediante:

  1. Validar la entrada del usuario para asegurarse de que no se ha manipulado, o:
  2. que contiene el valor detrás de un límite de confianza, por ejemplo, establecer y mantener el nivel correcto de municiones en el servidor, sin depender de los valores del cliente.
respondido por el Xander 20.01.2015 - 22:00
fuente
0

Comencemos por tus preguntas:

  

No tengo idea de cómo replicar este ataque por mi cuenta

Empiece a aprender C y cómo funciona la memoria de la computadora y luego realice ingeniería inversa (al menos lo básico)

  

Me gustaría saber cómo funciona

Las variables que dijo son direcciones , por ejemplo: Cuando el programador declara una variable como HP o Ammo, representa una dirección que almacena el valor en la memoria de la computadora (RAM).

Example:

La variable HP en la memoria tiene la siguiente dirección 0x7fff9575c05f que almacena el número entero 100 (ejemplo), si tiene acceso a esa dirección, puede ver o cambiar el contenido.

Por lo tanto, los softwares como tsearch se pueden enganchar a un PID para analizar solo las direcciones de interés.

  

cómo mitigarlo.

Bueno, puede cifrar todos los datos que considera críticos, pero la mejor manera es usar un servidor externo para trabajar con estos datos. La idea detrás de las técnicas existentes es lo más difícil posible cualquier cambio, pero en general, si los datos están del lado del cliente, no tendrá garantía de integridad.

    
respondido por el G4spr 20.01.2015 - 22:27
fuente

Lea otras preguntas en las etiquetas