Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: x64core en 4 Junio 2012, 01:11 am



Título: Anti breakpoint?
Publicado por: x64core en 4 Junio 2012, 01:11 am
Hola a todos bueno e escuchado mucho hablar y me han mencionado de la tecnica anti break point... que es antidebug
para poder proteger un programa y este elimina los breakpoint si detecta que esta siendo depurado...
pero no sé como es ni sé en que consiste para hacer alguna implementacion en algun lenguaje... alguien sabe como
consiste?


Título: Re: Anti breakpoint?
Publicado por: The Swash en 4 Junio 2012, 03:37 am
Hola,

Algún día leí algo al respecto y constaba y verificar que determinadas partes de tu "memoria" no tuviesen un 'CC = INT 3' que es lo que ponen los breakpoints. En lenguajes como C o Pascal se haría muy fácil puesto que tienes punteros.
Ahora pueda que se trate de otra cosa así que espera más opiniones.

Un saludo,
Iván Portilla.


Título: Re: Anti breakpoint?
Publicado por: Иōҳ en 4 Junio 2012, 04:37 am
La manera más clásica es usar un algoritmo de comprobación de integridad por ejemplo CRC, si ha cambiado algún byte de la sección código por ejemplo, es decir si se ha seteado un soft breakpoint, será detectado porque las operaciones del algoritmo darán otro resultado.

Este tipo también puede servir para evitar los BPM... si los tomas en cuenta los permisos de las páginas y/o secciones en las operaciones del algoritmo.

Una forma de evitar los soft breakpoints por ejemplo en las apis, es emular parcial o completamente, así cuando se setee un soft breakpoint, nunca parará.

El límite es tu imaginación.

Saludos,
Nox.


Título: Re: Anti breakpoint?
Publicado por: x64core en 4 Junio 2012, 05:54 am
hey muchas gracias, ya comprobe y funciono, no sabia que de esa forma ponian los brk los depuradores :)


Título: Re: Anti breakpoint?
Publicado por: .:UND3R:. en 7 Junio 2012, 17:43 pm
Recuerda que también se pueden eliminar los Breakpoint on memory, cambiando los permisos de memoria con la API VirtualProtect.

Es decir si un cracker poner BPM estando en el OEP, podrías cambiar los permisos del segmento .CODE, algunas funciones antes que las funciones importantes de validación o comprobación del serial, de esta manera los BPM se eliminan.

Para los Hardware Break Point, puedes generar excepciones forzadas en tu programa una vez generada podrías verificar la estructura CONTEXT  (apuntada por la API KiUserExceptionDispatcher) la cual al principio almacena los HBP y borrarlos, por lo que lo que no funcionarán


Título: Re: Anti breakpoint?
Publicado por: Иōҳ en 7 Junio 2012, 19:46 pm
Se pueden hacer muchas cosas jeje, hay formas que desde ring3 puedes inhabilitar los soft breakpoints por ejemplo ejecutando instrucciones privilegiadas (ring0) cambiando la dirección contenida en el vector  de la IDT de la INT3, jeje..

Agregando a lo que te dijo Under para los BPM también puedes usar la api VirtualQuery + la struct MEMORY_BASIC_INFORMATION, para saber los permisos actuales de las páginas de memorias :).


Saludos,
Nox.


Título: Re: Anti breakpoint?
Publicado por: TomaSs en 7 Junio 2012, 23:58 pm
Por cierto, hace algún tiempo leí algo muy interesante sobre los breakpoints en el gran blog de genbetadev, aquí te lo paso:
¿Cómo funciona un depurador de C/C++? (Parte I) (http://www.genbetadev.com/cc/como-funciona-un-depurador-de-c-c-parte-i)
¿Cómo funciona un depurador de C/C++? (Parte II) (http://www.genbetadev.com/cc/como-funciona-un-depurador-de-c-c-parte-ii)
¿Cómo funciona un depurador de C/C++? (Parte III) (http://www.genbetadev.com/cc/como-funciona-un-depurador-de-c-c-parte-iii)

¿Cómo funciona el breakpoint en un depurador de C/C++? (http://www.genbetadev.com/cc/como-funciona-el-breakpoint-en-un-depurador-de-c-c)
¿Cómo funciona el hardware breakpoint en un depurador de C/C++? (breakpoints part II) (http://www.genbetadev.com/cc/como-funciona-el-hardware-breakpoint-en-un-depurador-de-c-c-breakpoints-part-ii)
¿Cómo funciona el memory breakpoint en un depurador de C/C++? (breakpoints part III) (http://www.genbetadev.com/cc/como-funciona-el-memory-breakpoint-en-un-depurador-de-c-c-breakpoints-part-iii)


Título: Re: Anti breakpoint?
Publicado por: Karman en 8 Junio 2012, 06:17 am
sin entrar al modo kernel... en modo usuario tenes varias formas, algunas ya descriptas... para los bp comunes tenes la opción de generar un hash del code y cada x tiempo comprobar que sea igual, para los MBP puedes comprobar (como ya dijeron) los permisos sobre los espacios de memoria, y para los HBP comprobar el registro CONTEXT, fuera de eso, creo que lo mejor para evitar intrusiones es evitar que ocurran (es mejor prevenir que curar... :P ) por lo que el tema sería evitar que puedan abrir tu programa con un depurador...

S2