Title: DIA X, Mesa/Taller: phook
1DIA X, Mesa/Taller phook BuggyBoss
- David Reguera García
- Técnico de operaciones en INTECO-CERT
- FECHA
1º ENCUENTRO NACIONAL DE LA INDUSTRIA DE SEGURIDAD
2Contenidos
- Qué es phook?
- Entendiendo phook
- Diseño
- Implementación
- Consecuencia DLL MINIFILTER
- Componentes demo
- BuggyBoss
- Comparaciones
- Sysinternals
- Análisis manual
- Conclusión dudas
3Qué es phook?
phook The PEB Hooker
- Herramienta GPL creada por
- Juan Carlos Montes Senra
- David Reguera García
- Orientación ingeniería inversa.
- Hooks en win32 ingeniería inversa.
- phook intenta solucionar los problemas.
- phook motor que hace PEBHOOKING
4Contenidos
- Qué es phook?
- Entendiendo phook
- Diseño
- Implementación
- Consecuencia DLL MINIFILTER
- Componentes demo
- BuggyBoss
- Comparaciones
- Sysinternals
- Análisis manual
- Conclusión dudas
5Entendiendo phook
- Conceptos previos
- Procesos, módulos, DLL_REAL, DLL_FAKE
- Otros métodos de hook
- IAT HOOKING
- PUSH RET
- SetWindowHook
-
- El método de phook PEB HOOKING
- PEB datos del entorno de un proceso
- LoaderData lista con información sobre los
módulos
6Contenidos
- Qué es phook?
- Entendiendo phook
- Diseño
- Implementación
- Consecuencia DLL MINIFILTER
- Componentes demo
- BuggyBoss
- Comparaciones
- Sysinternals
- Análisis manual
- Conclusión dudas
7Diseño
- Implementación
- Cargar DLL_FAKE
- Intercambiar campos entre nodos de LoaderData
- EntryPoint
- BaseAddress
- SizeOfImage (quizás)
- Cambiar IATs de todos los módulos menos
- DLL_REAL
- DLL_FAKE (quizás)
8(No Transcript)
9(No Transcript)
10Diseño
- Resultados de la búsqueda en el proceso
- BaseAddress
- Sin PEB HOOKING 7C801000 (DLL_REAL)
- Con PEB HOOKING 005C5000 (DLL_FAKE)
- Todos los módulos cargados dinámicamente que
usen DLL_REAL usarán DLL_FAKE (automáticamente). - Los módulos ya cargados tendrán la IAT de
DLL_REAL, hay que cambiarla.
11Diseño
- Implementación
- Cargar DLL_FAKE
- Intercambiar campos entre nodos de LoaderData
- EntryPoint
- BaseAddress
- SizeOfImage (quizás)
- Cambiar IATs de todos los módulos menos
- DLL_REAL
- DLL_FAKE (quizás)
12Diseño
13Diseño
14Diseño
15Contenidos
- Qué es phook?
- Entendiendo phook
- Diseño
- Implementación
- Consecuencia DLL MINIFILTER
- Componentes demo
- BuggyBoss
- Comparaciones
- Sysinternals
- Análisis manual
- Conclusión dudas
16Diseño
- Consecuencia DLL MINIFILTER
17Contenidos
- Qué es phook?
- Entendiendo phook
- Diseño
- Implementación
- Consecuencia DLL MINIFILTER
- Componentes demo
- BuggyBoss
- Comparaciones
- Sysinternals
- Análisis manual
- Conclusión dudas
18Diseño
- Componentes
- InjectorDLL Herramienta que crea un proceso de
forma suspendida y le inyecta una DLL
(console.dll) - Console Control DLL que se inyecta en el proceso
en el que deseamos hacer PEB HOOKING. Permite
hacer de forma interactiva por sockets PEB
HOOKING y otros. - CreateExp Herramienta que genera de una
DLL_REAL, el código necesario para realizar una
DLL_FAKE. - ph_ker32.dll DLL_FAKE de kernel32.dll (POC),
monotoriza el acceso a las APIs CreateFileA/W.
19Diseño
InjectorDLL
define SUSP_FLGS CREATE_SUSPENDED
CREATE_NEW_CONSOLE CreateProcess ( prg_nm,
NULL, NULL, NULL, SUSP_FLGS, NULL, pstart_inf,
ppro_inf ) If ( WaitForInputIdle(
ppro_inf-gthProcess, 0 ) WAIT_FAILED ) //
Console Process Else // GUI Process
20Diseño
- Componentes
- InjectorDLL Herramienta que crea un proceso de
forma suspendida y le inyecta una DLL
(console.dll) - Console Control DLL que se inyecta en el proceso
en el que deseamos hacer PEB HOOKING. Permite
hacer de forma interactiva por sockets PEB
HOOKING y otros. - CreateExp Herramienta que genera de una
DLL_REAL, el código necesario para realizar una
DLL_FAKE. - ph_ker32.dll DLL_FAKE de kernel32.dll (POC),
monotoriza el acceso a las APIs CreateFileA/W.
21Diseño
- Console Control (console.dll)
- Es inyectada en un proceso por InjectorDLL.
- Permite hacer (entre otras cosas) PEB HOOKING.
- Funciona por sockets.
- Preparada para trabajar con un cliente tipo
netcat. - Puerto de escucha C\ph_listen_ports.log
- Comandos disponibles
- help, exit, suspend, resume, showmodules, load,
unload pebhook
22Diseño
Escenario phook ( pre - injection )
Crea un proceso en estado suspendido y le inyecta
una consola. También puede inyectar la consola
en un proceso y lo deja suspendido.
Módulos cargados NTDLL.DLL console.dll
Acción - Reacción
Usuario - Aplicación
23Diseño
Escenario phook ( post- injection )
EXPORTS DLL Ejemplo WriteFileA (kernel32.dll)
Propósito desconocido
Cliente - Servidor
24Diseño
- Demo ph_ker32.dll
- Dudas hasta aquí?
25Contenidos
- Qué es phook?
- Entendiendo phook
- Diseño
- Implementación
- Consecuencia DLL MINIFILTER
- Componentes demo
- BuggyBoss
- Comparaciones
- Sysinternals
- Análisis manual
- Conclusión dudas
26BuggyBoss
- Automatización de análisis de malware
(BuggyBoss) - Hook
- kernel32.dll acceso a ficheros.
- ws2_32.dll sockets.
- wininet.dll conexiones directamente por
protocolo - advapi32.dll registro
- SQL Daemon Servidor que envía a un SQL Server
información que reciba por sockets. - Parsuggy Parser del log en bruto que queda en
la base de datos. Crea una tabla con un resumen
relevante.
27BuggyBoss
Escenario BuggyBoss
CreateFileA (kernel32.dll) connect
(ws2_32.dll) FtpOpenFile (wininet.dll) RegOpenKeyW
(advapi32.dll)
Cliente - Servidor
28BuggyBoss
Escenario Parsuggy
Usuario - Aplicación
Cliente - Servidor
29BuggyBoss
- Demo bb
- Demo WebResults
- Dudas hasta aquí?
30Contenidos
- Qué es phook?
- Entendiendo phook
- Diseño
- Implementación
- Consecuencia DLL MINIFILTER
- Componentes demo
- BuggyBoss
- Comparaciones
- Sysinternals
- Análisis manual
- Conclusión dudas
31Sysinternals
- Sysinternals VS BuggyBoss
- Filemon, Regmon TCPView Algunas ventajas y
desventajas - No son cliente servidor un malware
destructivo podría no llegar a monitorizarse. - No tienen un sistema de centralización de la
monitorización sockets, registro ficheros. - No guardan el volcado de datos por sockets del
malware. - Cargan un controlador (ring0), desde ring3 no
puedes monitorizar cosas que si en ring0. - Preparadas para monitorizar en tiempo real
Parsuggy solo saca el informe relevante después
de ejecución. - Antigüedad menos probabilidades de tener bugs.
32Sysinternals
- DEMO SysinternalsVS Malware destructivo
33Contenidos
- Qué es phook?
- Entendiendo phook
- Diseño
- Implementación
- Consecuencia DLL MINIFILTER
- Componentes demo
- BuggyBoss
- Comparaciones
- Sysinternals
- Análisis manual
- Conclusión dudas
34Análisis manual
- Análisis manual VS BuggyBoss algunas ventajas y
desventajas - Se tarda demasiado tiempo Muchas veces hay que
analizar repetidas veces versiones de malware ya
analizado que han cambiado demasiado poco. - Es la mejor forma de saber que hace el malware.
35Contenidos
- Qué es phook?
- Entendiendo phook
- Diseño
- Implementación
- Consecuencia DLL MINIFILTER
- Componentes demo
- BuggyBoss
- Comparaciones
- Sysinternals
- Análisis manual
- Conclusión dudas
36Conclusión y dudas
- Si es necesario hacer un hook a una API/EXPORT,
se puede usar cualquier método actual. - Si se necesita monitorizar/virtualizar el acceso
a varias APIs/EXPORTs, con phook se hace mucho
más sencilla la implementación, puesto que solo
es necesario programar la nueva funcionalidad. - Método orientado a ingeniería inversa de
sistemas de protección de software y malware, ya
que dificulta métodos alternativos de búsqueda de
exportaciones y eliminación de hooks, puesto que
está poco documentado.
37Conclusión y dudas
- Cualquier módulo cargado dinámicamente tendrá
las entradas de DLL_FAKE en lugar de las de
DLL_REAL. El resto de los métodos tienen que
aplicar el hook cada vez que se cargue un módulo. - Una búsqueda en el PEB de DLL_REAL llegará a
DLL_FAKE. - PEB HOOKING es estable para el SO (hook en
ring3). - Algunos packers no detectan PEB HOOKING al ser
un método poco documentado. - No es necesario cambiar el comportamiento de las
APIs que trabajan con módulos. - Posibilidad de crear DLL MINIFILTER.
- Se puede hacer PEB HOOKING de una exportación
Forwarder sin hacer PEB HOOKING a la FORWARDER
DLL.
38Conclusión y dudas
- TODO
- Realizar PEB HOOKING antes de ejecución de
- TLS Table DLLMain
- Crear ficheros de debug y configuración para la
consola. - Reglas para reparación de IATs.
- Lista personalizada de puertos de escucha.
-
- Mejorar InjectorDLL
- Detección automática de Console/GUI Process.
39Conclusión y dudas
- Testing se han realizado pruebas en
- Windows
- XP SP2 v5.1.2600
- Server 2003 R2 v5.2.3790
- Vista v6.0.6000
- Programas
- Microsoft Word v10.0.2627.0
- Regedit v5.1.2600.2180
- Notepad v5.1.2600.2180
- Calc v5.1.2600.0
- CMD v5.1.2600.2180
- PEBTry vBETA 5
40Conclusión y dudas
- Contacto
- david.reguera_at_inteco.es
- juancarlos.montes_at_inteco.es
41Conclusión y dudas
Dudas?