Articulo interesante, saltarse hooks de la sdt.

Iniciado por bizco, 12 Mayo 2010, 08:08 AM

0 Miembros y 1 Visitante están viendo este tema.

bizco

http://www.matousec.com/info/articles/khobe-8.0-earthquake-for-windows-desktop-security-software.php

verificado, es super sencillo saltarse las restricciones.

Karcrack


Novlucker

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

bizco

no claro que no, pero yo personalmente para ese uso no lo conocia. es super sencillo y efectivo ;).

dark_hat

#4
Si he entendido bien, el método consiste en que un hilo de ejecución secundario cambie los parámetros de una llamada al system después de que el AV los compruebe y antes de que se realice la verdadera llamada al sistema no hookeada no?
Eso que huele es un poco de incienso,
eso marrón una tableta de turrón...

bizco

#5
asi es. aqui dejo un pequeño ejemplo basandome en ese articulo de como burlar la proteccion de un software en modo kernel desde modo usuario http://www.sendspace.com/file/hyt16d

Solo hay que escribir el process id del proceso a testear, este tiene que estar bloqueando OpenProcess desde el kernel.

Debci


dark_hat

#7
Pero y digo yo, ¿cómo debe hacer el hilo que cambiará los parámetros para saber cuándo cambiarlos sin hacerlo ni antes de la comprobación del AV ni después de la system call?
Eso que huele es un poco de incienso,
eso marrón una tableta de turrón...

isseu

Cita de: dark_hat en 13 Mayo 2010, 00:36 AM
Pero y digo yo, ¿cómo debe hacer el hilo que cambiará los parámetros para saber cuándo cambiarlos sin hacerlo ni antes de la comprobación del AV ni después de la system call?
Segun el texto lo hace hookeando el System Service Descriptor Table (SSDT). No se como, pero ponen algunos codigos por hay

bizco

#9
por ejemplo yo lo hago de este modo, hago un bucle y dentro de el intento obtener un manejador con NtOpenProcess:


   while(!Fin)
   {
    uno.UniqueProcess=(DWORD*)1234;
    NtOpenProcess(&hProc,PROCESS_ALL_ACCESS,&nn,&uno);
    if (hProc!=0)
    {
     printf("OpenProcess OK %X -> Presiona enter para cerrar el proceso.",hProc);
     getchar();
     TerminateProcess(hProc,0);
     Fin=1;
    }


antes de entrar en el while he creado un thread que cambia el pid por el del proceso real que se quiere abrir, en el while abrimos el proceso inexistente con pid 1234. en el otro thread cambio el pid por el que realmente se quiere abrir del mismo modo hasta que Fin es 1 que solo se cumple cuando ya tenemos el manejador del proceso, y el hook a sido burlado. es una forma un poco burra de hacerlo, pero es al instante, asi que es valida.

Como prueba intenta cerrar un proceso que use este metodo desde el taskmgr y veras que te dice acceso denegado, despues usa el ejemplo que puse arriba y veras que es cuestion de segundos.