Este documento describe la técnica de hooking y el proyecto WHF. El hooking permite interceptar eventos, mensajes y llamadas a funciones para modificar el comportamiento de aplicaciones y sistemas operativos. WHF provee ejemplos funcionales de hooks a nivel de sistema y proceso. Se detallan diferentes métodos de hooking como hooking de eventos, mensajes y funciones tanto en espacio de usuario como en espacio de kernel.
7. 7
Rooted Satellite Valencia
Whois
Ingeniero Informático (UPM)
Master en Auditoría y
Seguridad Informática (UPM)
CISA, CISM, OCA
CyberSecurity and Research
Team
8. 8
Rooted Satellite Valencia
Indice
Hook
WHF
Hooking de eventos
Hooking de mensajes
Hooking de funciones
– User-Space
– Kernel-Space
9. 9
Rooted Satellite Valencia
Hook
Conjunto de técnicas que permiten modificar el
comportamiento de aplicaciones y sistemas
operativos mediante la interceptación de:
Eventos
Mensajes
Llamadas a función
10. 10
Rooted Satellite Valencia
Indice
Hook
WHF
Hooking de eventos
Hooking de mensajes
Hooking de funciones
– User-Space
– Kernel-Space
11. 11
Rooted Satellite Valencia
WHF
Proyecto con fin divulgativo
Proveer de ejemplos funcionales de hooks
Facilitar la interceptación de eventos a nivel
global (sistema) o local (proceso)
http://sourceforge.net/projects/whf/
12. 12
Rooted Satellite Valencia
Indice
Hook
WHF
Hooking de eventos
Hooking de mensajes
Hooking de funciones
– User-Space
– Kernel-Space
15. Monitor de inicio y fin de procesos y threads.
Denegar o suspender procesos y threads
Inyectar DLLs antes de iniciar un proceso
Monitorizar el mapeo en memoria de una
imagen (DLL o EXE)
Monitorizar cambios sobre claves del registro
Monitorizar o Denegar dispositivos PnP
….
15
Hooking de eventos
Rooted Satellite Valencia
16. 16
Rooted Satellite Valencia
Indice
Hook
WHF
Hooking de eventos
Hooking de mensajes
Hooking de funciones
– User-Space
– Kernel-Space
17. 17
Hooking de mensajes
Punto en el sistema de gestión de mensajes
donde monitorizar determinados mensajes
antes de llegar a la ventana destino
Rooted Satellite Valencia
18. 18
Hooking de mensajes
Mensajes hacia las ventanas
SetWindowsHook
WH_KEYBOARD
WH_MOUSE
WH_JOURNALRECORD
WH_JOURNALPLAYBACK
Rooted Satellite Valencia
29. 29
Que podemos hacer
Monitorizar llamadas a función y sus parámetros
Impedir que las llamadas progresen
Modificar los parámetros de entrada
Modificar los resultados
Rooted Satellite Valencia
30. 30
Conceptos previos
Proceso “Contenedor de Memoria” (Peter Van
Eeckhoutte @corelanc0d3r)
Modulo == EXE o DLL
Un módulo importa (utiliza) elementos de otros
módulos
Un módulo exporta (expone) elementos a otros
módulos
Rooted Satellite Valencia
31. 31
Import Address Table
Loader completa los valores de esta tabla
Rooted Satellite Valencia
IAT
DEMO
32. 32
Rooted Satellite Valencia
EAT
Export Address Table
Funciones exportadas por un modulo
Offset relativo dirección de carga
DEMO
33. 33
DELAY LOAD
MIX entre IAT y EAT
No se carga la DLL hasta que no se invoca a la
función
Permite la descarga una vez terminado su uso
DEMO
Rooted Satellite Valencia
34. 34
Inline Hooking
Sobreescribir el código de una función con un
jmp call hacia otra dirección
Rooted Satellite Valencia