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

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Hacking (Moderador: toxeek)
| | |-+  Duda Inyección DLL
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda Inyección DLL  (Leído 3,027 veces)
lubo

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Duda Inyección DLL
« en: 14 Octubre 2013, 23:10 pm »

Buenos días.
Estaba siguiendo este tutorial http://foro.elhacker.net/hacking_avanzado/paper_inyecciones_dll-t159111.0.html , pero no me funciona.

Compilador: Microsoft Visual Studio 2013 RC
Plataforma: Windows 8

Tengo el código que inyecta en el proceso la DLL:
CreateRemoteThread
Código
  1. #include "stdafx.h"
  2. #include <stdio.h>
  3. #include <windows.h>
  4.  
  5. int main()
  6. {
  7. DWORD pid;
  8. HANDLE proc;
  9. char buf[MAX_PATH] = "";
  10. char laDll[] = "C:\\laDll.dll";
  11. LPVOID RemoteString;
  12. LPVOID nLoadLibrary;
  13. char Entrada[255];
  14. printf("Ejemplo CreateRemoteThread by MazarD\nhttp://www.mazard.info\n");
  15. printf("Introduce el PID del programa (puedes verlos en el taskmanager): ");
  16. fgets(Entrada, 255, stdin);
  17. pid = (DWORD)atoi(Entrada);
  18. proc = OpenProcess(PROCESS_ALL_ACCESS, false, pid);
  19. //Aquí usamos directamente GetModuleHandle en lugar de loadlibrary ya que kernel32 la cargan todos los ejecutables
  20. //Con esto tenemos un puntero a LoadLibraryA
  21. nLoadLibrary = (LPVOID)GetProcAddress(GetModuleHandle(L"kernel32.dll"), "LoadLibraryA");
  22. //Reservamos memoria en el proceso abierto
  23. RemoteString = (LPVOID)VirtualAllocEx(proc, NULL, strlen(laDll), MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
  24. //Escribimos la ruta de la dll en la memoria reservada del proceso remoto
  25. WriteProcessMemory(proc, (LPVOID)RemoteString, laDll, strlen(laDll), NULL);
  26. //Lanzamos el hilo remoto en loadlibrary pasandole la dirección de la cadena
  27. CreateRemoteThread(proc, NULL, NULL, (LPTHREAD_START_ROUTINE)nLoadLibrary, (LPVOID)RemoteString, NULL, NULL);
  28. CloseHandle(proc);
  29. return true;
  30. }
  31.  
Y el programa compila perfectamente.


Esta es la DLL (generará laDll.dll):
dllmain.cpp
Código
  1. // dllmain.cpp : Define el punto de entrada de la aplicación DLL.
  2. #include "stdafx.h"
  3. #include <stdio.h>
  4. #include <Windows.h>
  5.  
  6. BOOL APIENTRY DllMain(HMODULE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved)
  7. {
  8. if (ul_reason_for_call == DLL_PROCESS_ATTACH)
  9. {
  10. FILE *arch;
  11. fopen_s(&arch, "C:\\mehecargado.txt", "w");
  12. fclose(arch);
  13. }
  14. else
  15. {
  16. FILE *arch;
  17. fopen_s(&arch, "C:\\NOmehecargado.txt", "w");
  18. fclose(arch);
  19. }
  20.  
  21. return TRUE;
  22. }
  23.  
También compila sin problema alguno.

He creado laDll.cpp y laDll.h, pero no definido funciones a exportar, por lo que los archivos están vacíos, ya que ni siquiera tengo funciones.



Ejecuto el programa, pongo el PID y no sucede nada... ¿Qué puede pasar?

Gracias por la ayuda que me podáis dar, en la carrera no me explican nada de esto, y me interesan mucho los temas de seguridad.
En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.471


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Duda Inyección DLL
« Respuesta #1 en: 14 Octubre 2013, 23:24 pm »

No tengo muy en claro el porqué, pero CreateRemoteThread falla en Win8. Aunque debo admitir que no he revisado la MSDN.

Para inyectar en este OS, pordrías usar las APIs de debug o bien Read/WriteProcessMemory...

Saludos!
En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

lubo

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: Duda Inyección DLL
« Respuesta #2 en: 14 Octubre 2013, 23:49 pm »

No tengo muy en claro el porqué, pero CreateRemoteThread falla en Win8. Aunque debo admitir que no he revisado la MSDN.

Para inyectar en este OS, pordrías usar las APIs de debug o bien Read/WriteProcessMemory...

Saludos!

Vaya, lo probaré en Win7.

¿Apis de debug?

Creo que con Read/Write te refieres a inyectar directamente en la memoria del programa ajeno, ¿no? Porque ya estoy usando WriteProcessMemory...
En línea

lubo

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: Duda Inyección DLL
« Respuesta #3 en: 15 Octubre 2013, 19:27 pm »

No tengo muy en claro el porqué, pero CreateRemoteThread falla en Win8. Aunque debo admitir que no he revisado la MSDN.

Para inyectar en este OS, pordrías usar las APIs de debug o bien Read/WriteProcessMemory...

Saludos!

Perdón, doblepost (pero para que te aparezca como no leído). Lo he probado en Win7 con el proceso explorer.exe (con su PID, claro), y no funciona. ¿Qué ocurre?

Gracias.
En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.471


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Duda Inyección DLL
« Respuesta #4 en: 15 Octubre 2013, 22:26 pm »

Deberias depurarlo para ver los valores de retorno de las APIs.

Asi podras tener una idea de que puede estar fallando.

Saludos!
En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
duda con inyeccion sql
Nivel Web
mitsumy 5 3,203 Último mensaje 13 Noviembre 2009, 23:05 pm
por OzX
Duda Inyeccion sql... « 1 2 »
Nivel Web
andres_5 11 7,715 Último mensaje 17 Junio 2010, 07:24 am
por MagnoBalt
Duda inyeccion sql
Hacking
ediporey2000 7 4,806 Último mensaje 28 Febrero 2011, 00:04 am
por Edu
Duda inyeccion sql
Nivel Web
xeb3rus 4 2,911 Último mensaje 10 Abril 2012, 17:22 pm
por terito
duda inyeccion sql
Nivel Web
colcrt 3 2,821 Último mensaje 20 Julio 2015, 08:07 am
por sqln00b
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines