Dropear un paquete especifico, antes de que salga del equipo con python

Iniciado por windic, 24 Junio 2018, 15:46 PM

0 Miembros y 1 Visitante están viendo este tema.

windic

Buenas a todos.

Os cuento mi problema, estoy intentado capturar un paquete HTTP especifico enviado por el explorador hacia una web, para modificar el contenido antes de ser mandado.

Por ahora lo que se me ha ocurrido es intentar filtrarlo con iptables en mi equipo y una vez que lo haya sniffeado con la librería de scapy de python, mandarlo con la modificación del contenido.

El problema es que no quiero filtrar todos los paquetes hacia esa web, solo uno. Así que mi pregunta es ¿Cómo puedo realizar filtrados mas específicos con iptables que no sean el típico de dirección destino y puerto? y también ¿a alguien se le ocurre otra forma de dropear el paquete y re-inyectarlo con una modificación?

engel lex

#1
lo que dices es medio complicado porque a demás tendrás que inyerctar el paquete a tiempo...

mi recomendación, conn sockets programa un proxy en python y que detecte el paquete a cambiar, el resto que sea tranparente


agrego... si quieres solo dropear y no modificar, coniptables puedes leer esto

https://www.centos.org/forums/viewtopic.php?t=58860

o buscar en google "iptables match string"
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

windic

Cita de: engel lex en 24 Junio 2018, 20:51 PM
lo que dices es medio complicado porque a demás tendrás que inyerctar el paquete a tiempo...

mi recomendación, conn sockets programa un proxy en python y que detecte el paquete a cambiar, el resto que sea tranparente


agrego... si quieres solo dropear y no modificar, coniptables puedes leer esto

https://www.centos.org/forums/viewtopic.php?t=58860

o buscar en google "iptables match string"

Si a ver, en verdad, una vez dropeado el paquete, no es necesario que sea inmediato el envio del nuevo, por fallo de la aplicación.

Respecto al proxy e iptables acabo de ver que no puedo identificarlo porque el paquete va bajo https, por lo tanto al estar cifrado no puedo discriminarlo del resto.
Para ponerlo un poco más en contexto y por si a alguien le interesa, procedo a explicar mejor lo que estoy haciendo. Ahora eso si, todo lo que digo es de forma teórica y presuntamente funciona de esta forma  ;).

Mi pasatiempos con el que estoy trabajando, trata sobre los juegos de telegram que se pueden jugar en los grupos poniendo el tag @gamee, estos son de la empresa gameapp.

Hace unos dias, se me ocurrió abrir web.telegram en el ordenador y desde allí jugar. Despues de varia pruebas (de concepto  :silbar:) identifiqué la petición que asigna la puntuación a la partida. Esta puntuación se envía junto a un hash para comprobar que no es modificada, tambien se envía la url del juego para identificar de que juego se trata y algunos datos más que carecen de interés.

Al ver esto se me ocurrió cambiar la puntuación que conseguía en el juego y tras un analisis del código encontre la forma de generar el hash. Este se genera con una funcion AES, con formato json pasando los parametros de timestamp actual,  y puntuación, y se cifra con una clave que esta pintanda de forma invisible en el html del juego.

Por lo tanto generando la petición con dichos cambios eres capaz de ponerte la puntuación que quieras en el juego. El problema es que es necesario iniciar el juego para que se genere una partida nueva en el servicio. Así lo que procedi a hacer es:

  • jugar al juego.
  • cortar el internet mientras juego para asegurarme que no manda la petición
  • cerrar la ventana del juego
  • encender internet.
  • y enviar la petición con postman.

Despues de llegar a estas conclusiones estaba buscando hacer un pequeño script que automatizara el proceso y de ahi surgen mis previas cuestiones.

Ah, por cierto, cabe decir que todo esto lo hago como un simple hobby, no tiene niguna finalidad. saludos y gracias :)

engel lex

al ser en js tiene algunos puntos que te ayudan... puedes directamente inyectar funciones, pero tienes que sentarte a leer el codigo y entender lo que allí pasa
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

windic

Cita de: engel lex en 25 Junio 2018, 00:35 AM
al ser en js tiene algunos puntos que te ayudan... puedes directamente inyectar funciones, pero tienes que sentarte a leer el codigo y entender lo que allí pasa


Pero para poder inyectar funciones desde un script solo es posible mediante un ataque XSS  y para eso tiene que tener algun tipo de fallo de seguridad en el control de las variables o las funciones  ¿no?.

O sino, la otra forma que se me ocurre sería reproducir el codigo de la página y añadir unos scripts js adicionales.

¿Hay otra forma?

engel lex

CitarPero para poder inyectar funciones desde un script solo es posible mediante un ataque XSS  y para eso tiene que tener algun tipo de fallo de seguridad en el control de las variables o las funciones  ¿no?.

no eso es solo si un ajeno sin acceso al codigo de la pagina o a tu pc quiere inyectarte codigo... tu puedes libremente inyectar codigo, solo presionas f12 y te abre la consola de programador donde puedes inyectar lo que quieras... para automatizar la inyección puedes usar una extensión para chome llamada tampermonkey
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

windic

Ah bueno si claro, pero abrir la consola no me servía para automatizarlo por eso lo había descartado. Pero no sabía que hubiera extensiones que me permitieran hacerlo. Muchas gracias  :)