como penetrar un sistema por medio de desbordamiento de buffer€¦ · desbordamiento de buffer....

42

Upload: others

Post on 09-Sep-2020

14 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: COMO PENETRAR UN SISTEMA POR MEDIO DE DESBORDAMIENTO DE BUFFER€¦ · DESBORDAMIENTO DE BUFFER. OBJETIVO Entender los aspectos técnicos, por los cuales un intruso puede ingresar
Page 2: COMO PENETRAR UN SISTEMA POR MEDIO DE DESBORDAMIENTO DE BUFFER€¦ · DESBORDAMIENTO DE BUFFER. OBJETIVO Entender los aspectos técnicos, por los cuales un intruso puede ingresar

COMO PENETRAR UN SISTEMA POR MEDIO DE DESBORDAMIENTO DE BUFFER

Page 3: COMO PENETRAR UN SISTEMA POR MEDIO DE DESBORDAMIENTO DE BUFFER€¦ · DESBORDAMIENTO DE BUFFER. OBJETIVO Entender los aspectos técnicos, por los cuales un intruso puede ingresar

OBJETIVO

Entender los aspectos técnicos, por los cuales un intruso puede ingresar a un sistema y tomar el control

de éste

Page 4: COMO PENETRAR UN SISTEMA POR MEDIO DE DESBORDAMIENTO DE BUFFER€¦ · DESBORDAMIENTO DE BUFFER. OBJETIVO Entender los aspectos técnicos, por los cuales un intruso puede ingresar

AGENDA

● Programas● Memoria● Pila● Funciones● Etapas de invocación● Arreglos y buffers● Desbordamiento de buffer● Impacto● Tecnicas de protección

Page 5: COMO PENETRAR UN SISTEMA POR MEDIO DE DESBORDAMIENTO DE BUFFER€¦ · DESBORDAMIENTO DE BUFFER. OBJETIVO Entender los aspectos técnicos, por los cuales un intruso puede ingresar

PROGRAMAS

● Lenguaje de alto nivel– Compilador

● Lenguaje ensamblador – Ensamblador

●Mnemonics●Opcode

● Lenguaje de máquina

Page 6: COMO PENETRAR UN SISTEMA POR MEDIO DE DESBORDAMIENTO DE BUFFER€¦ · DESBORDAMIENTO DE BUFFER. OBJETIVO Entender los aspectos técnicos, por los cuales un intruso puede ingresar

ORGANIZACIÓN DE UN PROCESO EN MEMORIA

● Segmento de texto (r-x)– Código

● Segmento de datos (rw-)– Variables globales– Variables estáticas

● Segmento de pila (rwx)

Page 7: COMO PENETRAR UN SISTEMA POR MEDIO DE DESBORDAMIENTO DE BUFFER€¦ · DESBORDAMIENTO DE BUFFER. OBJETIVO Entender los aspectos técnicos, por los cuales un intruso puede ingresar

AREAS DEL SEGMENTO DE PILA

● Heap– Memoria dinámica

● Pila– Direcciones de retorno– Variables locales– Parámetros

● Argumentos● Ambiente

Page 8: COMO PENETRAR UN SISTEMA POR MEDIO DE DESBORDAMIENTO DE BUFFER€¦ · DESBORDAMIENTO DE BUFFER. OBJETIVO Entender los aspectos técnicos, por los cuales un intruso puede ingresar

EJEMPLOint global; // Segmento de datos

int

sumar (int i, int j)

{

return i + j;

}

int

main ()

{

int resultado = sumar (1, 2); // Segmento de pila

}

Page 9: COMO PENETRAR UN SISTEMA POR MEDIO DE DESBORDAMIENTO DE BUFFER€¦ · DESBORDAMIENTO DE BUFFER. OBJETIVO Entender los aspectos técnicos, por los cuales un intruso puede ingresar

MEMORIA

Page 10: COMO PENETRAR UN SISTEMA POR MEDIO DE DESBORDAMIENTO DE BUFFER€¦ · DESBORDAMIENTO DE BUFFER. OBJETIVO Entender los aspectos técnicos, por los cuales un intruso puede ingresar

LA PILA COMO TAD

● LIFO: Last In First Out● Ultimo objeto ubicado en ella es el

primero en salir● Operaciones:

– PUSH: Añade un elemento al tope de la pila

– POP: Retira el elemento del tope de la pila

Page 11: COMO PENETRAR UN SISTEMA POR MEDIO DE DESBORDAMIENTO DE BUFFER€¦ · DESBORDAMIENTO DE BUFFER. OBJETIVO Entender los aspectos técnicos, por los cuales un intruso puede ingresar

TALLER 1

● PUSH 1● PUSH 2● POP● PUSH 2● PUSH 1● POP● POP● PUSH 4● PUSH 1

Page 12: COMO PENETRAR UN SISTEMA POR MEDIO DE DESBORDAMIENTO DE BUFFER€¦ · DESBORDAMIENTO DE BUFFER. OBJETIVO Entender los aspectos técnicos, por los cuales un intruso puede ingresar

TALLER 1

141

Page 13: COMO PENETRAR UN SISTEMA POR MEDIO DE DESBORDAMIENTO DE BUFFER€¦ · DESBORDAMIENTO DE BUFFER. OBJETIVO Entender los aspectos técnicos, por los cuales un intruso puede ingresar

SEPARATION OF CONCERNS

● Edsger Dijkstra

● Programación Estructurada

–Funciones, Procedimientos● Programación Orientada a Objetos

– Objetos

● Programación Orientada a Aspectos– Aspecto

Page 14: COMO PENETRAR UN SISTEMA POR MEDIO DE DESBORDAMIENTO DE BUFFER€¦ · DESBORDAMIENTO DE BUFFER. OBJETIVO Entender los aspectos técnicos, por los cuales un intruso puede ingresar

FUNCIONESint global;

int sumar (int i, int j)

{

return i + j;

}

int main ()

{

int resultado = sumar (1, 2);

resultado = sumar (3, 4);

}

Page 15: COMO PENETRAR UN SISTEMA POR MEDIO DE DESBORDAMIENTO DE BUFFER€¦ · DESBORDAMIENTO DE BUFFER. OBJETIVO Entender los aspectos técnicos, por los cuales un intruso puede ingresar

LOCALIZACIÓN DE FUNCIONES

SEGMENTO DE TEXTO987 función SUMAR6543 función MAIN21

1 2 3 4 5 6 7 8

Page 16: COMO PENETRAR UN SISTEMA POR MEDIO DE DESBORDAMIENTO DE BUFFER€¦ · DESBORDAMIENTO DE BUFFER. OBJETIVO Entender los aspectos técnicos, por los cuales un intruso puede ingresar

DURACIÓN DE VARIABLES

SEGMENTO DE DATOS98 global

76 resultado

543 i j

21

1 2 3 4 5 6 7 8

Page 17: COMO PENETRAR UN SISTEMA POR MEDIO DE DESBORDAMIENTO DE BUFFER€¦ · DESBORDAMIENTO DE BUFFER. OBJETIVO Entender los aspectos técnicos, por los cuales un intruso puede ingresar

INVOCACIÓN DE FUNCIONES

● ¿Que problemas hay con las funciones?– Devolver el control a la función invocadora– Si las variables locales estuvieran en el

segmento de datos:● ¿Que pasaria con esa memoria si la funcion no se

invoca?● ¿Que pasaria con la recursividad de funciones?● ¿Que pasaria con los hilos?

Page 18: COMO PENETRAR UN SISTEMA POR MEDIO DE DESBORDAMIENTO DE BUFFER€¦ · DESBORDAMIENTO DE BUFFER. OBJETIVO Entender los aspectos técnicos, por los cuales un intruso puede ingresar

INVOCACIÓN DE FUNCIONES

● Soluciones– Las variables locales solo deben existir

mientras la función este en ejecución– Por cada invocación a la función, deben

exisitir diferentes copias de sus variables locales

– Siempre que se invoque la función se debe almacenar la dirección a la cual se debe retornar una vez termine la función

Page 19: COMO PENETRAR UN SISTEMA POR MEDIO DE DESBORDAMIENTO DE BUFFER€¦ · DESBORDAMIENTO DE BUFFER. OBJETIVO Entender los aspectos técnicos, por los cuales un intruso puede ingresar

INVOCACIÓN DE FUNCIONES

● Cada que se invoque una función se reservará un espacio en la pila para que en ella se almacene todo lo que se necesita– Parametros– Variables locales– Valor de retorno– Dirección de retorno

Page 20: COMO PENETRAR UN SISTEMA POR MEDIO DE DESBORDAMIENTO DE BUFFER€¦ · DESBORDAMIENTO DE BUFFER. OBJETIVO Entender los aspectos técnicos, por los cuales un intruso puede ingresar

INVOCACIÓN DE FUNCIONES

AREA DE PILA

1VALOR DE RETORNO

SU

MA

R

2VARIABLES LOCALES3DIRECCIÓN DE RETORNO4VALOR DE RETORNO

MA

IN

5VARIABLES LOCALES6DIRECCIÓN DE RETORNO

Page 21: COMO PENETRAR UN SISTEMA POR MEDIO DE DESBORDAMIENTO DE BUFFER€¦ · DESBORDAMIENTO DE BUFFER. OBJETIVO Entender los aspectos técnicos, por los cuales un intruso puede ingresar

ETAPAS DE INVOCACIÓN

● Etapa 1 - Invocación(a) Almacenamiento de parámetros

(b) Almacenamiento de dirección de retorno

(c) Cambio del PC a la dirección de la función

● Etapa 2 - Prólogo(d) Almacenamiento de dirección de frame anterior

(e) Separar espacio para almacenar variables locales

● Etapa 3 - Epílogo(f) Disponibilidad de variables locales anteriores

(g) Retornar el control a la función anterior

Page 22: COMO PENETRAR UN SISTEMA POR MEDIO DE DESBORDAMIENTO DE BUFFER€¦ · DESBORDAMIENTO DE BUFFER. OBJETIVO Entender los aspectos técnicos, por los cuales un intruso puede ingresar

EJEMPLO

void funcion (int a, int b, int c){ char buffer1[5]; char buffer2[10];}

int main (){ funcion(1,2,3);}

Page 23: COMO PENETRAR UN SISTEMA POR MEDIO DE DESBORDAMIENTO DE BUFFER€¦ · DESBORDAMIENTO DE BUFFER. OBJETIVO Entender los aspectos técnicos, por los cuales un intruso puede ingresar

EJEMPLO – TALLER 2

(gdb) disas main

Dump of assembler code for function main:

0x8048388 <main>: push %ebp

0x8048389 <main+1>: mov %esp,%ebp

0x804838b <main+3>: push $0x3

0x804838d <main+5>: push $0x2 (a)0x804838f <main+7>: push $0x1

0x8048391 <main+9>: call 0x8048380 <funcion> (b) y (c)0x8048396 <main+14>: add $0xc,%esp

0x8048399 <main+17>: leave

0x804839a <main+18>: ret

0x804839b <main+19>: nop

End of assembler dump.

Page 24: COMO PENETRAR UN SISTEMA POR MEDIO DE DESBORDAMIENTO DE BUFFER€¦ · DESBORDAMIENTO DE BUFFER. OBJETIVO Entender los aspectos técnicos, por los cuales un intruso puede ingresar

RESULTADOAREA DE PILA

159131721

SP -> 25 08 04 83 9629 00 00 00 01

MA

IN33 00 00 00 0237 00 00 00 03

BP -> 41 ? ? ? ?

Page 25: COMO PENETRAR UN SISTEMA POR MEDIO DE DESBORDAMIENTO DE BUFFER€¦ · DESBORDAMIENTO DE BUFFER. OBJETIVO Entender los aspectos técnicos, por los cuales un intruso puede ingresar

EJEMPLO – TALLER 2

(gdb) disas funcion

Dump of assembler code for function funcion:

0x8048380 <funcion>: push %ebp (d)0x8048381 <funcion+1>: mov %esp,%ebp (e)0x8048383 <funcion+3>: sub $0x14,%esp (e)0x8048386 <funcion+6>: leave

0x8048387 <funcion+7>: ret

End of assembler dump.

Page 26: COMO PENETRAR UN SISTEMA POR MEDIO DE DESBORDAMIENTO DE BUFFER€¦ · DESBORDAMIENTO DE BUFFER. OBJETIVO Entender los aspectos técnicos, por los cuales un intruso puede ingresar

RESULTADOAREA DE PILA

SP -> 1

FU

NC

ION

591317

BP -> 21 00 00 00 41

MA

IN

BP25 08 04 83 96 DR29 00 00 00 01 PAR133 00 00 00 02 PAR237 00 00 00 03 PAR341 ? ? ? ?

Page 27: COMO PENETRAR UN SISTEMA POR MEDIO DE DESBORDAMIENTO DE BUFFER€¦ · DESBORDAMIENTO DE BUFFER. OBJETIVO Entender los aspectos técnicos, por los cuales un intruso puede ingresar

EJEMPLO – TALLER 3(gdb) disas funcion

Dump of assembler code for function funcion:

0x8048380 <funcion>: push %ebp

0x8048381 <funcion+1>: mov %esp,%ebp

0x8048383 <funcion+3>: sub $0x14,%esp

0x8048386 <funcion+6>: leave (f)0x8048387 <funcion+7>: ret

End of assembler dump.

● Leave– Igualar el SP al BP– Hacer POP y poner ese valor en el BP

Page 28: COMO PENETRAR UN SISTEMA POR MEDIO DE DESBORDAMIENTO DE BUFFER€¦ · DESBORDAMIENTO DE BUFFER. OBJETIVO Entender los aspectos técnicos, por los cuales un intruso puede ingresar

RESULTADOAREA DE PILA

1

FU

NC

ION

59131721 00 00 00 41

MA

IN

BPSP -> 25 08 04 83 96 DR

29 00 00 00 01 PAR133 00 00 00 02 PAR237 00 00 00 03 PAR3

BP -> 41 ? ? ? ?

Page 29: COMO PENETRAR UN SISTEMA POR MEDIO DE DESBORDAMIENTO DE BUFFER€¦ · DESBORDAMIENTO DE BUFFER. OBJETIVO Entender los aspectos técnicos, por los cuales un intruso puede ingresar

EJEMPLO – TALLER 4(gdb) disas funcion

Dump of assembler code for function funcion:

0x8048380 <funcion>: push %ebp

0x8048381 <funcion+1>: mov %esp,%ebp

0x8048383 <funcion+3>: sub $0x14,%esp

0x8048386 <funcion+6>: leave

0x8048387 <funcion+7>: ret (g)End of assembler dump.

● Ret– Hacer POP y poner ese valor en el PC

Page 30: COMO PENETRAR UN SISTEMA POR MEDIO DE DESBORDAMIENTO DE BUFFER€¦ · DESBORDAMIENTO DE BUFFER. OBJETIVO Entender los aspectos técnicos, por los cuales un intruso puede ingresar

RESULTADOAREA DE PILA

1

FU

NC

ION

59131721 00 00 00 41

MA

IN

BP25 08 04 83 96 DR

SP -> 29 00 00 00 01 PAR133 00 00 00 02 PAR237 00 00 00 03 PAR3

BP -> 41 ? ? ? ?

Page 31: COMO PENETRAR UN SISTEMA POR MEDIO DE DESBORDAMIENTO DE BUFFER€¦ · DESBORDAMIENTO DE BUFFER. OBJETIVO Entender los aspectos técnicos, por los cuales un intruso puede ingresar

¿QUE SE ALMACENA EN LA PILA?

● Parametros● Dirección de retorno● Dirección de las variables anteriores● Variables locales

Page 32: COMO PENETRAR UN SISTEMA POR MEDIO DE DESBORDAMIENTO DE BUFFER€¦ · DESBORDAMIENTO DE BUFFER. OBJETIVO Entender los aspectos técnicos, por los cuales un intruso puede ingresar

ARREGLOS● Agrupación● Consecutiva● Mismo tipo

● Recorrido por medio de– Apuntadores– ¿Referencias?

● ¿Verificación de limites?

Page 33: COMO PENETRAR UN SISTEMA POR MEDIO DE DESBORDAMIENTO DE BUFFER€¦ · DESBORDAMIENTO DE BUFFER. OBJETIVO Entender los aspectos técnicos, por los cuales un intruso puede ingresar

DESBORDAMIENTO DE BUFFER

● Sobrepasar el limite● Escritura en posiciones adyacentes al buffer, es decir, fuera de los limites

Page 34: COMO PENETRAR UN SISTEMA POR MEDIO DE DESBORDAMIENTO DE BUFFER€¦ · DESBORDAMIENTO DE BUFFER. OBJETIVO Entender los aspectos técnicos, por los cuales un intruso puede ingresar

TALLER FINAL

● Que pasaría si el buffer que trataramos de escribir en el primer ejemplo fuera el siguiente:

–01-02-03-04-05-06-07-08-09-10-11-12-13-14-15-16-17-18-19-20-21-22-23-24-00-00-00-01

Page 35: COMO PENETRAR UN SISTEMA POR MEDIO DE DESBORDAMIENTO DE BUFFER€¦ · DESBORDAMIENTO DE BUFFER. OBJETIVO Entender los aspectos técnicos, por los cuales un intruso puede ingresar

RESULTADOAREA DE PILA

SP -> 1 01 02 03 04

FU

NC

ION

5 05 06 07 089 09 10 11 1213 13 14 15 1617 17 18 19 20

BP -> 21 21 22 23 24

MA

IN

BP25 00 00 00 01 DR29 00 00 00 01 PAR133 00 00 00 02 PAR237 00 00 00 03 PAR341 ? ? ? ?

Page 36: COMO PENETRAR UN SISTEMA POR MEDIO DE DESBORDAMIENTO DE BUFFER€¦ · DESBORDAMIENTO DE BUFFER. OBJETIVO Entender los aspectos técnicos, por los cuales un intruso puede ingresar

PREGUNTAS

¿Que se sobreescribiría?

Page 37: COMO PENETRAR UN SISTEMA POR MEDIO DE DESBORDAMIENTO DE BUFFER€¦ · DESBORDAMIENTO DE BUFFER. OBJETIVO Entender los aspectos técnicos, por los cuales un intruso puede ingresar

RESPUESTA

LA DIRECCIÓN DE RETORNO

¿y esto que significa?

Page 38: COMO PENETRAR UN SISTEMA POR MEDIO DE DESBORDAMIENTO DE BUFFER€¦ · DESBORDAMIENTO DE BUFFER. OBJETIVO Entender los aspectos técnicos, por los cuales un intruso puede ingresar

RESPUESTA

Desbordando un buffer puedo cambiar el flujo de

ejecución de un programa

¿pero a dónde?

Page 39: COMO PENETRAR UN SISTEMA POR MEDIO DE DESBORDAMIENTO DE BUFFER€¦ · DESBORDAMIENTO DE BUFFER. OBJETIVO Entender los aspectos técnicos, por los cuales un intruso puede ingresar

RESPUESTA

A instrucciones maliciosas que se encuentran en el

mismo buffer¿y cuál es el impacto?

Page 40: COMO PENETRAR UN SISTEMA POR MEDIO DE DESBORDAMIENTO DE BUFFER€¦ · DESBORDAMIENTO DE BUFFER. OBJETIVO Entender los aspectos técnicos, por los cuales un intruso puede ingresar

RESPUESTA

Se pueden ejecutar instrucciones arbitrarias

dentro de un proceso

Page 41: COMO PENETRAR UN SISTEMA POR MEDIO DE DESBORDAMIENTO DE BUFFER€¦ · DESBORDAMIENTO DE BUFFER. OBJETIVO Entender los aspectos técnicos, por los cuales un intruso puede ingresar

TECNICAS DE PROTECCIÓN

● Segmentos de pila no ejecutables● Verificación de limites

Page 42: COMO PENETRAR UN SISTEMA POR MEDIO DE DESBORDAMIENTO DE BUFFER€¦ · DESBORDAMIENTO DE BUFFER. OBJETIVO Entender los aspectos técnicos, por los cuales un intruso puede ingresar

Nombre: Juan Rafael Alvarez Correa

Email: [email protected]

Web: http://people.fluidsignal.com/~jalvarez

Telefono celular: 3006551750

Telefono oficina: 574-3522627