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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Inactivando registro de eventos.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Inactivando registro de eventos.  (Leído 2,759 veces)
APOKLIPTICO


Desconectado Desconectado

Mensajes: 3.871


Toys in the attic.


Ver Perfil
Inactivando registro de eventos.
« en: 21 Diciembre 2011, 02:35 am »

Hola! Como va? Me estoy carcomiendo la cabeza con un problema, estoy tratando de hacer un programa que cierre el registro de eventos (servicio eventlog) o que en su defecto, permita el acceso de escritura para los archivos de registro (.evt). Cabe aclarar que necesito eliminarlos de manera segura (con sobreescritura previa), osea que la opción de eliminar el registro de eventos no es viable.

Para esto se me ocurrieron dos maneras:

1) Cerrar el eventlog, para esto sería necesario de alguna manera cerrarlo sin matar el proceso services.exe que es escencial para windows, parece como si fuese un thread dentro del proceso services.exe. Cabe aclarar que no se puede cerrar el servicio ya que la llamada a ControlService() con la flag SERVICE_CONTROL_STOP devuelve un error ERROR_INVALID_SERVICE_CONTROL ya que el sistema lo marca como escencial.

2) Hacer una llamada a CloseHandle dentro del proceso services.exe llamando a las handles de los archivos, o desbloquear su acceso exclusivo de alguna manera. Estuve intentando con code injection pero todavía no pude hacerlo funcionar ya que crashea el proceso en el que se inyecta (en este caso estuve tratando de inyectar un winamp.exe) durante la llamada a createremotethread:

Código
  1.    HANDLE hProcess = OpenProcess(PROCESS_CREATE_THREAD | PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE | PROCESS_QUERY_INFORMATION, false, 4492);
  2.    if(!hProcess) return GetLastError();
  3.    DWORD iFuncSize = (DWORD) test - (DWORD) UnloadEvtLog;
  4.    void *pAddress = VirtualAllocEx(hProcess, 0, iFuncSize, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);
  5.    if(!pAddress)
  6.    {
  7.        CloseHandle(hProcess);
  8.        return GetLastError();
  9.    }
  10.    if (!WriteProcessMemory(hProcess, pAddress, (void *)test, iFuncSize, 0 ) )
  11.    {
  12.        CloseHandle(hProcess);
  13.        VirtualFreeEx(hProcess, pAddress, 0, MEM_RELEASE);
  14.        return GetLastError();
  15.    }
  16.    HANDLE hThread = CreateRemoteThread(hProcess, 0, 0, (LPTHREAD_START_ROUTINE)pAddress, 0, 0, NULL);
  17.    WaitForSingleObject(hThread,INFINITE);
  18.    CloseHandle(hThread);
  19.    VirtualFreeEx(hProcess, pAddress, 0, MEM_RELEASE);
  20.    return ERROR_SUCCESS;
  21.  

La funcion de prueba es la siguiente:

Código
  1. void test()
  2. {
  3.    char szPID[1000];
  4.    ZeroMemory(szPID, 10);
  5.    itoa(GetCurrentProcessId(), szPID, 10);
  6.    strcat(szPID, "\n");
  7.    strcat(szPID, GetCommandLine());
  8.    MessageBox(NULL, szPID , NULL, 0);
  9.    return;
  10. }


Esto puede ser porque no le estoy pasando parámetros a la funcion (ya que no tiene), entonces le pongo "0" en el puntero a los datos. Como debería poner cuando no hay parámetros para pasar??

Bueno, ojalá que alguien me pueda dar una mano.
Un abrazo
APOKLIPTICO.

PD: Vale aclarar que el proceso tiene el flag SE_DEBUG_PRIVILEGES activado.


« Última modificación: 21 Diciembre 2011, 02:46 am por APOKLIPTICO » En línea

AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.966


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Inactivando registro de eventos.
« Respuesta #1 en: 21 Diciembre 2011, 15:37 pm »

¿Hablamos de XP, no? En Windows 7 si se puede detener el servicio (y lo carga SVCHOST.exe).

¿Que es lo que queres hacer exactamente?

No podes usar funciones de la RTL ni de la API en el codigo inyectado directamente (nadie garantiza que la RTL este enlazada estaticamente en donde inyectas y tampoco que de estarlo sea la misma version y concuerde la direccion).
La funcion deberia ser LPTHREAD_START_ROUTINE, pasa una estructura de punteros para la API de Windows (asi no se usa el PE para nada). Si creas una DLL y simplemente llamas a LoadLibrary despues en la misma podes trabajar mas facilmente ...


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
APOKLIPTICO


Desconectado Desconectado

Mensajes: 3.871


Toys in the attic.


Ver Perfil
Re: Inactivando registro de eventos.
« Respuesta #2 en: 21 Diciembre 2011, 16:24 pm »

Sisi, por ahora estoy en XP, pero me gustaría que fuese aplicable también en Vista y 7, pero supongo que podría hacer un check a ver si la función devuelve ERROR_SUCCESS y en caso de que no funcionase, utilizaría otro método.

Me gustaría poder abrir los archivos que tiene el eventlog (.evt si no me equivoco) y poder eliminarlos de manera segura (con una sobreescritura), pero sin tener que reiniciar la pc. Osea, se puede deshabilitar el servicio de tal manera que no se inicie en el siguiente reinicio, pero me gustaría no tener que esperar a que se reinicie el sistema.

Entonces o cierro el eventlog o cierro los handles a los archivos abiertos, osea, debería buscar los handles que corresponde (que realmente no se como) y luego hacer una llamada a CloseHandle(HANDLE hFile) y luego que mi programa los abra con acceso exclusivo para evitar que se vuelvan a abrir.

En cuanto a inyectar la DLL, es posible hacerlo utilizando mingw como compilador?? Si no me equivoco hay problemas cargando DLLs creadas con mingw. Sino debería utilizar visual studio para hacer la DLL y luego inyectarla bajo mingw, pero preferiría no tener que hacerlo.

Un saludo
APOKLIPTICO.
En línea

AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.966


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Inactivando registro de eventos.
« Respuesta #3 en: 21 Diciembre 2011, 16:40 pm »

¿Que queres borrar y para que? Tal vez sea mas simple evitar que se escriba ... todavia no nos dijiste que queres hacer realmente.
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
APOKLIPTICO


Desconectado Desconectado

Mensajes: 3.871


Toys in the attic.


Ver Perfil
Re: Inactivando registro de eventos.
« Respuesta #4 en: 22 Diciembre 2011, 01:36 am »

Quiero borrar de manera segura los archivos del registro de eventos, específicamente los que contienen los logs del registro de eventos, estos archivos están en "%WINDIR%\system32\config" en XP y en una carpeta adentro de system32 en Vista y 7. Quiero borrarlos de manera segura, porque es probable que el clear de windows los borre de manera insegura, quiero reescribir los archivos con "0" o con información aleatoria y luego eliminarlos.

http://es.wikipedia.org/wiki/Persistencia_de_datos

En cuanto a evitar que se escriba, también voy a hacer eso, pero los que ya están escritos, quiero eliminarlos de manera segura, no se como puedo hacerlo más claro.

Un saludo
APOKLIPTICO.
En línea

AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Capturar eventos en Vb
Ingeniería Inversa
shoulck 3 2,960 Último mensaje 11 Julio 2006, 20:13 pm
por frankener1986
eventos
Programación Visual Basic
abel_xtnt 8 3,808 Último mensaje 14 Octubre 2005, 21:12 pm
por abel_xtnt
Guardar eventos en un registro .txt
Programación Visual Basic
renga73 2 1,929 Último mensaje 24 Abril 2006, 05:46 am
por renga73
Eventos en C++
Programación C/C++
HaX991 6 7,947 Último mensaje 2 Agosto 2010, 10:51 am
por HaX991
Eventos « 1 2 »
.NET (C#, VB.NET, ASP)
TheGhost(Z) 11 6,490 Último mensaje 19 Enero 2011, 12:59 pm
por [D4N93R]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines