nicolás a. economou andrés lopez luksenberg eko-party 2011
TRANSCRIPT
![Page 1: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/1.jpg)
Nicolás A. EconomouAndrés Lopez Luksenberg
EKO-PARTY 2011
![Page 2: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/2.jpg)
“There have been as many new MBR threats found in the first seven months of 2011 as there were in previous three years ...”.
Symantec Intelligence Report: August 2011
INTRO
![Page 3: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/3.jpg)
Mecanismo de Booteo
POWERON
CPU(BIST)
EIP =0xF000:0xFFF0
BIOS(POST)
MBRLOADED
OSLOADER
EIP =0x07C0:0x0000
INT 13h0x07C0:0x0000
![Page 4: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/4.jpg)
Luego, se ejecuta el codigo que levanta el proximo stage del LOADER del OS
Ej. Windows 7– 1. MBR– 2. Bootmgr ( file )– 3. Winload.exe ( embebido en el bootmgr )– 4. Winload.exe ( file )– 5. Resto de los files ( kernel, drivers, etc )
Mecanismo de Booteo
![Page 5: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/5.jpg)
Estando en el MBR ( Disco Rigido )
Booteando desde un dispositivo removible ( CDs, PENDRIVEs, ZIPs, FLOPPY )
PXE ( Network )
BIOS modificado ( ejecutando antes de 7C00h ).
WARM BOOT ( el segundo principio )
Ejecutando desde el principio
![Page 6: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/6.jpg)
Usando la “INT 13H” del BIOS– Pattern Matching:
»Recorrer el disco y patchear
»Hookear mientras el OS se carga y patchear
– Entender el file system y agregar/patchear un file ( e.g Computrace v.1 )
Tecnicas comunes ( File Patching)
![Page 7: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/7.jpg)
E.g Hookeando la “INT 13H” (REAL MODE)
Ejecucion / Tiempo
time
CPUinst
int 13hcall
![Page 8: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/8.jpg)
Virtualizar el OS desde el principio– VMBR ( Virtual Machine Based Rootkit )
»E.g “SubVirt” (Univ. Michigan + Microsoft Research)
Deep Boot ;-)
Tecnicas menos comunes
![Page 9: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/9.jpg)
Es una tecnica/”tool”
Independiente del OS ( NO necesita pattern matching )
Ejecucion Continua: NO pierde NUNCA el control de la ejecucion ( durante el booteo )
Usa solo features del Intel 80386 !
Implementacion en C y ASM inlineado (16 y 32 bits)
Que es Deep Boot ?
![Page 10: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/10.jpg)
Se apoya sobre el mecanismo del TRAP FLAG ( SINGLE STEP ) para sobrevivir y controlar la ejecucion.
“Emula” algunas instrucciones CRITICAS
Sobrevive a los cambios de contexto del OS
NO AFECTA el funcionamiento del OS “victima”
Que es Deep Boot ?
![Page 11: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/11.jpg)
Taking Over from the init
DEEP BOOTStage 0
DEEP BOOTSTAGE 1/2/T
INT 13hBIOS POST
INT 13h
ORIGINALBOOT SECTOR
OS LOADER OS KERNELINT 13h INT 13h
INT 13h + TRAP FLAG
(0) (1) (2)
(3) (4) (5) (6)
![Page 12: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/12.jpg)
Deep Boot Point of View
DEEP BOOT
OSDEEP BOOT
OS
REAL MODE PROTECTED MODE
![Page 13: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/13.jpg)
Genera una excepcion por cada instrucción que se está por ejecutar
La excepcion es procesada por un “handler” ( callback )
El handler se encuentra en la misma memoria fisica que la instrucción a ejecutarse (EL TRUCO !)
Usado por todos los debuggers
Implementado en x86-x64 en el registro EFLAGS ( Trap Flag )
SINGLE STEP
![Page 14: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/14.jpg)
Intel TRAP FLAG
![Page 15: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/15.jpg)
Cuando esta prendido:
– Invoca a la interrupcion numero 1
– En REAL MODE direcciona mediante la IVT
– En PROTECTED MODE direcciona mediante la IDT
Intel TRAP FLAG
![Page 16: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/16.jpg)
Handling SINGLE STEPs
EIP
CS
EFLAGS
CURRENT DATACURRENT DATA
esp
esp
STACK
100 100
96
92
88
ADDR
ADDR
BEFORE AFTER
![Page 17: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/17.jpg)
CPU Tables
–GDT
–IVT
–IDT
A little of theory ...
![Page 18: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/18.jpg)
GDT: “General Descriptor Table” Usada por el micro en modo protegido Sirve para “separar/proteger” areas de memoria Cada entrada de llama DESCRIPTOR El primer descriptor NO se usa ( NULL ) Longitud puede variar entre 3 a 8192 entradas. Se carga usando la instrucción “lgdt”
GDT
![Page 19: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/19.jpg)
Define un segmento ( area ) de memoria
Se los referencia con un offset en la GDT ( SELECTOR – E.g CS, SS, DS, ES, FS,GS)
Es una estructura de 8 bytes»Base Address: DWORD ( 32 bits )
»Limit: WORD+NIBBLE ( 20 bits )
»Privileges: Code, Data, Gates
GDT DESCRIPTOR
![Page 20: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/20.jpg)
IVT: “Interrupt Vector Table” Usada por el micro en modo real Sirve para asociar interrupcion-handler Interrupciones tambien son generadas por
IRQs Cada entrada mide 4 bytes ( SEGM:OFFSET ) Longitud de 256 entradas.
IVT
![Page 21: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/21.jpg)
IDT: “Interrupt Descriptor Table” Usada por el micro en modo protegido Sirve para asociar interrupcion-handler Interrupciones tambien son generadas por IRQs Cada entrada de llama DESCRIPTOR Longitud puede variar entre 0 a 256 entradas. Se carga usando la instrucción “lidt”
IDT
![Page 22: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/22.jpg)
Apunta a un handler ( “callback” ).
Los usa el micro cuando se produce una interrupcion
– E.g: ZERO DIVISION excepcion el CPU lee el descriptor numero 0 de la IDT int 0 handler
Es una estructura de 8 bytes
»Base Address: DWORD ( 32 bits )
»Selector: WORD ( 16 bits )
»Privileges: Ring desde donde puede ser llamado
IDT DESCRIPTOR
![Page 23: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/23.jpg)
A hard work ...
Deep Boot Development
![Page 24: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/24.jpg)
Sobrevivir:– CONTEXT SWITCHS del OS:
»1. REAL MODE PROTECTED MODE»2. PROTECTED MODE PROTECTED MODE»3. PROTECTED MODE REAL MODE
– STACK SWITCHS del OS – Mantenerse en un area de memoria confiable– Mantener la integridad del OS ( MEM y REGS )– Mantener el TRAP FLAG PRENDIDO ...
Principales Problemas
![Page 25: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/25.jpg)
Pasos normales:
– 1. El OS carga una GDT ( “lgdt” )
– 2. El OS carga una IDT ( “lidt” )
– 3. El OS setea el PDE ( registro CR3 )
– 4. El OS prende el bit 0-31 del registro CR0
– 5. El OS finalmente ejecuta un JUMP FAR
REAL MODE PROT. MODE
![Page 26: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/26.jpg)
Con Deep Boot corriendo:– El OS carga una GDT ( “lgdt” )– El OS INTENTA cargar una IDT ( “lidt” )– El OS setea el PDE ( registro CR3 )– El OS INTENTA prender el bit 0-31 del
registro CR0– El OS generalmente ejecuta un JUMP FAR (
pero esta vez en REAL MODE ;-) )
REAL MODE PROT. MODE
![Page 27: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/27.jpg)
Condiciones para el Deep Boot’s CONTEXT SWITCH:– 1. Si el bit 0 del registro CR0 intentó ser
prendido
– 2. Si el OS hizo un JUMP FAR, RETF, CALL FAR, IRET»If ( LAST_CS != CURRENT_CS )
REAL MODE PROT. MODE
![Page 28: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/28.jpg)
Pasos de Deep Boot:– 1. Agrega/reusa 2 descriptores de 32 bits en la GDT ( codigo y datos)
– 2. Setea 2 handlers en la IDT original ( SINGLE STEP y BREAKPOINT )
– 3. Carga la IDT originalIDT original ( la que no pudo el OS )
– 4. Prende el bit 0-31 del registro CR0
– 5. Hace un IRETD a CURRENT_CS:CURRENT EIP ( Cruce efectivo a MODO PROTEGIDO )
CRUZANDO A PROT. MODE
![Page 29: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/29.jpg)
Pasos normales:– El OS carga una nueva GDT– El OS carga una nueva IDT– El OS habilita paginacion o cambia el PDE
Con Deep Boot corriendo:– IDEM para el OS
PROT. MODE PROT. MODE
![Page 30: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/30.jpg)
Pasos de Deep Boot:– Si el OS está por cargar una GDT ( “lgdt” )
» Deep Boot agrega/reusa 2 descriptores
» Deep Boot actualiza los IDT descriptors con la nueva GDT
– Si el OS está por cargar una IDT ( “lidt” )» Deep Boot setea los 2 handlers en la nueva IDT ( SINGLE
STEP y BREAKPOINT )
– Si el OS cambia la base del PAGE DIRECTORY ENTRY ( CR3 )» Deep Boot no hace nada ... ???
PROT. MODE PROT. MODE
![Page 31: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/31.jpg)
Pasos normales:– 1. El OS salta a codigo de 16 bits en PM
– 2. El OS apaga el bit 0 del registro CR0
– 3. El OS ejecuta un JUMP FAR
– 4. El OS carga una nueva IDT apuntando a la direccion 0 ( IVT )
PROT. MODE REAL MODE
![Page 32: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/32.jpg)
Con Deep Boot corriendo:– 1. El OS salta a codigo de 16 bits (IDEM)– 2. Si el OS está por apagar el bit 0 del registro CR0
» Deep Boot setea una nueva IDT en 0 ( IVT )
– 3. El OS apaga el bit 0 del registro CR0– 4. Se produce un “JUMP FAR” generado por el mismo
SINGLE STEP ( “int 1” )– 5. La interrupcion es catcheada por el handler en REAL
MODE– 6. El handler cambia el CURRENT_CS por uno valido en
REAL MODE
PROT. MODE REAL MODE
![Page 33: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/33.jpg)
CS = selector de codigo de 16 bits– JUMP FAR to REAL_MODE OK
CS = selector de codigo de 32 bits– JUMP FAR to REAL_MODE HALT
STATE ???
PROT. MODE REAL MODE
![Page 34: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/34.jpg)
Indocument mode ?
Deep Boot(32 bits handler)
1. SINGLE STEP (PROT.M)
2. REAL MODE
MOV ESI,1D6CXXXX ???
NEW EIP = 03DA ??????????
NEXT
![Page 35: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/35.jpg)
REAL MODE 16 bits native code, 64 kb de direccionamiento de data.
UNREAL MODE 16 bits native code, hasta 4 GB de direccionamiento de data ( using instruct. prefixes ).
THIS MODE ( UNREAL MODE 32 ??? ) 32 bits native code ( without prefixes ), 64 kb de direccionamiento
Indocument mode ?
![Page 36: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/36.jpg)
Recorte del Volumen 3 del manual de Intel
OS Stack Switches
![Page 37: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/37.jpg)
Ejemplo:– SS1 = 0x10, BASE = 0, ESP1 = 0x4444– SS1:ESP1 0x0:0x4444 0x4444
– SS2 = 0x58, BASE = 0x70000, ESP2 = 0x1000– SS2:ESP2 0x70000:0x1000 0x71000
Si el OS NO respeta la ATOMICIDAD ?
– ? SS2:ESP1 0x70000:0x4444 0x74444 BAD FOR US ! MEMORY CORRUPTION BSoD
OS Stack Switches
![Page 38: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/38.jpg)
NTLDR basic block ( Windows )
OS Stack Switches
INCONSISTENT STACK AREA
![Page 39: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/39.jpg)
Deep Boot Solution:– 1.Si el OS va a ejecutar un “mov ss,algo”»Deep Boot apunta EIP a la proxima inst. y
se pone en alerta
– 2. Si el OS va a ejecutar un “mov esp,valor”»Deep Boot salta a un trampoline para
switchear al nuevo STACK
OS Stack Switches
![Page 40: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/40.jpg)
Area de memoria donde se ejecuta Deep Boot. Direccion Base = 9E00h:0000h = 0x9E000 Dentro del primer MEGABYTE
»En REAL MODE
»En PROTECTED MODE
Codigo y variables contenidos en la misma area. Memoria shareada con el OS ( comparten el mismo
contexto ).
BIOSFERA
![Page 41: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/41.jpg)
Guardar y Restaurar el estado de todos los registros en cada SINGLE STEP handleado.
No escribir memoria que esté fuera de la BIOSFERA
No alterar el curso normal de la ejecucion
Integridad del OS
![Page 42: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/42.jpg)
En las primeras etapas, el OS puede NO necesitar una IDT ( Ej. GRUB )
Deep Boot necesita si o si una IDT para funcionar
Si el OS intenta pasar a modo protegido sin IDT– Deep Boot crea una IDT temporal propia
Si el OS no usa IDT ?
![Page 43: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/43.jpg)
Evitar que el TRAP FLAG sea apagado ?– Ningun OS intentó apagarlo ...
Para poder correr codigo en C– Setear DS = SS y EBP = ESP
Codigo PIC en C– No usar ptr a funcions, strings ni variables globales– Hubo que crear la funcion “get_pic_address()”
Misc
![Page 44: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/44.jpg)
LGDT LIDT MOV CR0, REG32 MOV SS, REG16 MOV ESP, REG32 JUMP LARGE FAR ( RM PM 32 )
Instrucciones “emuladas/interceptadas”
![Page 45: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/45.jpg)
Cada instrucción traceada tiene un costo
Promedio de 500.000 inst/seg ( en esta notebook )
La idea es eliminar la mayor cantidad de handleos sin perder el control
Performance
![Page 46: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/46.jpg)
Emular algunas instrucciones basicas» jump condicionales
» jump incondicionales
»mov reg32,reg32
»nops
Usando Breakpoints– Chequear el destino y saltear algunas instrucciones de
repeticion (“rep movsX”, “rep stosX”, “rep outsX”)
– Bypassear llamados a funciones ( PELIGROSO ! )
Optimizaciones posibles
![Page 47: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/47.jpg)
Compuesto por:– Stage 0 (loader de stage 1 + stage 2 + trailer
en MBR, pendrive, PXE, CD, FDD, etc)
– Stage 1 (Handler de 16 bits en REAL MODE)
– Stage 2 ( Handler de 32 bits en PROT. MODE)
– Trailer (CALLBACK de 32 bits llamado x cada instr. ejecutada en PROT. MODE )
Deep Boot Body
e
![Page 48: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/48.jpg)
Deep Boot Body today
e
STAGE 0
STAGE 1REAL MODE(16 bits)
TRAILER (32 bits)
512 bytes
STAGE 2PROT. MODE(32 bits)
10 bytes ~ nnnn bytes
~3000 bytes
VARS = DEAD CODE
~2000 bytes
![Page 49: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/49.jpg)
Rootkits ( ? ) Hot Patching ( bugs en kernel ) Bypasses en el codigo (e.g overwrite the kernel
“setuid” function) Agregarle nuevas funcionalidades al OS Interaccion con el OS ( Uso de funciones ) Encapsulamiento del OS ( Hypervisor ) Debugger de kernel generico desde el booteo
Posibles Usos para Deep Boot
e
![Page 50: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/50.jpg)
Victima:– OpenBSD v4.5
Boot Device:– Virtual FDD
Condicion de Corte:– 70.000.000 instrucciones ejecutadas
Proposito:– Demostrar el funcionamiento de Deep Boot
DEMO 1
e
![Page 51: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/51.jpg)
Victima:– Debian v6.0
Boot Device:– Virtual FDD
Condicion de Corte:– ??? instrucciones ejecutadas
Proposito:– Demostrar el funcionamiento de Deep Boot
DEMO 2
e
![Page 52: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/52.jpg)
MBR ( Master Boot Record )– Primer sector del disco rigido
– Mide 512 bytes
– Contiene el stage 0 (primer loader) de cualquier OS
– Contiene la tabla de particiones
Que es el MBR ?
e
![Page 53: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/53.jpg)
Victima:– PC
Boot Device:– Virtual FDD
Condicion de Corte:– Escribir el MBR
Proposito:– Instalar un BOOTKIT en el MBR
DEMO 3
e
![Page 54: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/54.jpg)
BIOS + TPM ( Chip )– BitLocker ( Microsoft )
»Windows Vista Ultimate/Enterprise»Windows 7 Ultimate/Enterprise»Windows 2008
– TrustedGRUB»Linux
Como protegerse ?
e
![Page 55: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/55.jpg)
Victima:– Windows XP SP3 con Kaspersky AV
Boot Device:– HDD ( Master Boot Record )
Condicion de Corte:– Cuando se ejecuta la funcion “ntkrlnpa.KiSystemStartup()”
Proposito:– Ejecturar el BOOTKIT instalado previamente
DEMO 4
e
![Page 56: Nicolás A. Economou Andrés Lopez Luksenberg EKO-PARTY 2011](https://reader033.vdocument.in/reader033/viewer/2022051116/5665b49a1a28abb57c928d4d/html5/thumbnails/56.jpg)
Questions ?
HLT