Español | English
rss facebook linkedin Twitter

BOTS, más humanos que los humanos

Un BOT es un programa informático diseñado para realizar una determinada tarea de la misma manera en que la realizaría una persona. Podemos considerar a los BOT como la versión SOFTWARE de los ROBOT. Subrayamos aquí que se trata de realizar una tarea imitando la manera en que una persona la realizaría, en contraposición a un programa informático habitual, que podría realizar esa misma tarea en cuestión de segundos o de cualquier otra manera "no humana".

Los motivos por los que un BOT imita el comportamiento humano pueden ser diversos. Habitualmente se emplean BOTS en los servicios de CHAT[1], por ejemplo, para regular el correcto uso del servicio. Los usuarios del CHAT ven al BOT como un usuario más, que se comporta como una persona, interactuando con los usuarios verbalmente y facilitando así su utilización.

Tenemos un tipo de BOTS, conocidos como CHATTERBOTS, cuya finalidad es mantener una conversación con una persona de la manera mas "humana" posible. Los ejemplos mas tempranos de este tipo de BOTS vendrían con ELIZA (1996)[2] o SHRDLU (1998)[3].

La meta de un CHATTERBOT es "más humanos que los humanos" y en torno a este propósito trata el TEST DE TURING[4]: Una prueba propuesta en 1950 por el matemático ALAN TURING[5] cuya finalidad es demostrar la presencia de inteligencia en una máquina. El premio de carácter anual LOEBNER PRIZE[6] se concede al programa informático capaz de superar este TEST DE TURING de la manera más satisfactoria.

Y ahora en un plano al más puro estilo PHILIP K. DICK[7]

El comportamiento humano simulado de un BOT en ocasiones está dirigido a hacerle pasar por una persona en un entorno en el que los BOTS no están permitidos, de manera que el autor puede automatizar una serie de tareas, llevándolas acabo de manera desatendía y ganando así una ventaja que habitualmente se traduce en un beneficio económico.

En los juegos ONLINE, por ejemplo, el proceso de recolección de objetos y moneda virtual puede ser fácilmente automatizado mediante la utilización de un BOT. Esto proporcionaría al usuario del BOT una ventaja frente a otros jugadores "humanos". Se trata de una práctica creciente que acompaña al también creciente éxito de este tipo de juegos.

Restringir el acceso al juego ONLINE tan solo a usuarios humanos constituye un reto, especialmente ahora que millones de jugadores se encuentran en mundos virtuales en los que las barreras entre la economía virtual y la real resultan a veces ¿borrosas?

HOW I BUILT A WORKING POKER BOT[8] es un artículo en el que se describe como crear un BOT capaz de jugar al POKER ONLINE. El autor describe las técnicas de programación que empleó para manipular el SOFTWARE cliente del juego, capturar la información necesaria para decidir las jugadas y toda una serie de detalles que nos muestran hasta donde se puede llegar en este tema.

Cualquiera se lanza a apostar en un sitio de POKER ONLINE después de ver la que tiene montada este tío ¿no? Bien, no es enteramente así: El SOFTWARE cliente empleado en los juegos ONLINE mas avanzados incorpora una serie de protecciones destinadas a impedir este tipo de ataques, o en su defecto a dificultarlos.

En primer lugar observamos que el BOT de POKER propuesto utiliza una técnica bien conocida por todos, DLL INJECTION, para inyectar su código en el proceso del SOFTWARE cliente, esto es, en el programita que los jugadores de POKER ONLINE descargan y utilizan para jugar. Frente a este ataque algunos juegos incorporan en su SOFTWARE cliente diversas protecciones: Enumeración de los módulos cargados en el espacio de direcciones del proceso, volcados o sumas de control de zonas de memoria, detección de la presencia de HOOKS a través del análisis del código o del STACK, etc.

El autor del artículo hace énfasis en su idea de que es posible programar un BOT de estas características empleando técnicas de programación al alcance de cualquier programador que se precie de serlo. Bueno, bien… Vemos que actualmente esto no es así: Evidentemente depende del esfuerzo que los desarrolladores hayan puesto en proteger su juego ONLINE. Por falta de una tecnología capaz de encarar estos ataques, desde luego, no es.

Ahora situémonos en el mejor de los casos por un momento: El SOFTWARE cliente no puede ser manipulado de manera alguna. Los desarrolladores han protegido el espacio de direcciones del proceso de manera que cualquier modificación que realicemos sobre el código de juego o cualquier módulo que inyectemos en el será detectada y notificada.

Pues bien, aun en esa situación sería posible crear lo que se algunos llaman OUT-OF-PROCESS BOT: El BOT es capaz de trabajar sin realizar ningún tipo de modificación sobre el espacio de direcciones del SOFTWARE cliente. Por consiguiente no se puede inyectar código alguno en el proceso del cliente, ni realizar ninguna escritura en ninguna dirección perteneciente a el, lo que significa que no se pueden emplear HOOKS, entre otras cosas.

En un BOT OUT-OF-PROCESS la información de entrada necesaria para tomar las decisiones se captura de diversas fuentes, como pueden ser la interpretación gráfica del mapa mostrado en la pantalla del juego, los ficheros de LOGS producidos durante la partida o mediante la lectura de ciertas direcciones de memoria del SOFTWARE cliente. Frente a este tipo de BOT las técnicas de detección mencionadas anteriormente no funcionan, pues no hay suma de control capaz de detectar una modificación de no se ha realizado, ni enumeración que encuentre a un módulo que nunca fue cargado.

En el artículo KEEPING BOTS OUT OF ONLINE GAMES[9] los investigadores PHILIPPE GOLLE y NICOLAS DUCHENEAUT proponen una serie de técnicas destinadas a detectar los BOTS que han superado todos los sistemas de detección mencionados anteriormente, y que se encuentran participando activamente en el juego. Las técnicas propuestas por GOLLE y DUCHENEAUT resultan creativas, efectivas en coste y no intrusivas para el jugador… Pero igual de creativos, o más, se muestran a veces los autores de BOTS, especialmente cuando hay dinero real de por medio.

En el futuro, ¿tendremos que someternos regularmente a un TEST VOIGHT-KAMPFF[10] a la hora de acceder a ciertos servicios ONLINE?

Oscar Gallego Sendín
S21sec e-crime

Referencias:

[9] PHILIPPE GOLLE Y NICOLAS DUCHENEAUT: KEEPING BOTS OUT OF ONLINE GAMES
http://portal.acm.org/citation.cfm?id=1178522

[10] TEST VOIGHT-KAMPFF
http://es.wikipedia.org/wiki/Prueba_Voight-Kampff

5 comentarios:

Pluf dijo...

mola!!, codearse un bot para el WoW debe ser tope divertido :)

Marcos dijo...

Los Robots hace tiempo que pasaron el Test de Turing. Ahora se persiguen metas más altas.

alon dijo...

Mola mucho el post y muy buena la info aportada.

Newlog dijo...

Muy bueno!!

SidV dijo...

Justamente el otro dia publicamos en ReCreando un bot que era super humano. Lamentablemente como todos los bots del MSN, era un spammer.

Pero muy gracioso...
Conversaba el BOT... sin hacer spam al principio.

La verdad, me sorprendio.
Les dejo el enlace para que lo lean:
http://recreando.blogspot.com/2010/03/farrahgionta7011.html

Saludos.


(+34 902 222 521)


24 horas / 7 días a la semana



© Copyright S21sec 2013 - Todos los derechos reservados


login