Buenas herramientas para comprender / aplicar ingeniería inversa a un protocolo de red de capa superior

StackOverflow https://stackoverflow.com/questions/1437856

  •  08-07-2019
  •  | 
  •  

Pregunta

Hay un problema interesante a la mano. Tengo un MMOG de rol que se ejecuta a través de una aplicación cliente (no un navegador) que envía las acciones de mi reproductor a un servidor que mantiene a todos los jugadores sincronizados al enviar los paquetes de vuelta.

Ahora, el juego usa un protocolo de capa superior sobre TCP / IP para enviar los datos. Sin embargo, wireshark no sabe qué protocolo se está utilizando y muestra todo más allá del encabezado TCP como un volcado.

Además, este volcado no tiene cadenas de texto sin formato. Aunque el juego tiene una función de chat, la cadena de chat que se envía no se ve en este volcado como texto sin formato en ninguna parte.

Mi tarea es aplicar ingeniería inversa al protocolo un poco para encontrar algunas cosas muy básicas sobre los datos contenidos en los paquetes.

¿Alguien sabe por qué la cadena de chat no es visible como texto sin formato y si es probable que se esté utilizando un protocolo estándar de nivel superior?

Además, ¿hay alguna herramienta que pueda ayudar a obtener los datos del volcado?

¿Fue útil?

Solución

Si está cifrado, do tiene una posibilidad (de hecho, tiene un 100% de posibilidades si lo maneja correctamente): la clave debe residir en algún lugar de su computadora. Simplemente abra su depurador favorito, observe un poco (err, cien bytes más o menos, espero) de datos provenientes de un socket, establezca un punto de observación en esos datos y observe los rastros de la pila de cosas a las que accede eso. Si tienes mucha suerte, incluso podrías ver que se descifra en su lugar. De lo contrario, probablemente se dará cuenta del hecho de que están usando un algoritmo de cifrado estándar (serían tontos si no lo hicieran desde un punto de vista de seguridad teórico) ya sea observando los rastros de la pila (si tiene suerte) o utilizando uno de los perfiladores de IV / S-box (evite los académicos, la mayoría de ellos no funcionan sin muchos problemas). Muchos algoritmos de cifrado usan bloques de datos estándar. que puede detectarse (estos son los IV / S-boxes), estos son lo que busca en ausencia de otra información. Lo que encuentre, búsquelo en Google e intente anular su biblioteca de cifrado para volcar los datos que se cifran / descifran. A partir de estos vertederos, debería ser relativamente fácil ver lo que está sucediendo.

REing una sesión cifrada puede ser muy divertido, pero requiere habilidad con su depurador y mucha lectura. Puede ser frustrante, pero no te arrepentirás si pasas el tiempo para aprender cómo hacerlo :)

Otros consejos

Mejor suposición: cifrado o compresión.

Incluso telnet admite la compresión a través del cable, a pesar de que todo el protocolo está completamente basado en texto (bueno, casi).

Podría intentar ejecutar el flujo de datos a través de algunas utilidades de compresión comunes, pero dudo que eso haga mucho por usted, ya que con toda probabilidad no transmiten encabezados de compresión, simplemente se aplican algunos valores predefinidos.

Si se trata de cifrado de hecho, entonces estás bastante jodido (sin mucho, mucho más esfuerzo en el que ni siquiera voy a comenzar a entrar).

Lo más probable es que esté comprimido o encriptado.

Si está encriptado no tendrás oportunidad.

Si está comprimido, tendrá que averiguar de alguna manera qué partes de los datos están comprimidas, dónde comienzan las partes comprimidas y cuál es el algoritmo de compresión. Si tiene suerte, habrá encabezados estándar que puede identificar, aunque probablemente se eliminen para ahorrar espacio.

Nada de esto es simple. La ingeniería inversa es difícil. No hay herramientas estándar para ayudarte, solo tendrás que investigar y probar cosas hasta que lo descubras. Mi consejo sería pedirles a los desarrolladores una especificación de protocolo y ver si están dispuestos a ayudar a respaldar lo que está tratando de hacer.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top