DIA X, Mesa/Taller: phook - PowerPoint PPT Presentation

1 / 41
About This Presentation
Title:

DIA X, Mesa/Taller: phook

Description:

Permite hacer de forma interactiva por sockets PEB HOOKING y otros. ... Algunos packers no detectan PEB HOOKING al ser un m todo poco documentado. ... – PowerPoint PPT presentation

Number of Views:55
Avg rating:3.0/5.0
Slides: 42
Provided by: int52
Category:
Tags: dia | hooking | mesa | phook | taller

less

Transcript and Presenter's Notes

Title: DIA X, Mesa/Taller: phook


1
DIA 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
2
Contenidos
  • Qué es phook?
  • Entendiendo phook
  • Diseño
  • Implementación
  • Consecuencia DLL MINIFILTER
  • Componentes demo
  • BuggyBoss
  • Comparaciones
  • Sysinternals
  • Análisis manual
  • Conclusión dudas

3
Qué 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

4
Contenidos
  • Qué es phook?
  • Entendiendo phook
  • Diseño
  • Implementación
  • Consecuencia DLL MINIFILTER
  • Componentes demo
  • BuggyBoss
  • Comparaciones
  • Sysinternals
  • Análisis manual
  • Conclusión dudas

5
Entendiendo 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

6
Contenidos
  • Qué es phook?
  • Entendiendo phook
  • Diseño
  • Implementación
  • Consecuencia DLL MINIFILTER
  • Componentes demo
  • BuggyBoss
  • Comparaciones
  • Sysinternals
  • Análisis manual
  • Conclusión dudas

7
Diseñ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)
10
Diseñ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.

11
Diseñ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)

12
Diseño
13
Diseño
14
Diseño
15
Contenidos
  • Qué es phook?
  • Entendiendo phook
  • Diseño
  • Implementación
  • Consecuencia DLL MINIFILTER
  • Componentes demo
  • BuggyBoss
  • Comparaciones
  • Sysinternals
  • Análisis manual
  • Conclusión dudas

16
Diseño
  • Consecuencia DLL MINIFILTER

17
Contenidos
  • Qué es phook?
  • Entendiendo phook
  • Diseño
  • Implementación
  • Consecuencia DLL MINIFILTER
  • Componentes demo
  • BuggyBoss
  • Comparaciones
  • Sysinternals
  • Análisis manual
  • Conclusión dudas

18
Diseñ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.

19
Diseñ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
20
Diseñ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.

21
Diseñ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

22
Diseñ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
23
Diseño
Escenario phook ( post- injection )
EXPORTS DLL Ejemplo WriteFileA (kernel32.dll)
Propósito desconocido
Cliente - Servidor
24
Diseño
  • Demo ph_ker32.dll
  • Dudas hasta aquí?

25
Contenidos
  • Qué es phook?
  • Entendiendo phook
  • Diseño
  • Implementación
  • Consecuencia DLL MINIFILTER
  • Componentes demo
  • BuggyBoss
  • Comparaciones
  • Sysinternals
  • Análisis manual
  • Conclusión dudas

26
BuggyBoss
  • 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.

27
BuggyBoss
Escenario BuggyBoss
CreateFileA (kernel32.dll) connect
(ws2_32.dll) FtpOpenFile (wininet.dll) RegOpenKeyW
(advapi32.dll)
Cliente - Servidor
28
BuggyBoss
Escenario Parsuggy
Usuario - Aplicación
Cliente - Servidor
29
BuggyBoss
  • Demo bb
  • Demo WebResults
  • Dudas hasta aquí?

30
Contenidos
  • Qué es phook?
  • Entendiendo phook
  • Diseño
  • Implementación
  • Consecuencia DLL MINIFILTER
  • Componentes demo
  • BuggyBoss
  • Comparaciones
  • Sysinternals
  • Análisis manual
  • Conclusión dudas

31
Sysinternals
  • 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.

32
Sysinternals
  • DEMO SysinternalsVS Malware destructivo

33
Contenidos
  • Qué es phook?
  • Entendiendo phook
  • Diseño
  • Implementación
  • Consecuencia DLL MINIFILTER
  • Componentes demo
  • BuggyBoss
  • Comparaciones
  • Sysinternals
  • Análisis manual
  • Conclusión dudas

34
Aná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.

35
Contenidos
  • Qué es phook?
  • Entendiendo phook
  • Diseño
  • Implementación
  • Consecuencia DLL MINIFILTER
  • Componentes demo
  • BuggyBoss
  • Comparaciones
  • Sysinternals
  • Análisis manual
  • Conclusión dudas

36
Conclusió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.

37
Conclusió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.

38
Conclusió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.

39
Conclusió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

40
Conclusión y dudas
  • Contacto
  • david.reguera_at_inteco.es
  • juancarlos.montes_at_inteco.es

41
Conclusión y dudas
Dudas?
Write a Comment
User Comments (0)
About PowerShow.com