Pregunta:
Malware Hooking INT 1 e INT 3
mrduclaw
2013-03-31 07:48:01 UTC
view on stackexchange narkive permalink

Entiendo que en x86, INT 1 se usa para pasos únicos y INT 3 se usa para establecer puntos de interrupción y alguna otra interrupción (generalmente 0x80 para Linux y 0x2E para Windows) solía usarse para llamadas al sistema.

Si una pieza de malware engancha la Tabla de descriptores de interrupción (IDT) y sustituye sus propios controladores INT 1 y INT 3 que realizan llamadas al sistema funcionalidad, ¿cómo puedo usar un depurador para rastrear su ejecución? ¿O estoy atascado con el uso de herramientas de análisis estático?

Una alternativa sería parchear la muestra para que los ganchos se eliminen o se muevan a interrupciones que no interfieran con la depuración. Por curiosidad, ¿sabe si hay muestras disponibles públicamente que hacen esto en Windows?
Eliminar los ganchos es bastante fácil si el código no usa los ganchos para una funcionalidad similar a una llamada al sistema. Pasarlos a otra interrupción parece que debería funcionar. El problema ahora es que el código está bastante empaquetado, por lo que la modificación es molesta. : / Y no, no hay muestras disponibles públicamente que yo sepa, lo siento.
Solo para estar seguro, esto también interfiere con los depuradores de nivel de kernel, ¿verdad?
Esta es una especie de enfoque de Hail Mary, pero si estuviera haciendo esto en Linux, podría recompilar su kernel con un IDT personalizado y reconstruir su depurador con la nueva asignación. Esto probablemente solo valdría la pena si se encuentra con este tipo de muestras mucho.
@amccormack:, pero si el malware se basa en que la funcionalidad del kernel está presente en esos vectores de interrupción, ¿no dejará de funcionar? Espero que tengas que tener mucho cuidado con la modificación del kernel ...
One responder:
deroko
2013-03-31 18:33:58 UTC
view on stackexchange narkive permalink

Sugeriría esto como una solución http://accessroot.com/arteam/site/download.php?view.185 ya que tuve un problema similar en uno de los crackmes. Lo que hice fue escribir mis propios ganchos para SoftICE para evitar los ganchos ring0 de int 3 e int 1. Podría ser útil para su problema. La sección interesante es "SoftICE viene al rescate".

Por favor, cite las partes relevantes del enlace en lugar de simplemente dar el enlace aquí.


Esta pregunta y respuesta fue traducida automáticamente del idioma inglés.El contenido original está disponible en stackexchange, a quien agradecemos la licencia cc by-sa 3.0 bajo la que se distribuye.
Loading...