¿Cuáles son los métodos para encontrar APIs y funciones enlazadas?

4

Muchos ejecutables de malware utilizan el enganche para ser invisibles. Estoy familiarizado con algunos métodos de conexión, no estoy seguro de qué métodos existen para detectarlos. ¿Hay alguna forma de saber cuándo se ha modificado una llamada a la función para realizar otras tareas a través de enlaces?

    
pregunta Heeru West 31.07.2012 - 13:18
fuente

1 respuesta

13

Hooks se implementan de muchas maneras:

  • Modificar instrucciones de salto legítimas para que apunten a los ganchos en lugar del código normal.
  • Enlace de la tabla de llamadas de usuario (IAT): modificación de las direcciones de las API de modo de usuario en un proceso.
  • Enlace de la tabla de llamadas al kernel (por ejemplo, SSDT / GDT): reemplaza un puntero de la tabla de llamadas con la dirección de tu enlace.
  • Enganches WndProc (por ejemplo, PeekMessage ): se enganchan en los mensajes de notificación de la ventana.
  • devoluciones de llamada legítimas como PsSetCreateProcessNotifyRoutine .

Supongo que está más interesado en los dos primeros tipos.

Los ganchos de salto pueden crearse en un número casi infinito de formas. Esto hace que sea casi imposible escribir una herramienta para identificar los ganchos. Sin embargo, puede utilizar trucos de comprobación de integridad, por ejemplo, comparando el código en el archivo binario (por ejemplo, exe o dll ) con el código en la memoria. También puede enlazar WriteProcessMemory y otras API similares para detectar la modificación de la memoria del proceso, aunque esto solo funciona contra ataques de modo de usuario.

Los ganchos IAT son un poco más fáciles de verificar. Tome una instantánea de la IAT de un proceso cuando se inicie (por ejemplo, desde el binario estático) y compare la IAT en memoria con las direcciones reales de las funciones que deberían estar allí. Por ejemplo, si conoce la entrada IAT 4 puntos a user32.MessageBoxA , puede usar GetProcAddress para encontrar la dirección real de esa función y comparar la dirección en el IAT con eso. Si no coinciden, sabes que se ha enganchado.

Para más información, hay un gran documento sobre el tema, y recomiendo encarecidamente leer "< a href="http://rads.stackoverflow.com/amzn/click/144962636X"> The Rootkit Arsenal "por Bill Blunden.

    
respondido por el Polynomial 31.07.2012 - 13:39
fuente

Lea otras preguntas en las etiquetas