Ayuda con rpyc en python

Iniciado por DtxdF, Junio 04, 2019, 05:27:40 PM

Tema anterior - Siguiente tema

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

Junio 04, 2019, 05:27:40 PM Ultima modificación: Junio 04, 2019, 05:31:42 PM por DtxdF

Estoy creando una aplicación en python usando el protocolo rpyc para ejecutar python remotamente, en esto me encuentro con una duda que me frena.

Inspiración, gracias pupy rat (Un troyano igualmente escrito en python y usando este protocolo). En eso que pruebo este rat me di cuenta de algo, la conexión era inversa y la conexión para interactuar de rpyc (Cuando yo empecé a usar este módulo), era una conexión directa, me frena el hecho de que el firewall/IPS/Ente protector o la interaccion no iba a hacer la misma debido a que los niveles de detección de la conexión va a hacer mucho mas propensa a la detección (Aunque también una conexión inversa puede ser detectable, pero ese es otro tema).

Lo que necesito es que llenen de conocimiento acerca de cómo hacer para enviar código de python del servidor al cliente.

Gracias :'D
PGP :: <D82F366940155CB043147178C4E075FC4403BDDC>

~ DtxdF

Junio 04, 2019, 06:07:16 PM #1 Ultima modificación: Junio 04, 2019, 06:09:19 PM por Kirari
Buenas @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta! No logro entender tu pedido... a ver si entiendo. Una vez te conectes con la máquina remotamente, lo que quieres hacer es enviar código escrito por vos al cliente? (por ejemplo: print 'hello world') ó que exactamente?, disculpa que no te haya entendido.

Gracias por responder @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Lo siento si no me explique correctamente. Básicamente lo que yo quiero hacer es que en vez de que el cliente envíe código hacia el servidor, sea el servidor quien lo haga.

Si apreciamos en la documentación y tutoriales nos daremos cuenta que el servidor siempre es el que recoje el código que le transfiere el cliente, lo ejecuta y le manda el resultado dependiendo del atributo, función, etc.

Documentación: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
PGP :: <D82F366940155CB043147178C4E075FC4403BDDC>

~ DtxdF

Bien, entonces de manera resumida... querés enviar instrucciones de Python de servidor a cliente mediante RPyC. Pero el problema tuyo es que decís que no sabes como hacerlo de esa manera, ya que RPyC lo hace de la manera inversa de cliente a servidor... estoy bien?

@No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Correcto, trate de usar la utilidad que crea un servidor multihilos (Aunque solo en conexiones, no en ejecución), probé esa utilidad e indagar los atributos que se generan con eso clase haber si me genera un atributo que haga referencia al socket de la conexión para ver si puedo interactuar con el cliente, pero sin éxito.

Si nos fijamos en el rat pupy: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, nos indica que usa rpyc y es cierto porque cuando se compila pesa poco y tiene una severidad de módulos que se cargan en memoria remotamente.

Gracias por responder ...
PGP :: <D82F366940155CB043147178C4E075FC4403BDDC>

~ DtxdF

Mmmmm cuando esté en la pc, probaré hacer lo que dices, te ayudaré en caso de que funcione. Saludos!

@No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Super!, muchas gracias por tu ayuda, espero tu respuesta.
PGP :: <D82F366940155CB043147178C4E075FC4403BDDC>

~ DtxdF

Buenas noches @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta! He estado probando el módulo de RPyC, probé algunas de sus funciones, pero todavía no he podido hacer lo del servidor al cliente, encontré una forma (posiblemente funcione) pero todavía tengo que adaptarlo bien y estudiarme mejor el módulo, ya que recién estoy empezando a usarlo. Lo malo de todo es que no hay mucha documentación especifica de este, aunque vi lo del RAT Pupy y estoy viendo como se implementa el código y así tener una idea. Pero en cuanto tenga una solución, te estaré avisando. Si encontraste la respuesta, entonces estaría bueno que la compartas por acá y así aprendemos  8). Saludos!

@No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Hola!, Gracias por indagar y atenderme.

También hice una prueba usando el constructor/función de python "exec" y ejecutar código remoto sin usar ningún módulo (Excepto socket y os, pero me refiero a un módulo estilo rpyc) y funciono correctamente, claro tenía que cargar el módulo y a veces los módulos dependen de binarios o librerías, pero creo que si hallamos la manera de cargar un binario (por lo menos en Windows para empezar) en memoria y que de adapté a las necesidades del módulo/librería sería una posible solución.
PGP :: <D82F366940155CB043147178C4E075FC4403BDDC>

~ DtxdF