Conferencia DEFCON 19. Hackea MMORPG por diversión y ganancias. Parte 2

Conferencia DEFCON 19. Hackea MMORPG por diversión y ganancias. Parte 1

Josh Phillips: como dijimos, todos los hacks son bastante simples, y su uso a veces no requiere ninguna habilidad, solo un enfoque creativo para los negocios. Para usar la "superpotencia", no es necesario ser el dios de la ingeniería inversa, pero definitivamente ayuda a cosas como el desbordamiento de enteros o el relleno insuficiente, y puede cambiar fácilmente los valores deseados de 0 al máximo, por ejemplo, para causar daños fatales al enemigo.



Mike Donnelly: sí, todo se reduce a la capacidad de crear hacks, por ejemplo, para maximizar tu armadura. Esto sucede en World of Warcraft: tuvimos un tipo que, sentado en Orgrimmar, la capital de los orcos, se quitó el casco 100 veces y se lo puso, bombeando su fuerza del nivel 2 al 32.

Josh Phillips: ¿esto realmente sucedió, o tal vez solo usó el editor de memoria y tomó una captura de pantalla?

Mike Donnelly: ¡Puede que tengas razón!

Josh Phillips: Mi modo favorito es el modo GM. Algunas compañías producen juegos con la posibilidad abierta de ingeniería inversa, de modo que usted, convirtiéndose en el "maestro del juego" GM, puede teletransportarse a las personas, destruir cosas, dar órdenes y hacer otras cosas interesantes. También hay un truco tan interesante, como el robo de elementos de personajes NPC que no son jugadores. El juego Age of Conan fue uno de los primeros en los que había una vulnerabilidad que podría matar a GM, y no creo que sus desarrolladores estuvieran contentos con él.

Mike Donnelly: ¿la vulnerabilidad era la posibilidad de falsificar la identificación de jugadores clave?

Josh Phillips: Bueno, sí, como lo que le dijiste al servidor: "Soy un maestro del juego y voy a morir ahora".

Mike Donnelly: A veces un servidor de juegos confía en ti cuando afirmas ser otro personaje del juego, diciendo: "¡Soy tal y tal y estoy vendiendo esto!"

Josh Phillips: Ya dije que los desarrolladores de juegos son personas ingenuas. Hackear UI Hack es menos valioso. Es útil si quieres ver el espacio del juego muy lejos o correr sobre el mapa del área del juego como un fantasma, mientras permaneces en su lugar.



Mike Donnelly: aún puede usar una traducción del lenguaje “salvaje”, por lo que, por ejemplo, los jugadores de la Alianza ya no entenderán a los jugadores de Ward. Aquí, el pirateo ocurre en el lado del cliente para que durante el diálogo el texto del oponente enviado al jugador simplemente no se muestre. Esto es bastante fácil de hacer, pero dudo que alguien pague por este tipo de pirateo.

Josh Phillips: La siguiente sección de la presentación se llama: "¡Estoy en su base, muchachos, para matarlos!" Trataré de explicarte cómo escribir un truco de teletransporte. Hay una manera fácil y una manera difícil para esto.

La manera fácil es encontrar la posición del jugador en la memoria, reescribirla y activar la función del juego, que es responsable de cambiar la ubicación del jugador para teletransportarse a la ubicación seleccionada. Entonces, si sabes dónde se encuentra el código responsable de la ubicación del jugador, y puedes llamarlo directamente usando alguna función, puede ser un hechizo de teletransportación, que se llama "hechizo de lanzamiento" en el idioma Lua, entonces puedes darle el valor deseado ubicaciones de teletransportación de jugadores. Sin embargo, el servidor no podrá reconocer si eres un guerrero ordinario o un mago que puede usar hechizos. Este método funciona en muchos juegos.
Lo difícil es fingir paquetes de movimiento. Esto requerirá cálculos matemáticos y conocimiento de cómo se actualizan, ingeniería inversa de paquetes de movimiento y similares. Es posible que deba ajustar la marca de tiempo para teletransportarse o correr más rápido.



El siguiente truco son los ataques de la lógica del juego al reemplazar la ID original en el paquete con la ID deseada, que mencionamos en el contexto de Age of Conan. Estos son ataques a las habilidades comerciales del jugador, daño crítico o la destrucción completa del daño de Caída tanto de los personajes como de los elementos del juego, así como ataques de comerciantes de PNJ con el propósito de robo. En Age of Conan, era posible infligir daño crítico a cualquier personaje en el juego e incluso matar a GM al asignarle un millón de daños por caída, después de lo cual simplemente murió.

Mike Donnelly: sí, ¡eso fue gracioso!

Josh Phillips: También podría usar código malicioso en este juego, para que alguien entablara una relación comercial con usted sin siquiera saberlo. Podrías obligar al NPC a venderte algo, y esta técnica todavía la usan muchos jugadores excepto yo, porque no me gusta robar a los personajes de la computadora. Y no creo que ninguno de ustedes deba hacer eso.

Mike Donnelly: causa lágrimas digitales ...

Josh Phillips: seguido de engaños o clonación de artículos. Muchos juegos tienen vulnerabilidades como problemas de delimitación del lado del servidor. Por ejemplo, Age of Conan, EverQuest, Final Fantasy XII y Ultima Online tienen zonificación, es decir, si lanzas un hechizo en un lado y luego cruzas la línea del servidor, entonces encuentras al enemigo que te derrotó allí y puedes continuar la batalla. El truco por el método de repetición es que a una velocidad tremenda, por ejemplo 1000 veces por segundo, mueves cosas de la ventana de comercio a tu mochila. Como resultado de esto, el servidor deja de rastrear cosas y llenan completamente su mochila. Todo el mundo conoce el juego Diablo 1, en el que simplemente arrojas un objeto al suelo, corres hacia él, pasas el mouse sobre él, tratas de levantarlo e inmediatamente aparece en tu mochila, mientras permaneces en el suelo, por lo que esta es una forma bastante divertida de hackear.

Hackear recursos del juego, o hackear activos, como mencioné, no vale la pena, a menos que alguien más haya publicado para ti tu trabajo que puedas prestar. Los que jugaron WoW saben que alguien puede aparecer mágicamente de tu lado. No sé cómo se llama correctamente ...

Mike Donnelly: campo de batalla, campo de batalla.

Josh Phillips: en realidad, nunca jugué a World of Warcraft, para mí es demasiado aburrido. Entonces, los jugadores usan la teletransportación para transferir instantáneamente desde el campo de batalla a la base enemiga y matar a todos los oponentes allí. También pueden modificar el mapa del juego y crear un túnel para correr bajo tierra hasta el área deseada para que nadie lo vea. Tal vez verá su pequeño nombre, una etiqueta que se mueve en el mapa, pero no verá al jugador. Pero en cualquier caso, estos métodos de piratería no valen la pena.

Comenzaré la sección "Hackear 420 juegos" con una cita de Maquiavelo: "Nunca se ha logrado nada grandioso sin peligro", por lo que incluso podría ser demandado.

Mike Donnelly: sí, sí, sí.

Josh Phillips: Creo que realmente lo es. Puedes usar el bot en el juego, alguien habló de esto hace un par de años acerca de esto, y quería golpearlo, porque no era interesante. Entonces, para hacer algo como leer píxeles y automatizar este proceso, no hay ingeniería inversa aquí. Por ejemplo, con una pulsación rápida, vuelve a dibujar los puntos críticos "rojos" de su propio daño para que no se pongan rojos y no muera. Este es un truco de una escala muy limitada, y tus acciones pasarán desapercibidas si actúas muy rápido.

Mike Donnelly: exactamente así, debes actuar muy rápido. ¿Alguien sabe por qué la detección funciona tan mal? Entiéndeme correctamente, no quiero embellecer la situación con la detección del lado del cliente, todos parecen muy sabios aquí ... Obviamente, a los productores de juegos no les gusta todo lo que estamos hablando, por lo que intentan encontrar su software en el juego, y si lo encuentran, eso banyat Si haces trampa por diversión, lo máximo que puedes perder es tu propia cuenta de juego, pero si tienes 100 mil clientes, este es un gran problema, porque si prohibes a todos tus clientes, simplemente te quemas.



Por lo tanto, prevenir la detección de trampas es muy importante. Hablaremos de esto más adelante, pero ahora quiero señalar que detectar su software en el lado del cliente es muy importante.

Josh Phillips: ¿Alguno de ustedes se ha preguntado por qué se produce una ola de prohibiciones una vez cada 3 meses? El hecho es que cuando prohíbe 50 mil cuentas cada semana, las personas que vuelven a vincular estas 50 mil cuentas nunca volverán a hacer esto debido al alto costo. Pero si los prohíbe no más de una vez cada 3 o 4 meses, volverán a comprar cuentas, ya que esto será rentable. Las empresas piensan algo como esto: encontramos a estos tipos que usan, por ejemplo, el bot Glider, pero no los van a prohibir, porque si los prohibimos con demasiada frecuencia, no nos traerán más de $ 50 de ganancia.

Mike Donnelly: sí, eso es cierto.

Josh Phillips: Otra forma de piratear es inyectando código cuando inserta un código de ensamblador pequeño para hacer algunas cosas pequeñas, por ejemplo, llamando de forma remota algún tipo de procedimiento RPC. La superficie de su ataque puede aumentar, quiero decir, realmente puede usar algo como una inyección de DLL en un gran código escrito en C o C ++ de alto nivel, que es realmente fácil de detectar. Usted escribe un cargador de DLL que corrige todas sus importaciones y todo eso.

Puede atacar el nivel de los paquetes de red y hacer algo tan bueno como aplicar ingeniería inversa al protocolo de red. Este es un trabajo que lleva mucho tiempo, porque no hay demasiados juegos que permitan este tipo de análisis de contenido. Todavía no es una tarea fácil, y si te consideras un profesional, puedes escribir tu propio cliente de juego. Las personas a menudo piensan que pueden hacerlo y pasan mucho tiempo en vano, pero si realmente puede escribir un buen cliente, como los tipos que me destruyeron hace un par de meses, puede ganar un par de cientos de miles por mes en esto.

Mike Donnelly: escribir un cliente personalizado no es lo que vas a vender, sino "agricultura de oro" y transacciones con dinero real. Si escribiste tu cliente de juego, puedes pedirle a tu compañero que lance diez millones de copias del juego en el servidor de pharming. Si su cliente de juegos no requiere una gran cantidad de operaciones de renderizado en 3D, entonces su excelente puede usarse para escalar el cultivo de oro.
Josh Phillips: si usualmente puedes ejecutar 2-3 clientes de juegos en una computadora, y pudiste lanzar 200-300 clientes, esto será a gran escala.

Ahora considere una cosa llamada anti-trampa. En su ayuda, puede lidiar con software que calcula y prohíbe a los tramposos. Esta es a menudo una tarea muy difícil, pero a veces es muy importante no ser detectado, de lo contrario puede perderlo todo. En la diapositiva, cito otra cita de Sun Tzu, quien dijo: “Sé extremadamente sutil hasta la falta de forma. Sé extremadamente misterioso hasta el silencio.

Mike Donnelly: Quiero señalar que no hay muchos aspectos técnicos de detección, pero debe abordar esto estratégicamente, esto no está en el libro "Hackeo MMO". Tal vez hay tal libro?



Josh Phillips: sí, fue escrito por uno de mis amigos.

Mike Donnelly: Este tipo es eliminado en primer lugar. Entonces, esto no está en el libro, pero si hablamos de un enfoque estratégico para los negocios, entonces debería preocuparse por dos cosas principales relacionadas con su software. Tiene una superficie de ataque que determina qué tan difícil será detectar su software y, en este caso, el anti-trampa puede simplemente aumentar el código de detección si es pequeño. En segundo lugar, debe tener lo que yo llamo simplemente "inteligencia", es decir, qué tan bien está consciente de lo que está haciendo el enemigo, debe comprender cómo funcionan sus programas de detección, porque es muy importante. Ambas cosas funcionan juntas, y si la superficie de ataque es demasiado grande, será difícil decir qué está haciendo el enemigo en respuesta, porque sus esfuerzos pueden ser mínimos: solo escriba una línea de código que detecte su bot. Si haces algo realmente genial, como mi bot, que responderá en 2 milisegundos, si el monstruo hace algo, puedes evitar la detección.

Entonces, esta es la decisión que debe tomar al elegir las características y diseñar lo que sus clientes están pidiendo. Debe decidir si desea correr riesgos al aumentar la superficie de ataque agregando tales características.

Antes de mostrar la siguiente diapositiva, quiero hablar sobre lo que me pasó a mí y a otros desarrolladores de software de World of Warcraft. Un tipo desarrolló software, llamémoslo Innerspace, que funcionó inyectando dlls en un juego bastante grande. Este tipo estaba bien versado en ingeniería inversa, por lo que tomó todas las medidas contra los programas de detección de Blizzard. Pero aún dejó el dll en la memoria, que quería "confundir", y lo más importante, tuvo que parchear una de las funciones de Blizzard. Por lo tanto, simplemente fue al comienzo de esta función e insertó un "salto largo" en el lugar correcto en el código, asegurándose de que había enmascarado lo suficiente y de que nadie lo encontraría.

La siguiente diapositiva muestra la función con el código insertado, preste atención a los valores resaltados en rojo, aumentaremos este fragmento para que todos puedan verlo.



Este es un código insertado dentro del juego, pero no es World of Warcraft ...

Josh Phillips: porque Mike persigue a Blizzard ...

Mike Donnelly: Creo que dar un ejemplo de WoW no sería una buena idea. En este fragmento de código, verá que el juego usa la consulta de lista de amigos askForBuddiesList, que tiene un parámetro opcional que nunca se ha usado antes. Se entiende como un número de paquete, o un número de equipo, o un número BOB - "Hermanos sobre perras". Este parámetro opcional se "pega" en este lugar del código y se envía al servidor, todo es muy simple.

Entonces, este código "pegado", recorramos un par de líneas hacia los comentarios, dice: el código anterior era askForBuddiesList (0), es 0, y en su lugar ahora se usa un nuevo código con el parámetro de opción _asm, que nunca se ha usado antes.



Entonces, Blizzard iba a encontrar en el código del juego una función arreglada por este tipo. Para hacer esto, cambiaron esta llamada de función a una pequeña muestra de código. Utilizaron los registros, realizaron algunos cálculos matemáticos, para que la IDA no vea otro enlace a esta función. Luego van a la función corregida, extraen el primer byte de su código y lo envían como un parámetro que nunca se ha usado antes. ¿Qué pasa entonces? Envían un byte de su propio código cada vez que hacen esta solicitud, y, por supuesto, en el lado del servidor simplemente la "peinan", y si encuentran E9 en lugar de cero, ¡listo, listo!

Lo interesante de este software es que no ves nada como "si este tipo es un bot, díselo al servidor" aquí. Solo ves que tomo este byte y lo envío, y este es un pequeño fragmento de código que ni siquiera cambia el código de la red principal, no hay nuevos parámetros, nada nuevo. La única forma de encontrarlo es observar de alguna manera cómo se recopilan estos datos, y luego podemos decir: "Sí, esto siempre fue 0, y ahora es 9, ¡no es bueno!"

Entonces, cuando hicieron esto, este tipo perdió a todos sus clientes porque esperaron varias semanas para que no se les prohibiera, y luego la compañía atacó una y otra vez.
Este es un buen ejemplo de cuánto significa la superficie de ataque, porque arreglar solo una función del juego ha llevado a tal respuesta. El hecho es que si crees que sabes dónde está el código de detección, siempre existe la posibilidad de que esto no sea lo que piensas. En el caso de Blizzard, nunca colocaron su código de detección fuera del "guardabosques" del Guardián, "guardaron todos sus huevos en una canasta", ocultando los detectores en el "guardabosques". Pero luego se dieron cuenta y dijeron que simplemente publicaríamos nuestro pequeño código donde quisiéramos, y eso es todo.
Por lo tanto, es extremadamente importante seguir siendo difícil de detectar. Si se les ocurrió algo así como una nueva llamada del kernel, o lanzaron un monitor API privado, su actividad podría detectarse, pero cuando dieron un pequeño paso, quedaron atrapados de inmediato. Por lo tanto, es muy importante observar lo que hacen y cómo crean nuevas herramientas para monitorear cómo deben verse los flujos de datos en el sistema.

En cuanto a Glyder, teníamos herramientas que nos advirtieron, por ejemplo, que Warden se actualizó y ahora tiene 9 puntos de entrada en lugar de 8, y después de tal advertencia, corrí a mi oficina y comencé a arreglar febrilmente a Glyder, llevándolo a ordenar y ejecutar de nuevo. Así que siempre hay una salida, lo principal es no ser perezoso. Realmente hay mucho trabajo en este negocio, pero vale la pena.

Josh Phillips: sí, creo que ambos tuvimos que trabajar 36 horas sin descanso.

Mike Donnelly: cuando Blizzard actualizó el "guardabosques", le agregaron un nuevo escáner. Este escáner toma la línea cifrada dentro del "cuidador", recibe la clave del servidor, descifra esta línea y llama a la función GetProcAddress, que extrae la dirección de la función exportada de la biblioteca conectada conectada dinámicamente especificada, en este caso kernel32.dll. Si te aburro, no te preocupes, será más divertido.

Por lo tanto, toman la cadena, sea lo que sea, y si está regulada por esta función, GetProcAddress se aplica a ella sin ningún parámetro. , , , , . , - kernel32.dll , , .

, , , , Hellgate: London. , , ! : « ! , »!



, , URL — YouTube! GetProcAddress, ProcAddress , , , , , ! , . , . , , ricroll, - !

: , . , - , , , dll . , . Blizzard , «, , – , ».

, , , command & control , «» Warden Punkbaster. WoW, , .

: .

: , . Punkbaster , , . window.name, Punkbaster. : «, , , IRC , , ».

, Punkbaster : «-, !», .

, . , , . . , .

: , , Diablo 3.



, – ? Blizzard . Blizzard . , , «» Blizzard, .

: , . , , , .

: , …

: , , .

: , DefCon!




Gracias por quedarte con nosotros. ¿Te gustan nuestros artículos? ¿Quieres ver más materiales interesantes? Apóyenos haciendo un pedido o recomendándolo a sus amigos, un descuento del 30% para los usuarios de Habr en un análogo único de servidores de nivel de entrada que inventamos para usted: toda la verdad sobre VPS (KVM) E5-2650 v4 (6 núcleos) 10GB DDR4 240GB SSD 1Gbps de $ 20 o cómo dividir el servidor? (las opciones están disponibles con RAID1 y RAID10, hasta 24 núcleos y hasta 40GB DDR4).

VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps , .

Dell R730xd 2 veces más barato? ¡Solo tenemos 2 x Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100 TV desde $ 249 en los Países Bajos y los Estados Unidos! Lea sobre Cómo construir un edificio de infraestructura. clase utilizando servidores Dell R730xd E5-2650 v4 que cuestan 9,000 euros por un centavo?

Source: https://habr.com/ru/post/437790/


All Articles