Arxiu d'etiquetes: Hack

Cómo ganar siempre al “Apalabrados” (para Hackers)

Confieso que no he entrado en el tema “Apalabrados”, pero conozco a mucho enfermo del tema. Este artículo, extraido íntegramente de Security by Default, no pretende que hagáis trampas, o no siempre, ni va de las famosas aplicaciones para que os lo den hecho. En realidad va de ver las tripas de como funciona el juego y cómo hackearlo, o sea que aquí os lo dejo por si quereis experimentar…

Esto es lo que nos cuentan desde Security by Default:

Apalabrados, o “Angry Words”, el juego de moda. Muchos lo hemos descubierto como un desafío más. Algo a lo que se puede jugar con cualquiera y que consiste en exprimirse el cráneo pensando, con las letras que tienes, cómo completar palabras en un tablero. El concepto ya existía con el Scrabble de toda la vida, pero en este caso jugando de forma online contra amigos/conocidos o incluso contra personas seleccionadas de forma aleatoria.
Así que empecé a jugar y ví como ganaba algunas partidas, pero perdía otras. Y he de reconocer que no me gusta mucho perder ;DCon el tiempo, incluso aparecieron aplicaciones online o servicios que te “ayudaban” con la generación de palabras, en base a las letras que dispones, y las ya colocadas en el tablero, para que efectúes la mejor de las jugadas. Pese a que nunca llegué a hacer uso de estas aplicaciones, pensé en echar un vistazo a las tripas del juego, por aquello de ver cómo funciona y buscar alguna otra debilidad que me permitiese hacer esto de las palabras cruzadas algo más divertido.

Para ello, y como se jugaba desde un dispositivo móvil, monté una herramienta de intercepción de tráfico, que me permitiese analizar los mensajes intercambiados entre la aplicación, y el servidor correspondiente. Una vez identifiqué que las peticiones eran simples llamadas a una API web, dispuse el conocido proxy Paros para poder estudiar las mismas.
Os cuento mis findings principales:
  • El servidor hacia el que realiza las peticiones el juego es api.apalabrados.com y se encuentra en Amazon EC2, aunque tiene configurado el timezone de Argentina, tal cual denotan la hora de algunas respuestas del servidor. Tiene cierta lógica, puesto que la empresa desarrolladora de Apalabrados, es de las latitudes de la tierra del exquisito dulce de leche.
  • El proceso de login se puede hacer a través de usuario facebook (dando privilegios a la aplicación para el login) o mediante correo electrónico y contraseña. No he probado a fuzzear el acceso mediante correo electrónico con contraseñas, para ver si existe bloqueo de cuentas al hacer ataques de diccionario o fuerza bruta, pero CAPTCHA, no hay. Por mi parte, y aunque me he centrado en intentar trampear el juego con sesiones ya iniciadas, podemos ver que la contraseña de login viaja completamente en claro en una petición POST.

 

  • El protocolo utilizado es HTTP en plano, sin SSL, sin nada de nada. Meras peticiones web, sin autenticación con certificados de por medio que pongan la cosa un poco más complicada (saltable, pero con algo más de dedicación y esfuerzo). Impresionante que ni siquiera el login en la aplicación tenga un nivel mínimo de cifrado.
  • Al tratarse de un juego al que se puede acceder desde diferentes dispositivos a la vez de forma simultánea, lógicamente, las partidas y el estado del usuario ha de almacenarse en los servidores de Apalabrados, siendo los clientes, quienes piden información en cada ocasión. Analizando el tráfico web intercambiado, se ve que, en el login, se establece una sesión web corriente y moliente, el servidor nos inyecta una cookie con un sessionID (ap_session) que los clientes tendrán que utilizar en todas las peticiones que hagan hacia el servidor.

 

  • Si situamos a un cliente en una situación MiTM sencillo, forzando a jugar a los usuarios mediante una red wireless, podemos interceptar el identificador de usuario enviado en todas las peticiones GET y POST, y la cookie de sesión necesaria, así podríamos hacer peticiones del tipo: GET http://api.apalabrados.com/api/users/[mi_usuario_ID]/games con la cookie “ap_session” con el valor interceptado y obtendríamos la lista completa de los juegos de un usuario, con un montón de información de cada uno, el usuario contra el que se juega, su identificador Facebook (si se conectó haciendo login en facebook en vez de con correo electrónico), si ha de mostrar o no foto, la fecha de creación del juego, los turnos pasados, el número de fichas que quedan, la última palabra jugada, etc,…
  • Si pulsamos en cada uno de los juegos disponibles, podemos ver que se hace una petición al servidor para rellenar el mismo. La petición es del tipo: GET http://api.apalabrados.com/api/users/[mi_usuario_ID]/games/ Como bien podéis imaginar, con la cookie de sesión, podemos ver directamente la configuración de juego del usuario interceptado, y por supuesto, podemos actuar, como si fuera él.
  • Cuando se crea una palabra, con nuestras letras y las del tablero, el cliente envía una primera petición GET a http://api.apalabrados.com/api/dictionaries/ES?words=palabra. Así comprueba en su diccionario (depende del idioma) si la palabra existe o no. La respuesta es del tipo {“answer”:true,”wrong”:[],”ok”:[“palabra“]} si es válida; o del tipo {“answer”:false,”wrong”:[“palabra“],”ok”:[]} cuando es incorrecta.
  • Es posible manipular las peticiones y las respuestas entre el cliente y el servidor, de manera que le llegue al cliente lo que nosotros queramos, y que lógicamente, la aplicación ejecutará sin comprobar nada más. Es decir, que podemos modificar la respuesta del servidor diccionario, para que devuelva por válida cualquier palabra que le pongamos, sin problemas, pero los desarrolladores han tenido en cuenta estas trampitas, y hacen que, cuando confirmas posición de las letras, se comprueben, de nuevo, en el diccionario internamente y claro, dará un error por no existir la palabra. De momento, no he encontrado forma de engañar al servidor para que acepte palabras que no existen.
  • En la siguiente imagen podéis ver que se puede enviar al usuario el texto en las posiciones que queramos, cuando simplemente el cliente pregunte por un juego en concreto. No es necesario ni modificar el ID de la respuesta para que coincida con el que el cliente espera. Directamente, se le envía cualquier cosa y se la come,… incluso es posible enviarnos las letras que nos convengan para la siguiente jugada.

 

Teniendo en cuenta que es una matriz de 15×15, la posición de cada letra viene dado por la posición de la 0 a 224. Así que si queremos, podemos devolver el mapa de caracteres que queramos (ni siquiera han de ser sólo letras) y/o cuantos comodines nos venga en gana.
 
  • El problema está en que, como las partidas quedan grabadas en el servidor, cada vez que la aplicación cliente pida el estado de la partida, deberemos modificar el cuerpo de la respuesta que queramos. En otro caso, machacará en la aplicación cliente toda la creatividad que hayamos creado anteriormente y se verá la partida real.
  • Entonces, ya que el servidor no permite modificaciones de las letras disponibles, del número de fichas o que se coma aquellas palabras que yo quiera, está claro: si no puedo engañar al servidor ,engañemos a los clientes!  Aquí ya viene la parte maliciosa. En Apalabrados, la API permite preguntarle al servidor por la situación de algún juego (o de todos) mediante GET, y también ejecutar un comando, mediante POST, pasando en el POST DATA la acción. Las más agresivas son “Paso” o “Rendirse”, de manera que enviaríamos al servidor, falseando al cliente, en nuestro entorno MiTM una petición POST a  http://api.apalabrados.com/api/users/[mi_usuario_ID]/games/[juego_ID]/turns con el POST DATA el valor {“type”:”PASS”}, y estaremos simulando que el cliente ha pasado. Si hacemos esto por cada vez que sea el turno del usuario, a éste podemos devolverle un error cualquiera de conexión al servidor, mientras vamos jugando alegremente una partida en la que la víctima siempre pasará, perdiendo la partida por goleada.
  • Otra opción más agresiva aún es forzar a un usuario a Rendirse a una partida. ¿Cómo? pues enviando la petición POST a http://api.apalabrados.com/api/users/[usuario_ID]/games/[juego_ID]/turns el valor {“type”:”RESIGN”} en el cuerpo del POST. Con esto al servidor le llega, la petición fraudulenta de Rendirse, por lo que forzaremos que esa partida se pierda y se deprecie el valor del usuario en su perfil, por partidas renunciadas. Por contra, si estamos jugando contra la víctima, ganaremos automáticamente la partida, porque el contrario renunció.
  • Otra forma de forzar a un usuario a perder la partida es no devolver ninguna letra a nuestro contrincante,… Para ello, la devolución de letras en el caso de una jugada sería del tipo
    {“type”:”NORMAL”,”turns_played”:44,”replacement_tiles”:””,”my_score”:221,”opponent_score”:199,”game_status”:”ACTIVE”,”expiration_date”:”07/08/2012 08:51:21 EDT”,”id”:85302734} es decir, sin “letras de recambio”. En este caso, directamente es un Game Over para la víctima, puesto que no tiene ninguna letra para jugar y sólo le quedarán las opciones de darle al botón “Pasar” o “Rendirse”.
  • En estos tres últimos casos, estamos causando un perjuicio a un jugador, en nuestro beneficio. Sin embargo, también podemos enviarle lo que queramos a la víctima, o a nosotros mismos. Desde un “Has Ganado” o un “Has perdido”, aunque sea ficticio puesto que el servidor conoce el estado real de la partida. Pero, en cualquier caso, siempre es divertido enviarle mensajes malformados a un usuario para ver su reacción….

 

Y por supuesto podemos escribir lo que queramos en los puntos, el nombre del adversario, o incluso el mapa de letras que queramos que queden reflejados… Quise probar cuánto era el mayor puntaje que podía obtenerse en Apalabrados, así que probé rellenando con todo Z (valen 10 puntos) todo el tablero… Al forzar un WIN, el programa se pasa de largo sumando y calculando las triple/doble letra/palabra y da un resultado de 248, que obviamente es un resultado incorrecto,…
 
  • El apartado de ver perfiles de los usuarios (incluso del propio) también es susceptible de modificaciones, pudiendo modificar cualquier campo, poniéndonos los puntos que queramos en mejor juego, mejor jugada, palabra más larga, o incluso el número de partidas ganadas, perdidas o renunciadas, apareciendo el palmarés que queramos. Evidentemente, esto es sólo a ojos del cliente, porque en el servidor no se modifican estos stats

 

Estuve probando por si, por debajo, la aplicación llamase a Safari y fuese posible generar un XSS… pero no hubo suerte con la única prueba que hice.

Bueno, pero… ¿y cómo lo pueden arreglar?
El problema fundamental de Apalabrados, es que no han tenido en cuenta ningún tipo de checksum, o lo que sería aún mejor, una firma digital del hash de cada mensaje recibido. Las manipulaciones o tampering de los datos enviados por el servidor a los clientes, deberían ser comprobadas por el mismo, de manera que, si alguien ha dado rienda suelta a su creatividad por el camino, debería dar un error de integridad y no interpretar el contenido del mensaje.
Respecto al envío de mensajes por parte del cliente hacia el servidor, tanto con las jugadas con letras que se envían, como con los mensajes de “Rendirse” o “Pasar”, deberían ir cifrados, por ejemplo, con una contraseña de sesión. Otra opción, sería hacerlo con un hash de la contraseña del usuario que se mantenga en el cliente y que al estar ya almacenada en el servidor, pudiese dar la capa de confidencialidad necesaria a los mensajes. La opción optima sería firmar digitalmente todos los mensajes, pero eso implicaría un despliegue de certificados por cada usuario, que posiblemente hiciera inviable el juego.Ni siquiera se han preocupado que, cuando el login se hace mediante usuario-correo/contraseña, el envío de la misma se efectúe mediante un canal SSL, sino que la contraseña viaja en claro para que cualquiera, en determinadas condiciones, pueda acceder a ella cómodamente. Como recomendación, no uséis la misma contraseña que utilizáis para otras cosas, y por supuesto, ya que el nombre de usuario es una dirección de correo, haced el favor que la contraseña no sea la del servicio de correo!

La única “medida de seguridad” implementada (que yo creo que ha sido por casualidad) es el escaso tiempo de time-out, que obliga a hacer la manipulación de los parámetros en tiempo récord, o tener hecho el mensaje antes, para inyectarlo en la respuesta cuanto antes. La otra opción es diseñar un programa que cuando detecte las peticiones, formatee las respuestas según nuestras necesidades de forma automática.
Pensé en buscar un BOFen la devolución de alguno de los parámetros, ya que, como habéis podido comprobar, es posible modificarlos todos a nuestro gusto. Así que a base de pruebas, quizá sea posible ejecutar código remoto en el dispositivo de la víctima. Mi intención eran los fines académicos y lúdicos para conseguir la victoria en el juego, no en el dispositivo completo.Cierto es, que en el lado servidor, han tenido en cuenta “alguna” medida de seguridad, como la doble comprobación de que la palabra existe. Sin embargo, no han controlado todas las posibles reacciones de un usuario con un pelín de mala uva.

Recordad además que esto sólo es posible en aquellas situaciones en las que se utilice una red wireless para la comunicación de datos y sea posible el MiTM. En caso de jugar con 3G no habría forma de efectuar estas manipulaciones, y en caso de GPRS, hay que mirar que los @Taddong no estén cerca.
Noticia extraida de: Security by Default

Cómo conseguir contraseñas de correos de Hotmail, Gmail, Yahoo y cualquier otro !!!

Este es uno de los metodos que nunca fallan, hasta el momento no existe parche. Así que disfrutadlo mientras podais, no se trata de ningun otro metodo explicado antes.
Requiere de mucha paciencia y esfuerzo pero estos se ven, recompensados..  No se trata del clasico uso de exploit’s y keyloggers, etc..etc…
Tened cuidado con este método y empleadlo sólo para casos de emergencias, si te pillan lo puedes pasar mal…
Bueno ya no lo entretengo mas.. Disfrutenlo…

1) Primer paso: Identificar a la víctima, su nombre y dirección.

2) Segundo paso: Te pones un pasamontañas y pillas uno de estos:

revolver

3) Tercer paso: Vas a la casa de la victima (masculino o femenina), le apuntas y pides su contraseña, si no te la da, le disparas a la rodilla, le lanzas un papelito (tambien un lapiz o pluma…)
Nota: (tambien puede utilizar su sangre)
y le dices que apunte su correo y contraseña, si no te la quiere dar le disparas a la otra rodilla, (asi sucesivamente…)
Nota: (No dispares a partes vitales, ni a la mano con la que escribe). Cuando la escriba.. Le das las gracias.. Y le dices que si la cambia para la proxima vas a llegar con una de estas:

ametralladora

4) Cuarto paso: Por ultimo sales.. y das un portazo. (Entre fuerte mejor, que se note que tienes eggs)
lo olvidaba… tienes que tomar el papelito…

5) Quinto paso: Vas a tu casa, sacas el papelito.. pruebas si en verdad es la contraseña ( hay un 99.999 que si sea), revisas sus mails (fdw, spam).

Ojo esta técnica no solo sirve para hotmail , sino tambien para gmail, yahoo, fotolog, entre otras.
Nota: Ccuanto mas rudo seas mejor……

Bueno ahora ya sabes del mejor metodo que existe para saber las claves de los usuarios, ahora a probar.

Curiosidades del cuerpo humano o como hackearte a tí mismo

1. Si te pica la garganta, ráscate el oído: Aunque pueda parecer estúpido, funciona. Al tocar los nervios del oído, se produce un reflejo en la garganta que causa que los músculo sufran un espasmo, así aliviando el picor.

rascandose la oreja

2. Experiencia un oído supersónico: Si te cuesta entender lo que está diciendo tu acompañante en la discoteca, gírate y usa solamente el oído derecho. Es mejor para seguir los ritmos de la conversación. Por otro lado, el oído derecho es mejor para distinguir canciones que suenan en la lejanía o muy bajas.

oreja

3. Supera tu urgencia más primaria: Si tu vejiga está a punto de reventar y no hay un baño cerca, piensa en Jessica Simpson (o quienquiera que sea la chica de tus sueños). Pensar en sexo entretiene tu cerebro y elimina el estrés de estar aguantando la orina.

JessicaSimpson_TheseBoots

4. Inyecciones sin dolor!: Investigadores alemanes han descubierto que toser mientras te están vacunando reduce el dolor. Al toser, aumenta la presión en el pecho y en la espina dorsal, inhibiendo los conductores de dolor de la médula.

Inyeccion_Enfermera

5. Limpia tu nariz taponada: Olvídate de otros métodos. Con la lengua, presiona el paladar fuertemente de un lado a otro, y con un dedo presiona la parte superior de la nariz, por debajo del entrecejo. Esto causa que el moco que te impide respirar se mueva de alante hacia atrás.

phpcKa1us

6. Combate los ardores sin agua: Si quieres aliviarte de los ardores de estómago nocturnos, duerme sobre tu lado izquierdo. Así se crea un ángulo entre el estómago y el esófago de tal modo que los ácidos no pueden pasar del estómago a tu garganta por pura acción de la gravedad.

Ardor_estomago

7. Cura tu dolor de muelas sin abrir la boca: Tan simple como tomar un hielo y frotarlo por la zona con forma de V que está entre el dedo pulgar y el índice, por la parte contraria a la palma. Está demostrado que reduce el dolor en un 50% ya que esa zona está conectada con los receptores de dolor de manos y cara.

muelas-dolor

8. Consigue que desaparezcan las quemaduras: No, lo ideal no es aplicar hielo o agua fría a la quemadura. Una vez te quemes, limpia impediatamente la zona dolorida y aplica una ligera presión con un dedo de la mano contraria. Conseguirás que vuelva a la temperatura inicial y evitarás que aparezca la ampolla.

Quemadura

9. Evita que el mundo gire cuando estás borracho: Cuando bebes más de la cuenta, el alcohol diluye la sangre de la cúpula (en tu oído, responsable del equilibrio) y hace que flote. Esto causa que tu cerebro empiece a estar confuso y pierdas el equilibrio y todo gire. Para evitarlo, coloca tu mano sobre algo completamente estable (el suelo, una mesa, la pared…) para darle una ‘segunda opinión’ al cerebro y evitar la pérdida de equilibrio.

bender_borracho

10. Evita el picor en los laterales del pecho al correr: Cuando corremos solemos respirar justo al apoyar el pie derecho, lo cual causa una presión sobre el hígado que se encuentra en la parte derecha del cuerpo. Esto crea un característico picor. El remedio, lo imagináis: respira al apoyar el pie izquierdo.

jogging

11. Alivia el sangrado por la nariz con un sólo dedo: Apretar tu nariz y echar la cabeza para atrás es un buen remedio para evitar sangrar por la nariz… si lo que quieres es ahogarte en tu propia sangre. El mejor remedio es colocar un trapo o algodón en la punta de la nariz y apretar contra el cartílago. La mayoría de sangrados comienzan ahí, y con un sólo dedo podrás reducir el daño.

Hemorragia_Manga

12. Haz que tu corazón pare!: Cuando estás en tu primera cita o antes de un evento importante, tu corazón no parará de latir. Para aliviar esto, coloca tu pulgar en tu boca y sopla. El nervio que controla la frecuencia de latidos del corazón se puede controlar con la respiración.

sujetador_sugar_heart_bra_de_vive_maria

13. Descongela tu cerebro!: Cuando bebes agua muy fría o mucho helado de golpe, tu paladar alcanza una temperatura muy baja y tu cerebro lo interpreta como que él mismo se está congelando también (estupideces del cuerpo humano…), con lo que suele causar dolores de cabeza terribles. Para aliviarlo, coloca tu lengua contra el paladar, cubriendo el mayor espacio posible, para volverlo a su temperatura normal y aliviar el dolor de cabeza.

Cerebro_congelado

14. Previene la falta de visión en distancias cortas: Si estás poniendo tu vista en un punto cercano durante mucho tiempo (ie. la pantalla de tu ordenador) esto produce un estrés en tus ojos que hace que tu vista falle en distintas distancias. Para aliviarlo, cierra tus ojos, contrae todo tu cuerpo y sostén la respiración. Después de un rato, suelta la respiración y relaja tus músculos todo a la vez. Esto causará que otros músculos involuntariamente también se relajen, entre ellos los ojos.

sexy_girl_glasses

15. Despierta a tus manos y pies dormidos: Muchas veces nos ha pasado que nuestras manos o pies se ‘duermen’, y generalmente no sabemos qué hacer a parte de esperar… Pues ahora, cada vez que te ocurra, mueve tu cabeza de lado a lado, y se aliviará en menos de un minuto. Los brazos y manos dormidos son causados por presión en el cuello, con lo que moviendo la cabeza los nervios del cuello se soltarán. Para ‘despertar’ tus piernas y pies, sólo has de caminar unos segundos.

Pie_dormido

16. Impresiona a tus amigos: Este es quizá el más interesante. Estando con tus amigos, pídele a uno que extienda un brazo lateralmente haciendo 90 grados con su costado. Coloca tus dedos sobre su muñeca y empuja hacia abajo, pidiéndole que aguante. Aguantará sin problemas. Ahora coloca una caja o un montón de revistas debajo del pie del mismo lado en que está levantando el brazo, creando un desnivel entre ambos pies. Presiona ahora su brazo para abajo y no opondrá resistencia. ¿Qué ha pasado? Has desviado su espina dorsal, y el cuerpo ha interpretado que es vulnerable. Cuando esto ocurre, nos rendimos y abandonamos cualquier tipo de resistencia.

Amigos_riendo
17. Respira bajo el agua!: Si te está costando alcanzar ese euro al fondo de la piscina, antes de sumergirte haz varias respiraciones fuertes y rápidas, es decir, hiperventílate. Esto causará que el ácido de la sangre desaparezca, y ese es el principal causante de la sensación de ahogo, ya que el dióxido de carbono genera acidez. Este truco te dará unos cuantos segundos vitales.

Bebes_agua

18. Mejora tu memoria antes de un discurso: Si vas a dar un discurso mañana, léelo esta noche. Cualquier cosa que memorices antes del sueño se consolidará como un recuerdo de larga duración. Y esto también se aplica para los exámenes…

Memoria

SecurityTube.net, El YouTube de la seguridad informática

Su propio nombre nos indica lo que es, una página como YouTube pero especializada en videos de temática relacionada con la seguridad informática. Se encuentra en fase beta y como ya os podreis imaginar es una página en ingles, aunque como permite subir nuestros propios videos es posible que la comunidad hispana vaya colgando sus cosas.

SecurityTubeWeb

Web de SecurityTube.net
Blog de SecurityTube.net

Via: Dragonjar