Seguridad en Windows - PowerPoint PPT Presentation

1 / 57
About This Presentation
Title:

Seguridad en Windows

Description:

Programa desarrollado para controlar el comportamiento de una ... [DETOURS] Detours win32 functions interception. http://research.microsoft.com/sn/detours ... – PowerPoint PPT presentation

Number of Views:138
Avg rating:3.0/5.0
Slides: 58
Provided by: Paco53
Category:

less

Transcript and Presenter's Notes

Title: Seguridad en Windows


1
Seguridad en Windows
  • Rootkits

Paco Soriano Ilitia Technologies
2
Qué es un Rootkit?
  • Programa desarrollado para controlar el
    comportamiento de una maquina/sistema
  • A menudo usado para ocultar backdoors, troyanos,
    etc.
  • Excelente herramienta para hackers

3
Tipos de Rootkits
  • User Land (Ring 3)
  • Portables y polivalentes
  • Ejecución Modo usuario
  • Reside en los procesos de usuario
  • No requiere permisos especiales (administrativos)
  • Runas
  • Kernel Land (Ring 0)
  • Mas difíciles de detectar
  • Modo privilegiado
  • Global al Sistema

4
Objetivos y acciones
  • Inyección en procesos
  • Intercepción de funciones
  • Dinámico (Runtime)
  • Estático (Modificación de Binarios)
  • Mantenerse oculto
  • Utilizan la intercepción (Hooking)

5
Qué controla el rootkit?
  • Procesos controlados por el rootkit
  • Acceso a ficheros
  • Acceso a claves de registro
  • Acceso a puertos (Red)

6
Inyección
  • Introducción de código en el espacio de memoria
    de otro proceso
  • Tipos comunes
  • SystemHooks
  • CreateRemoteThread
  • Threads Context

7
Tipos de Inyección SystemHooks
  • SetWindowsHookEx
  • Dll
  • Posee la llamada al hook y su manejador
  • Payload
  • Loader
  • Carga la Dll y ejecuta el proceso de hook
  • WH_CBT
  • Captura todos los procesos con GUI

8
Tipos de Inyección CreateRemoteThread
  • Permite crear un thread en el espacio de memoria
    de otro proceso.
  • Para inyectar procesos del current user su uso es
    directo
  • Para inyectar procesos de otros usuarios
  • Adquirir privilegios de debugger con
    SeDebugPrivilege
  • Incluso con el privilegio adquirido hay procesos
    que evitan el debug mediante trucos a nivel del
    kernel.

9
Tipos de Inyeccion Threads Context
  • Redirigir el flujo de un proceso
  • El inyector elije un Thread y lo suspende
  • Se inyecta el código
  • VirtualAllocEx/WriteProcessMemory
  • Realocación de memoria
  • Mover el EIP al código inyectado
  • Rearrancar el thread

10
Ejemplo
  • Inyección

11
Intercepción
  • Redirigir funciones de un programa a funciones
    propias
  • Para el programa original todo parece inalterado
  • Dependientes del formato PE

12
PE Format
  • Bien documentado
  • Información exhaustiva sobre módulos (exe, dll)
  • RVA(Relative Virtual Addresses) y BASE ADDRESS
  • Estructura estática en disco parecida a
    estructura dinámica en memoria

13
PE Format Estructuras
  • typedef struct _IMAGE_DOS_HEADER
  • / DOS .EXE header ( RVA 0 )/
  • WORD e_magic / Magic number /
  • ...
  • LONG e_lfanew / File address of new exe header
    /
  • IMAGE_DOS_HEADER, PIMAGE_DOS_HEADER
  • / At IMAGE_DOS_HEADER-gte_lfanew /
  • typedef struct _IMAGE_NT_HEADERS
  • DWORD Signature
  • IMAGE_FILE_HEADER FileHeader
  • IMAGE_OPTIONAL_HEADER32 OptionalHeader
  • IMAGE_NT_HEADERS32, PIMAGE_NT_HEADERS32

14
PE Format Estructuras
  • / At (IMAGE_DOS_HEADER-gte_lfanew)-gtOptionalHeader
    /
  • typedef struct _IMAGE_OPTIONAL_HEADER
  • WORD Magic / Appears to be a signature WORD of
    some sort. Always appears to be set to 0x010B. /
  • ...
  • DWORD NumberOfRvaAndSizes / The number of
    entries in the DataDirectory array (below). This
    value is always set to 16 by the current tools.
    /
  • IMAGE_DATA_DIRECTORY DataDirectoryIMAGE_NUMBEROF
    _DIRECTORY_ENTRIES
  • / An array of IMAGE_DATA_DIRECTORY structures.
    The initial array elements contain the starting
    RVA and sizes of important portions of the
    executable file. Some elements at the end of the
    array are currently unused. /
  • IMAGE_OPTIONAL_HEADER32, PIMAGE_OPTIONAL_HEADER
    32
  • / At (IMAGE_DOS_HEADER-gte_lfanew)-gtOptionalHeader
    -gtDataDirectoryx /
  • typedef struct _IMAGE_DATA_DIRECTORY
  • DWORD VirtualAddress
  • DWORD Size
  • IMAGE_DATA_DIRECTORY, PIMAGE_DATA_DIRECTORY

15
PE Format Estructuras
  • define IMAGE_DIRECTORY_ENTRY_EXPORT 0 / Export
    Directory /
  • define IMAGE_DIRECTORY_ENTRY_IMPORT 1 / Import
    Directory /
  • (IMAGE_DOS_HEADER-gt
  • e_lfanew)-gt
  • OptionalHeader-gt
  • DataDirectoryIMAGE_DIRECTORY_ENTRY_IMPORT
  • (IMAGE_DOS_HEADER-gt
  • e_lfanew)-gt
  • OptionalHeader-gt
  • DataDirectoryIMAGE_DIRECTORY_ENTRY_EXPORT

16
Intercepcion Redirecting IAT
  • IAT contiene la dirección a todas las funciones
    importadas
  • Reemplazar las APIs con funciones propias
  • IAT Tabla de Saltos indirectos
  • Valido solo para direct calls ( enlace estático
    en tiempo de compilación )
  • No valido para LoadLibrary/GetProcAddress

17
Intercepcion Redirecting IAT
  • Método
  • Inyectar dll
  • Ejecutar payload
  • Capturar el PE Header del Proceso remoto
  • Capturar la dll y el API dentro de la IAT
  • Modificación del salto indirecto de la IAT

18
Intercepcion Redirecting EAT
  • EAT contiene la dirección a todas las funciones
    exportadas
  • Reemplazar las APIs con funciones propias
  • EAT Lista de punteros a funciones (RVAs)
  • Valido solo para indirect calls ( enlace dinámico
    en runtime )
  • LoadLibrary/GetProcAddress

19
Intercepcion Redirecting EAT
  • Metodo
  • Inyectar dll
  • Ejecutar payload
  • Capturar el PE Header del Proceso remoto
  • Capturar la dll y el API dentro de la EAT
  • Modificación del puntero a la función (RVA)
  • Para que GetprocAddress de cómo resultado nuestra
    función

20
Intercepcion Jump Incondicional
  • Modifica el assembler del código original del API
    en runtime
  • Necesita de un Disasm en runtime
  • Funciona con saltos directos o indirectos
  • (Enlace estático o en runtime)
  • Microsoft Detours Library DETOURS

21
Intercepcion Jump Incondicional
  • Método
  • Localizar el entry point del API
  • Guardar las primeras instrucciones del API
    Original un salto a la siguiente instrucción
    del API original
  • Disassembler
  • Insertar el salto a nuestro código

22
Intercepcion Jump Incondicional
  • Método ( getting deeper)
  • Encontrar donde insertar el salto
  • WHILE CollectedSpace lt JUMP SIZE
  • Calcular el tamaño de la instrucción en pAddr
  • Actualizar CollectedSpace
  • Siguiente Instrucción pAddr Tamaño de la
    instrucción actual
  • Create the call gate
  • Alocar memoria para el callgate Tamaño del área
    recolectado JUMP SIZE
  • Copiar las instrucciones recolectadas al callgate
  • Añadir al callgate un JUMP a pAddr
    CollectedSpace
  • Insert the hook in the API code
  • Limpiar el área recolectada con NOPs
  • Insertar JUMP a pAddrToJump (hook)

23
Intercepción Jump Incondicional
24
Intercepcion Kernel Hooks
  • Kernel Memory
  • 0x80000000
  • 0xC0000000 ( /3GB )
  • Los procesos de usuario no pueden acceder al
    Kernel Memory
  • Excepto Debugging Processes
  • Procesos con CallGates
  • Tipo especial de descriptor ( LDT, GDT )
  • FAR calls
  • User Mode (Ring 3)-gt Kernel Mode (Ring 0)
  • Motivos de Hooks en Kernel
  • Difíciles de detectar
  • Globales

25
Intercepción Espacio en Memoria para Hooks
  • User Land Rootkits necesitan alocar memoria en el
    proceso remoto
  • Detectable
  • Mapeo de memoria desde el Kernel a todos los
    procesos (KUSER_SHARED_DATA)
  • 2 VA -gt 1 PA
  • Kernel Address 0xFFDF0000 User Address
    0x7FFE0000 ( Misma Pagina física)
  • 0xFFDF0000 Writable
  • 0x7FFE0000 no Writable
  • Apuntar IAT a 0x7FFE0000 ( Mediante Hook )
  • Necesario un Rootkit Hibrido para escribir en
    0xFFDF0000
  • Tamaño 0xFFDF0000 4Kb

26
Ejemplo
  • Intercepción

27
User Land vs. Kernel Land
  • Kernel Rootkits
  • Patch SSDT, IDT, IRP
  • Afecta a todos los procesos
  • User Rootkits
  • Patch IAT, EAT, etc.
  • Afecta a los procesos inyectados

28
User Land vs. Kernel Land
  • Kernel Rootkits
  • Requiere técnicas avanzadas de Inyección
  • Intercepción del Api a muy bajo nivel
  • User Rootkits
  • Requiere técnicas de inyección ( bien
    documentadas )
  • Intercepción del API a alto nivel

29
User Land vs. Kernel Land
  • Ejemplo Queremos ocultar ciertos directorios
    para que no sean visibles a los ojos del
    explorer. Opciones
  • Kernel Land rootkit
  • User Land rootkit

30
User Land vs. Kernel Land
31
User Land vs. Kernel Land
  • User Land Rootkit
  • Interceptar FindFirstFileA/W
  • Interceptar FindNextFileA/W
  • Kernel Land Rootkit
  • Interceptar ntdll.ZwQueryDirectoryFile

32
User Land vs. Kernel Land
  • User Land Rootkit
  • Fácil de implementar
  • Portable
  • Compatible
  • Menos preciso
  • Menos costoso
  • Kernel Land Rootkit
  • Difícil de implementar (es muy posible que este
    indocumentada)
  • Cuanto mas cerca del kernel, mas susceptible a
    cambios
  • Mas preciso
  • Mas costoso

33
Detección de Rootkits Presencia
  • Guarding the Doors
  • Scanning
  • Buscar Hooks
  • SSDT Hooks
  • Inline Hooks
  • IRP Handler Hooks
  • IDT Hooks
  • IAT Hooks
  • Tracear la Ejecución

34
Detección de Rootkits Guarding the Doors
  • Todo el software esta en memoria en algún lugar
    en algún momento
  • Detecta la carga del rootkit
  • Capturar todos los puntos de acceso para carga (
    drivers, módulos, etc.)
  • Analizar el rootkit
  • Signatures
  • Heurística
  • Difícil de implementar
  • Solo funciona con rootkits conocidos

35
Detección de Rootkits Scanning
  • Escanear la memoria periódicamente
  • Modulos
  • Signatures
  • Evitamos al detector el hook de funciones del
    kernel y de procesos de usuario
  • Solo funciona con rootkits conocidos
  • Simple de implementar
  • No evita la carga del rootkit
  • Se puede evitar la detección con un Kernel Land
    Rootkit

36
Detección de Rootkits Buscando Hooks
  • Escanear la memoria de los procesos y del kernel
    buscando hooks
  • Import Address Table (IAT)
  • System Service Dispatch Table (SSDT), conocido
    como KeServiceDescriptorTable
  • Interrupt Descriptor Table (IDT) uno por CPU
  • Drivers' I/O Request Packet (IRP) handler
  • Inline function hooks
  • Detección basada en Rangos de Direcciones

37
Detección de Rootkits Comportamiento
  • Detección
  • Ficheros ocultos
  • Registry Keys
  • Procesos Ocultos
  • Comparación del resultado APIs Bajo-Alto nivel

38
Sony Rootkit
  • Compuesto por
  • Aries.sys
  • Crater.sys
  • Cor.sys
  • Otros ficheros

39
Sony Rootkit Comportamiento
40
Sony Rootkit Patch SSDT
41
Sony Rootkit Desensamblado
42
Sony Rootkit Directorio Oculto
43
Sony Rootkit Desensamblado
44
Sony Rootkit Versión y Publisher
Tecnologia XCP http//www.first4internet.com/
http//www.xcp-aurora.com/
45
Sony Rootkit Inyector
46
Sony Rootkit Ejecución del Inyector
  • Cuando pulsas play, se ejecuta el DRMServer
  • Sigue ejecutandose aunque se cierre el player
  • Se instala como servicio Plug and Play Device
    Manager ?

47
Sony Rootkit Ejecución del Inyector
DRMServer captura informacion basica de los
ficheros cada 2 segundos, 8 veces cada scan
48
Sony Rootkit Inyector-DRMServer
DRMServer y el inyector (player) se comunican
mediante Pipes
49
Sony Rootkit Comportamiento
  • Patch SSDT
  • Oculta sys
  • Ficheros
  • Claves de Registro
  • Directorios
  • Procesos

50
Sony Rootkit
  • Fallo por parte del programador
  • Descarga del driver
  • No es seguro descargar un driver que modifique la
    SSDT
  • Implica reiniciar
  • Patch SSDT no funciona en todas las plataformas
    Windows x64

51
Sony Rootkit Desinstalación
  • Hace 1 mes no existía método
  • Parar el servicio sysDRMServer
  • Borrar los directorios y ficheros (sys)
  • Borrar claves de registro (sys)
  • HKLM\System\CurrentControlSet\Services
  • HKLM\System\CurrentControlSet\Control\SafeBoot

52
Sony Rootkit Desinstalación
  • Efectos colaterales de la Desinstalación
  • Perdemos todas las unidades de cd/dvd ?
  • Efecto producido por Crater.sys
  • Devide Driver Filter
  • Si borras un DDF se pierde el dispositivo/s
    asociado a al mismo

53
Sony Rootkit Desinstalación
54
Sony Rootkit Desinstalación
55
Sony Rootkit Conclusión
  • Los de Sony te instalan un rootkit
  • "Most people, I think, do not even know what a
    Rootkit is, so why should they care about it?
  • Thomas Hessa, PRESIDENT of Sony BMG's Global
    Digital Business
  • No proveen nada para desinstalarlo (hasta el 4
    de noviembre)
  • Desinstalador
  • net stop network control manager que es el
    servicio asociado al driver Aries.sys -S
  • Puede pasar BSoD

56
Bibliografia
  • HOOKS A HowTo for setting system wide hooks
  • http//www.codeguru.com/Cpp/W-P/system/misc/artic
    le.php/c5685/
  • 3WAYS Three ways to inject your code into
    another process
  • http//www.codeguru.com/Cpp/W-P/system/processesm
    odules/article.php/c5767/
  • LSD Win32 assembly components
  • http//www.lsd-pl.net/documents/winasm-1.0.1.pdf
  • REMOTETH
  • http//win32.mvps.org/processes/remthread.html
  • DETOURS Detours win32 functions interception
  • http//research.microsoft.com/sn/detours/
  • HXDEF Hacker Defender (Holy_Father 2002)
  • http//rootkit.host.sk/knowhow/hookingen.txt
  • ZOMBIE2 Entry point rewriting
  • http//www.syshell.org/?rRootkit/Api_Hijack/Code
    /EntryPointRewritting/
  • EXPLORIAT
  • http//www.syshell.org/?rRootkit/Snippets/Explor
    erIAT2k.log
  • EXPLORIAT
  • http//www.syshell.org/?rRootkit/Snippets/Explor
    erIAT2k.log
  • Windows Internals 4th Edition, Mark
    E. Russinovich, David A. Solomon

57
FIN
Write a Comment
User Comments (0)
About PowerShow.com